code = forms.CharField(required=False, label=('Code'), widget=forms.TextInput(attrs={'type': 'search'}))
location = forms.CharField(required=False, label=('Location'), widget=forms.TextInput(attrs={'type': 'search'}))
ethnic_group = forms.CharField(required=False, label=('Population / social group'), widget=forms.TextInput(attrs={'type': 'search'}))
+ #waiting for docker update (django-haystack github version)
+ #list_ethnic = SearchQuerySet().load_all().models(MediaCollection).ethnic_groups().distinct
+ #ethnic_group = forms.ChoiceField(required=False, label=('Population / social group'), widget=forms.Select, choices = list_ethnic))
+ instruments = forms.CharField(required=False, label=('Instruments'), widget=forms.TextInput(attrs={'type': 'search'}))
def search(self):
sqs = SearchQuerySet().load_all()
if self.cleaned_data.get('ethnic_group'):
sqs = sqs.filter(ethnic_group__ethnic_group__contains=self.cleaned_data['ethnic_group'])
+ if self.cleaned_data.get('instruments'):
+ sqs = sqs.filter(instruments__instruments__contains=self.cleaned_data['instruments'])
+
return sqs
code = indexes.NgramField(model_attr='code')
location = indexes.NgramField(model_attr='location__name', default='')
ethnic_group = indexes.NgramField(model_attr='ethnic_group', default='')
+ instruments = indexes.NgramField(default='')
def prepare_digitized(self, obj):
if obj.file.name:
def get_model(self):
return MediaItem
+ def prepare_instruments(self, obj):
+ item = MediaItemPerformance.objects.all().filter(media_item__title__contains=obj.title)
+ instruments = []
+ for material in item:
+ instruments.append(material.instrument)
+ instruments.append(material.alias)
+ return "%s" % instruments
+
class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable):
code = indexes.NgramField(model_attr='code')
location = indexes.NgramField(default='')
ethnic_group = indexes.NgramField(default='')
+ instruments = indexes.NgramField(default='')
def prepare_digitized(self, obj):
return obj.has_mediafile
def prepare_ethnic_group(self, obj):
return "%s" % obj.ethnic_groups()
+
+ def prepare_instruments(self, obj):
+ instruments = []
+ items = obj.items.all()
+ for item in items:
+ materials = MediaItemPerformance.objects.all().filter(media_item__title__exact=item.title)
+ for material in materials:
+ if material.instrument and not material.instrument in instruments:
+ instruments.append(material.instrument)
+
+ if material.alias and not material.alias in instruments:
+ instruments.append(material.alias)
+
+ return "%s" % instruments