]> git.parisson.com Git - telemeta.git/commitdiff
add instrument aliases to collection search
authorGuillaume Pellerin <yomguy@parisson.com>
Tue, 16 Apr 2013 12:37:29 +0000 (14:37 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Tue, 16 Apr 2013 12:37:29 +0000 (14:37 +0200)
telemeta/models/query.py

index 7cebc99e5cd050195646f61f17b13b62a1375b61..e32bf47e0d44a2b63ffba8129e8800c5ab996948 100644 (file)
@@ -210,10 +210,9 @@ class MediaItemQuerySet(CoreQuerySet):
         instruments = Instrument.objects.filter(name__icontains=name)
         aliases = InstrumentAlias.objects.filter(name__icontains=name)
         perf = []
-        if instruments or aliases:
-            performances = MediaItemPerformance.objects.filter(Q(instrument__in=instruments) | Q(alias__in=aliases))
-            for performance in performances:
-                perf.append(performance)
+        performances = MediaItemPerformance.objects.filter(Q(instrument__in=instruments) | Q(alias__in=aliases))
+        for performance in performances:
+            perf.append(performance)
         return self.filter(performances__in=perf).distinct()
 
 class MediaItemManager(CoreManager):
@@ -259,10 +258,6 @@ class MediaItemManager(CoreManager):
         return self.get_query_set().sound(*args, **kwargs)
     sound.__doc__ = MediaItemQuerySet.sound.__doc__
 
-    def sound_public(self, *args, **kwargs):
-        return self.get_query_set().sound_public(*args, **kwargs)
-    sound_public.__doc__ = MediaItemQuerySet.sound_public.__doc__
-
     def by_instrument(self, *args, **kwargs):
         return self.get_query_set().by_instrument(*args, **kwargs)
     by_instrument.__doc__ = MediaItemQuerySet.by_instrument.__doc__
@@ -356,16 +351,16 @@ class MediaCollectionQuerySet(CoreQuerySet):
 
     def by_instrument(self, name):
         "Find collections by instrument"
-        from telemeta.models.instrument import Instrument
+        from telemeta.models.media import MediaItemPerformance
+        from telemeta.models.instrument import Instrument, InstrumentAlias
         instruments = Instrument.objects.filter(name__icontains=name)
+        aliases = InstrumentAlias.objects.filter(name__icontains=name)
         items = []
-        for instrument in instruments:
-            performances = instrument.performances.all()
-            for performance in performances:
-                items.append(performance.media_item)
+        performances = MediaItemPerformance.objects.filter(Q(instrument__in=instruments) | Q(alias__in=aliases))
+        for performance in performances:
+            items.append(performance.media_item)
         return self.filter(items__in=items).distinct()
 
-
 class MediaCollectionManager(CoreManager):
     "Manage collection queries"