From 9f44950bb24416b4207a5671dc7d30bbd1eab185 Mon Sep 17 00:00:00 2001 From: yomguy Date: Wed, 30 Nov 2011 10:59:11 +0100 Subject: [PATCH] add "Sound" filter to collection list --- telemeta/models/media.py | 5 +++-- telemeta/models/query.py | 11 +++++++++-- .../templates/telemeta_default/collection_list.html | 1 + telemeta/urls.py | 11 ++++++----- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/telemeta/models/media.py b/telemeta/models/media.py index c1a1882e..393ad352 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -249,7 +249,8 @@ class MediaCollection(MediaResource): @property def public_id(self): return self.code - + + @property def has_mediafile(self): "Tell wether this collection has any media files attached to its items" items = self.items.all() @@ -257,7 +258,7 @@ class MediaCollection(MediaResource): if item.file: return True return False - + def __name_cmp(self, obj1, obj2): return unaccent_icmp(obj1.name, obj2.name) diff --git a/telemeta/models/query.py b/telemeta/models/query.py index df758e0f..9ef24690 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -322,7 +322,10 @@ class MediaCollectionQuerySet(CoreQuerySet): def by_fuzzy_collector(self, pattern): return self.filter(self.by_fuzzy_collector_q(pattern)) - + def sound(self): + return self.filter(items__file__contains='/') + + class MediaCollectionManager(CoreManager): "Manage collection queries" @@ -362,7 +365,11 @@ class MediaCollectionManager(CoreManager): def __name_cmp(obj1, obj2): return unaccent_icmp(obj1.name, obj2.name) - + def sound(self, *args, **kwargs): + return self.get_query_set().sound(*args, **kwargs) + sound.__doc__ = MediaCollectionQuerySet.sound.__doc__ + + class LocationQuerySet(CoreQuerySet): __flatname_map = None diff --git a/telemeta/templates/telemeta_default/collection_list.html b/telemeta/templates/telemeta_default/collection_list.html index ac18e1e9..64ffd7ce 100644 --- a/telemeta/templates/telemeta_default/collection_list.html +++ b/telemeta/templates/telemeta_default/collection_list.html @@ -12,6 +12,7 @@ {% trans "All" %} {% trans "Unpublished" %} {% trans "Published" %} + {% trans "Sounds" %} {% if user.is_authenticated and perms.telemeta.add_mediacollection %} {% trans "Add" %} {% endif %} diff --git a/telemeta/urls.py b/telemeta/urls.py index d582a893..bc3a285c 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -57,12 +57,11 @@ geo_view = GeoView() # query sets for Django generic views all_items = { 'queryset': MediaItem.objects.enriched().order_by('code', 'old_code') } -all_sound_items = { 'queryset': MediaItem.objects.sound().order_by('code', 'old_code') } +all_items_sound = { 'queryset': MediaItem.objects.sound().order_by('code', 'old_code') } all_collections = { 'queryset': MediaCollection.objects.enriched(), } - -# CREM collections all_collections_unpublished = { 'queryset': MediaCollection.objects.filter(code__contains='_I_'), } all_collections_published = { 'queryset': MediaCollection.objects.filter(code__contains='_E_'), } +all_collections_sound = { 'queryset': MediaCollection.objects.sound().order_by('code', 'old_code') } # ID's regular expressions export_extensions = "|".join(item_view.list_export_extensions()) @@ -77,7 +76,7 @@ urlpatterns = patterns('', dict(all_items, paginate_by=20, template_name="telemeta/mediaitem_list.html"), name="telemeta-items"), url(r'^items_sound/$', 'django.views.generic.list_detail.object_list', - dict(all_sound_items, paginate_by=20, template_name="telemeta/mediaitem_list.html"), name="telemeta-items-sound"), + dict(all_items_sound, paginate_by=20, template_name="telemeta/mediaitem_list.html"), name="telemeta-items-sound"), url(r'^items/(?P[A-Za-z0-9._-]+)/$', item_view.item_detail, name="telemeta-item-detail"), url(r'^items/(?P[A-Za-z0-9._-]+)/dc/$', item_view.item_detail, @@ -151,7 +150,9 @@ urlpatterns = patterns('', url(r'^collections/(?P[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"), url(r'^collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), url(r'^collections/(?P[A-Za-z0-9._-]+)/related_edit/$', collection_view.related_media_edit, dict(template='telemeta/collection_related_edit.html'), name="telemeta-collection-related_edit"), - + url(r'^collections_sound/$', 'django.views.generic.list_detail.object_list', + dict(all_collections_sound, paginate_by=20, template_name="telemeta/collection_list.html"), name="telemeta-collections-sound"), + # search url(r'^search/$', general_view.search, name="telemeta-search"), url(r'^search/collections/$', general_view.search, {'type': 'collections'}, -- 2.39.5