From: Guillaume Pellerin Date: Fri, 5 Sep 2014 16:33:58 +0000 (+0200) Subject: update Resource detail views X-Git-Tag: 1.5.0rc1~27^2~101 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=8cb637794df328c9a027ab53925e2e81aecc8280;p=telemeta.git update Resource detail views --- diff --git a/telemeta/urls.py b/telemeta/urls.py index eb89786e..8c48df4a 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -161,8 +161,7 @@ urlpatterns = patterns('', url(r'^archives/fonds/$', FondsListView.as_view(), name="telemeta-fonds"), # Generic resource - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', resource_view.detail, - dict(template="telemeta/resource_detail.html"), name="telemeta-resource-detail"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', CorpusDetailView.as_view(), name="telemeta-resource-detail"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/dc/$', resource_view.detail, dict(template="telemeta/resource_detail_dc.html"), name="telemeta-resource-dublincore"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/edit/$', resource_view.edit, diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index ce9fe791..a55ad48f 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -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') diff --git a/telemeta/views/item.py b/telemeta/views/item.py index f8c586f7..82d34292 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -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') diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index ba6c3680..e2397da4 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -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