From: Guillaume Pellerin Date: Fri, 20 Dec 2013 09:14:24 +0000 (+0100) Subject: add parents properties, add breadcrumbs mixin X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=bb1c6de72b39732066cfb2ce8606a5030b9c9c96;p=telemeta.git add parents properties, add breadcrumbs mixin --- diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 811d60be..3f7f6654 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -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') diff --git a/telemeta/templates/telemeta/resource_list.html b/telemeta/templates/telemeta/resource_list.html index a09e1446..c9aebd93 100644 --- a/telemeta/templates/telemeta/resource_list.html +++ b/telemeta/templates/telemeta/resource_list.html @@ -5,7 +5,7 @@ {% block head_title %}{% trans type %} - {{ block.super }}{% endblock %} {% block title %} - {{ type|capitalize }} ({{ object_list|length }}) + {% include "telemeta/inc/breadcrumbs.html" %} {% endblock %} {% block title_buttons %} @@ -16,6 +16,6 @@ {% block content %}
-{% include "telemeta/inc/resource_list.html" %} + {% include "telemeta/inc/resource_list.html" %}
{% endblock %} diff --git a/telemeta/views/home.py b/telemeta/views/home.py index 4823a1ca..797e95be 100644 --- a/telemeta/views/home.py +++ b/telemeta/views/home.py @@ -36,6 +36,7 @@ from telemeta.views.core import * +from django.views.generic import list_detail class HomeView(object): diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index 6108b281..60283a35 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -36,15 +36,28 @@ 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