]> git.parisson.com Git - telemeta.git/commitdiff
update Resource detail views
authorGuillaume Pellerin <yomguy@parisson.com>
Fri, 5 Sep 2014 16:33:58 +0000 (18:33 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Fri, 5 Sep 2014 16:33:58 +0000 (18:33 +0200)
telemeta/urls.py
telemeta/views/collection.py
telemeta/views/item.py
telemeta/views/resource.py

index eb89786e7623bf14a648a5c08b4cde809d3a1577..8c48df4ade7bc0c2d41e177e102db2aad7bd3b6b 100644 (file)
@@ -161,8 +161,7 @@ urlpatterns = patterns('',
     url(r'^archives/fonds/$', FondsListView.as_view(), name="telemeta-fonds"),
 
     # Generic resource
-    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/$', resource_view.detail,
-        dict(template="telemeta/resource_detail.html"), name="telemeta-resource-detail"),
+    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/$', CorpusDetailView.as_view(), name="telemeta-resource-detail"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', resource_view.detail,
         dict(template="telemeta/resource_detail_dc.html"), name="telemeta-resource-dublincore"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', resource_view.edit,
index ce9fe791b2aabe4d4603466855ffe078258ff835..a55ad48f7b90778adc283840626ca31d0d1ca382 100644 (file)
@@ -227,6 +227,7 @@ class CollectionPackageView(View):
 
 
 class CollectionListView(ListView):
+
     model = MediaCollection
     template_name = "telemeta/collection_list.html"
     paginate_by = 20
@@ -234,13 +235,16 @@ class CollectionListView(ListView):
 
 
 class CollectionUnpublishedListView(CollectionListView):
+
     queryset = MediaCollection.objects.filter(code__contains='_I_')
 
 
 class CollectionPublishedListView(CollectionListView):
+
     queryset = MediaCollection.objects.filter(code__contains='_E_')
 
 
 class CollectionSoundListView(CollectionListView):
+
     queryset = MediaCollection.objects.sound().order_by('code', 'old_code')
 
index f8c586f721d3743b681afa0293a6ffcb234fe87d..82d342925da4d461f2d3d12e8a4292aaf49b68fd 100644 (file)
@@ -609,6 +609,7 @@ class ItemView(object):
 
 
 class ItemListView(ListView):
+
     model = MediaItem
     template_name = "telemeta/mediaitem_list.html"
     paginate_by = 20
@@ -616,13 +617,16 @@ class ItemListView(ListView):
 
 
 class ItemUnpublishedListView(ItemListView):
+
     queryset = MediaItem.objects.filter(collection__code__contains='_I_').order_by('code', 'old_code')
 
 
 class ItemPublishedListView(ItemListView):
+
     queryset = MediaItem.objects.filter(collection__code__contains='_E_').order_by('code', 'old_code')
 
 
 class ItemSoundListView(ItemListView):
+
     queryset = MediaItem.objects.sound().order_by('code', 'old_code')
 
index ba6c36802bf68fa75142b5f1881fbe13f5ae4b1e..e2397da409e5c7cc74b6a25bb3be84eb53c04849 100644 (file)
@@ -196,23 +196,70 @@ class ResourceView(object):
 
 
 class CorpusListView(ListView):
+
     model = MediaCorpus
+    queryset = MediaCorpus.objects.all().order_by('code')
     template_name = "telemeta/resource_list.html"
     paginate_by = 20
-    queryset = MediaCorpus.objects.all().order_by('code')
 
     def get_context_data(self, **kwargs):
         context = super(CorpusListView, self).get_context_data(**kwargs)
         context['type'] = 'corpus'
         return context
 
+
 class FondsListView(ListView):
+
     model = MediaFonds
+    queryset = MediaFonds.objects.all().order_by('code')
     template_name = "telemeta/resource_list.html"
     paginate_by = 20
-    queryset = MediaFonds.objects.all().order_by('code')
 
     def get_context_data(self, **kwargs):
         context = super(FondsListView, self).get_context_data(**kwargs)
         context['type'] = 'fonds'
         return context
+
+
+class CorpusDetailView(DetailView):
+
+    model = MediaCorpus
+    template_name = "telemeta/resource_detail.html"
+    parent = MediaFonds
+    related = MediaCorpusRelated
+
+    def get_object(self):
+        self.type = self.kwargs['type']
+        self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk
+        return get_object_or_404(self.model, pk=self.pk)
+
+    def get_context_data(self, **kwargs):
+        context = super(CorpusDetailView, self).get_context_data(**kwargs)
+        resource = self.object
+        related_media = self.related.objects.filter(resource=self.object)
+        check_related_media(related_media)
+        playlists = get_playlists(self.request)
+        revisions = Revision.objects.filter(element_type=self.type, element_id=self.pk).order_by('-time')
+
+        context['resource'] = resource
+        context['type'] = self.type
+        context['related_media'] = related_media
+        context['revisions'] = revisions
+        if revisions:
+            context['last_revision'] = revisions[0]
+        else:
+            context['last_revision'] = None
+        if self.parent:
+            context['parents'] = self.parent.objects.filter(children=resource)
+        else:
+            context['parents'] = []
+
+        return context
+
+
+class FondsDetailView(CorpusDetailView):
+
+    model = MediaFonds
+    template_name = "telemeta/resource_detail.html"
+    parent = None
+    related = MediaFondsRelated