From 9534de1497e2fe5f60bf1d051c8c7deb3600c5fa Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Tue, 16 Apr 2013 14:37:29 +0200 Subject: [PATCH] add instrument aliases to collection search --- telemeta/models/query.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/telemeta/models/query.py b/telemeta/models/query.py index 7cebc99e..e32bf47e 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -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" -- 2.39.5