]> git.parisson.com Git - telemeta.git/commitdiff
begin to fix search by instrument
authorGuillaume Pellerin <yomguy@parisson.com>
Mon, 15 Apr 2013 15:13:49 +0000 (17:13 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Tue, 16 Apr 2013 07:15:49 +0000 (09:15 +0200)
Conflicts:
telemeta/models/query.py

telemeta/models/query.py
telemeta/views/home.py

index d01b11dc1cf4c37d884e0d30711903d01143d307..0fd1df3476cff3abbd6b126dfaac322b22860d5d 100644 (file)
@@ -200,17 +200,19 @@ class MediaItemQuerySet(CoreQuerySet):
     def sound(self):
         return self.filter(file__contains='/')
 
-    def by_instrument(self, instrument):
+    def sound_public(self):
+        return self.filter(file__contains='/', public_access='full', collection__public_access='full')
+
+    def by_instrument(self, name):
         "Find items by instrument"
         from telemeta.models.instrument import Instrument
-        from telemeta.models.media import MediaItemPerformance
-        instruments = Instrument.objects.filter(name__contains=name)
-        perf = []
-        if instruments:
-            performances = MediaItemPerformance.objects.filter(instrument__in=instruments)
+        instruments = Instrument.objects.filter(name=name)
+        items = []
+        for instrument in instruments:
+            performances = instrument.performances.all()
             for performance in performances:
-                perf.append(performance)
-        return self.filter(performances__in=perf).distinct()
+                items.append(performance.media_item)
+        return items
 
 class MediaItemManager(CoreManager):
     "Manage media items queries"
@@ -346,9 +348,16 @@ class MediaCollectionQuerySet(CoreQuerySet):
     def sound(self):
         return self.filter(items__file__contains='/').distinct()
 
-    def by_instrument(self, instrument):
+    def by_instrument(self, name):
         "Find collections by instrument"
-        return self.filter(items__instruments__in=instrument).distinct()
+        from telemeta.models.instrument import Instrument
+        instruments = Instrument.objects.filter(name=name)
+        items = []
+        for instrument in instruments:
+            performances = instrument.performances.all()
+            for performance in performances:
+                items.append(performance.media_item)
+        return self.filter(items__in=items).distinct()
 
 
 class MediaCollectionManager(CoreManager):
index 411193d58d6b0e8221a13dc9f829baa2cf597a2b..4823a1cae169084ddd9a4604f623ff6d51d5bf81 100644 (file)
@@ -252,7 +252,7 @@ class HomeView(object):
         return list_detail.object_list(request, objects,
             template_name='telemeta/search_results.html', paginate_by=20,
             extra_context={'criteria': criteria, 'collections_num': collections.count(),
-                'items_num': items.count(), 'corpus_num': corpus.count(), 'fonds_num': fonds.count(),
+                'items_num': len(items), 'corpus_num': corpus.count(), 'fonds_num': fonds.count(),
                 'type' : type,})
 
     def complete_location(self, request, with_items=True):