From 0e80f6236ce387c147a83caeb91689a9e704a195 Mon Sep 17 00:00:00 2001 From: olivier <> Date: Fri, 7 Mar 2008 15:34:50 +0000 Subject: [PATCH] enable searching items by publish date and collections by ethnic group --- telemeta/models/media.py | 1 + telemeta/models/query.py | 13 +++++++++++++ telemeta/web/base.py | 9 +++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/telemeta/models/media.py b/telemeta/models/media.py index aa321495..0273b48b 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -209,6 +209,7 @@ class MediaItem(Model, MediaCore): objects = MediaItemManager() def _get_title(self): + # to (sort of) sync with models.query.MediaItemQuerySet.by_title() if self._title == "": try: title = self.collection.title + " - Face/Plage: " \ diff --git a/telemeta/models/query.py b/telemeta/models/query.py index 3ef3c8db..8b0429fa 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -51,6 +51,9 @@ class MediaCollectionQuerySet(CoreQuerySet): def by_publish_date(self, pattern): return self.filter(date_published__icontains=pattern) + def by_ethnic_group(self, group): + return self.filter(items__ethnie_grsocial=group).distinct() + class MediaCollectionManager(CoreManager): "Manage collection queries" @@ -72,6 +75,9 @@ class MediaCollectionManager(CoreManager): def by_publish_date(self, *args, **kwargs): return self.get_query_set().by_publish_date(*args, **kwargs) + def by_ethnic_group(self, *args, **kwargs): + return self.get_query_set().by_ethnic_group(*args, **kwargs) + def stat_continents(self, order_by='num'): "Return the number of collections by continents and countries as a tree" from django.db import connection @@ -146,8 +152,12 @@ class MediaItemQuerySet(CoreQuerySet): | Q(annee_enreg__icontains=pattern)) def by_title(self, pattern): + # to (sort of) sync with models.media.MediaItem.get_title() return self.filter(Q(_title__icontains=pattern) | Q(collection__title__icontains=pattern)) + + def by_publish_date(self, pattern): + return self.filter(collection__date_published__icontains=pattern) class MediaItemManager(CoreManager): "Manage media items queries" @@ -167,6 +177,9 @@ class MediaItemManager(CoreManager): def by_title(self, *args, **kwargs): return self.get_query_set().by_title(*args, **kwargs) + def by_publish_date(self, *args, **kwargs): + return self.get_query_set().by_publish_date(*args, **kwargs) + def list_ethnic_groups(self): "Return a list of all ethnic groups" diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 60faa93a..fa9eb391 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -9,6 +9,7 @@ import re import os +import sys from django.template import Context, loader from django import template @@ -130,7 +131,7 @@ class WebView(Component): collections.by_continent(value), items.filter(continent = value)), 'ethnic_group': lambda value: ( - collections.none(), + collections.by_ethnic_group(value), items.filter(ethnie_grsocial = value)), 'creator': lambda value: ( collections.filter(creator__icontains=value), @@ -138,11 +139,11 @@ class WebView(Component): 'rec_date': lambda value: ( collections.by_recording_date(value), items.by_recording_date(value)), - 'pud_date': lambda value: ( + 'pub_date': lambda value: ( collections.by_publish_date(value), - items.none()) + items.by_publish_date(value)) } - + for key, value in input.items(): if key == 'continent' and input.get('country'): continue -- 2.39.5