You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
5.0 KiB
174 lines
5.0 KiB
# -*- 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):
|
|
translation.activate('ru')
|
|
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().active.all()
|
|
|