]> git.parisson.com Git - telemeta.git/commitdiff
enable searching items by publish date and collections by ethnic group
authorolivier <>
Fri, 7 Mar 2008 15:34:50 +0000 (15:34 +0000)
committerolivier <>
Fri, 7 Mar 2008 15:34:50 +0000 (15:34 +0000)
telemeta/models/media.py
telemeta/models/query.py
telemeta/web/base.py

index aa3214950f26f85060b9c6c06b59a1453769c01d..0273b48bccf8a1f807afdc30a3d11eb740b1285f 100644 (file)
@@ -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: " \
index 3ef3c8db235f63de35bf6474af94fd1d75583bbe..8b0429fae0e95319bf038abe1e2372f07561f8ec 100644 (file)
@@ -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"
         
index 60faa93a7ddc421d86f7b888c6696dab66005434..fa9eb3915bf14fb081605f9b17aadf54328f5481 100644 (file)
@@ -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