# -*- coding: utf-8 -*- from django.utils.translation import ugettext as _ from django.utils import translation from haystack import indexes from models import Theme, Tag from functions.search_mixin import ExpoSearchMixin class ThemeIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): text = indexes.CharField(document=True, use_template=True) content_auto = indexes.EdgeNgramField() form_name = indexes.CharField() # translated fields name_en = indexes.CharField() name_ru = indexes.CharField() parent_en = indexes.CharField() parent_ru = indexes.CharField() catalog_name_en = indexes.CharField() catalog_name_ru = indexes.CharField() data_begin = indexes.DateField() data_end = indexes.DateField() def prepare_data_begin(self, obj): return None def prepare_data_end(self, obj): return None def prepare_parent_en(self, obj): translation.activate('en') event_types = [] for item, bool in obj.types: if bool == True: if item == 'exposition': event_types.append('expos') elif item == 'conference': event_types.append('conferences') elif item == 'seminar': event_types.append('seminars') elif item == 'webinar': event_types.append('webinars') event_type = ', '.join(event_types) return event_type def prepare_parent_ru(self, obj): translation.activate('ru') event_types = [] for item, bool in obj.types: if bool == True: if item == 'exposition': event_types.append(u'выcтавки') elif item == 'conference': event_types.append(u'конференции') elif item == 'seminar': event_types.append(u'семинары') elif item == 'webinar': event_types.append(u'вебинары') event_type = ', '.join(event_types) return event_type def prepare_name_en(self, obj): translation.activate('en') try: name = obj.translations.get(language_code = 'en').name except: name = '' return name def prepare_name_ru(self, obj): translation.activate('ru') try: name = obj.translations.get(language_code = 'ru').name except: name = '' return name def prepare_form_name(self, obj): return 'th' def prepare_catalog_name_en(self, obj): return u'Themes' def prepare_catalog_name_ru(self, obj): return u'Тематики' def get_model(self): return Theme def index_queryset(self, using=None): return self.get_model().active.all() #return self.get_model().objects.filter() class TagIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): text = indexes.CharField(document=True, use_template=True) content_auto = indexes.EdgeNgramField() form_name = indexes.CharField() # translated fields name_en = indexes.CharField() name_ru = indexes.CharField() parent_en = indexes.CharField() parent_ru = indexes.CharField() catalog_name_en = indexes.CharField() catalog_name_ru = indexes.CharField() data_begin = indexes.DateField() data_end = indexes.DateField() def prepare_data_begin(self, obj): return None def prepare_data_end(self, obj): return None def prepare_parent_en(self, obj): #translation.activate('en') try: # name = obj.theme.name # return name return obj.theme.translations.get(language_code='en').name except: return '' def prepare_parent_ru(self, obj): #translation.activate('ru') #print(obj.theme.name.encode('utf-8')) try: #name = obj.theme.name #return name return obj.theme.translations.get(language_code='ru').name except: return '' def prepare_name_en(self, obj): #translation.activate('en') try: name = obj.translations.get(language_code = 'en').name name = '%s'%name return name except: return '' def prepare_name_ru(self, obj): translation.activate('ru') try: name = obj.translations.get(language_code = 'ru').name name = '%s'%name return name except: return '' def prepare_form_name(self, obj): return 'tg' def prepare_catalog_name_en(self, obj): return u'Tags' def prepare_catalog_name_ru(self, obj): return u'Теги' def get_model(self): return Tag def index_queryset(self, using=None): #return self.get_model().active.all() return self.get_model().objects.filter()