From: Guillaume Pellerin Date: Mon, 15 Apr 2013 15:13:49 +0000 (+0200) Subject: begin to fix search by instrument X-Git-Tag: 1.4.5~2^2~4^2~2^2~9 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=81b6a21118d9258b90e1ae84ecc4cfeca519a4ee;p=telemeta.git begin to fix search by instrument --- diff --git a/telemeta/models/query.py b/telemeta/models/query.py index 7a078819..de634b79 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -203,9 +203,16 @@ class MediaItemQuerySet(CoreQuerySet): def sound_public(self): return self.filter(file__contains='/', public_access='full', collection__public_access='full') - def by_instrument(self, instrument): + def by_instrument(self, name): "Find items by instrument" - return self.filter(instruments__in=instrument) + 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 items class MediaItemManager(CoreManager): @@ -346,9 +353,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): diff --git a/telemeta/views/home.py b/telemeta/views/home.py index 380ec269..f0d365bd 100644 --- a/telemeta/views/home.py +++ b/telemeta/views/home.py @@ -254,7 +254,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):