]> git.parisson.com Git - telemeta.git/commitdiff
add parents properties, add breadcrumbs mixin feature/breadcrumbs
authorGuillaume Pellerin <yomguy@parisson.com>
Fri, 20 Dec 2013 09:14:24 +0000 (10:14 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Fri, 20 Dec 2013 09:14:24 +0000 (10:14 +0100)
telemeta/models/media.py
telemeta/templates/telemeta/resource_list.html
telemeta/views/home.py
telemeta/views/resource.py

index 811d60beb1d4e87f56f977b874661188f71a63cb..3f7f6654e0de5350b91cc671e8bc3d44ab15ddda 100644 (file)
@@ -304,6 +304,10 @@ class MediaCollection(MediaResource):
 
     computed_duration.verbose_name = _('computed duration')
 
+    @property
+    def parents(self):
+        return self.corpus.all()
+
     def save(self, force_insert=False, force_update=False, user=None, code=None):
         super(MediaCollection, self).save(force_insert, force_update)
 
@@ -481,6 +485,10 @@ class MediaItem(MediaResource):
 
         instruments.verbose_name = _("instruments")
 
+    @property
+    def parents(self):
+        return [self.collection]
+
 
 class MediaItemRelated(MediaRelated):
     "Item related media"
@@ -754,6 +762,10 @@ class MediaCorpus(MediaBaseResource):
 
     objects = MediaCorpusManager()
 
+    @property
+    def parents(self):
+        return self.fonds.all()
+
     @property
     def public_id(self):
         return self.code
@@ -779,6 +791,10 @@ class MediaFonds(MediaBaseResource):
     def public_id(self):
         return self.code
 
+    @property
+    def parents(self):
+        return None
+
     class Meta(MetaCore):
         db_table = 'media_fonds'
         verbose_name = _('fonds')
index a09e14462ba4242606adbd37acd346fa20588e5c..c9aebd93126b7c5ef133385706548845e96c6ac8 100644 (file)
@@ -5,7 +5,7 @@
 {% block head_title %}{% trans type %} - {{ block.super }}{% endblock %}
 
 {% block title %}
-<img src="{{ STATIC_URL }}telemeta/images/{{ type }}.png" style="vertical-align:middle" /> {{ type|capitalize }} ({{ object_list|length }})
+ {% include "telemeta/inc/breadcrumbs.html" %}
 {% endblock %}
 
 {% block title_buttons %}
@@ -16,6 +16,6 @@
 
 {% block content %}
 <div class="fullpage">
-{% include "telemeta/inc/resource_list.html" %}
+ {% include "telemeta/inc/resource_list.html" %}
 </div>
 {% endblock %}
index 4823a1cae169084ddd9a4604f623ff6d51d5bf81..797e95bebbcdd12954e193a5235b89ae8bc36e74 100644 (file)
@@ -36,6 +36,7 @@
 
 
 from telemeta.views.core import *
+from django.views.generic import list_detail
 
 
 class HomeView(object):
index 6108b28162b2e4e103a9610adb30a63b3ce1b0bf..60283a3591b172bd3b197839cc7bc87814d18aad 100644 (file)
 
 
 from telemeta.views.core import *
+from django.views.generic.list import MultipleObjectMixin
 
 
-class FondsListView(ListView):
+class BreadCrumbsMixin(MultipleObjectMixin):
+
+    def get_context_data(self, **kwargs):
+        context = super(BreadCrumbsMixin, self).get_context_data(**kwargs)
+        context['fonds_list_count'] = MediaFonds.objects.all().count()
+        context['corpus_list_count'] = MediaCorpus.objects.all().count()
+        context['collection_list_count'] = MediaCollection.objects.all().count()
+        context['item_list_count'] = MediaItem.objects.all().count()
+        return context
+
+
+
+class FondsListView(BreadCrumbsMixin, ListView):
 
     model = MediaFonds
     template_name="telemeta/resource_list.html"
     
     def get_queryset(self):
-        return MediaFonds.objects.all().order_by('code')
+        return self.model.objects.all().order_by('code')
 
     def get_context_data(self, **kwargs):
         context = super(FondsListView, self).get_context_data(**kwargs)
@@ -52,17 +65,40 @@ class FondsListView(ListView):
         return context
 
 
-class CorpusListView(ListView):
+class CorpusListView(FondsListView):
 
     model = MediaCorpus
-    template_name="telemeta/resource_list.html"
-    
-    def get_queryset(self):
-        return MediaCorpus.objects.all().order_by('code')
+
+
+class FondsDetailView(BreadCrumbsMixin, DetailView):
+
+    model = MediaFonds
+    related = MediaFondsRelated
 
     def get_context_data(self, **kwargs):
-        context = super(CorpusListView, self).get_context_data(**kwargs)
+        context = super(FondsDetailView, self).get_context_data(**kwargs)
         context['type'] = self.model.element_type
+        obj = self.get_object()
+        context['resource'] = obj
+        context['children'] = obj.children.all().order_by('code')
+        context['parents'] = obj.parents
+
+        related_media = self.related.objects.filter(resource=obj)
+        check_related_media(related_media)
+        context['related_media'] = related_media
+        context['playlists'] = get_playlists(request)
+        revisions = Revision.objects.filter(element_type=type, element_id=obj.id).order_by('-time')
+        if revisions:
+            last_revision = revisions[0]
+        else:
+            last_revision = None
+        context['last_revision'] = last_revision
+
+        context['fonds_list_count'] = 1
+        context['corpus_list_count'] = context['children'].count()
+        context['collection_list_count'] = MediaCollection.objects.all().count()
+        context['item_list_count'] = MediaItem.objects.all().count()
+        
         return context