diff --git a/country/models.py b/country/models.py index 9af02d61..4d5a7402 100644 --- a/country/models.py +++ b/country/models.py @@ -62,7 +62,7 @@ class Area(TranslatableModel): def countries(self): lang = translation.get_language() return Country.objects.select_related('exposition_country')\ - .filter(exposition_country__country__isnull=False, translations__language_code=lang, area=self).distinct() + .filter(exposition_country__country__isnull=False, translations__language_code=lang, area=self).distinct().order_by('translations__name') def expos(self): countries = self.countries() @@ -167,7 +167,7 @@ class Country(TranslatableModel): def active_cities(self): lang = translation.get_language() return City.objects.select_related('exposition_city')\ - .filter(exposition_city__city__isnull=False, translations__language_code=lang, country=self).distinct() + .filter(exposition_city__city__isnull=False, translations__language_code=lang, country=self).distinct().order_by('translations__name') def get_sub_categories(self): objects = [{'text':item.name, 'id':item.id, 'name':'ci', 'sub': False} for item in self.active_cities()] diff --git a/functions/search_forms.py b/functions/search_forms.py index ab82be6a..45dac942 100644 --- a/functions/search_forms.py +++ b/functions/search_forms.py @@ -238,7 +238,11 @@ class ExpositionSearchForm(AbstactSearchForm): #co = forms.CharField(label=_(u'Страна'), required=False, widget=forms.CheckboxSelectMultiple()) #tg = forms.CharField(label=_(u'Теги'), required=False, widget=forms.CheckboxSelectMultiple()) - area = forms.MultipleChoiceField(label=_(u'Регион'), choices=[(item.id, item.name) for item in Area.objects.all_sorted()], + area = forms.MultipleChoiceField(label=_(u'Регион'), + choices=[(item.id, item.name) for item in Area.objects.\ + select_related('country', 'country__exposition_country').\ + filter(country__exposition_country__country__isnull=False).\ + distinct()], required=False, widget=forms.CheckboxSelectMultiple()) co = forms.MultipleChoiceField(label=_(u'Страна'), required=False, widget=forms.CheckboxSelectMultiple(), choices=[(item.id, item.name) for item in Country.objects.select_related('exposition_country')\ diff --git a/settings/templatetags/template_filters.py b/settings/templatetags/template_filters.py index aad5a748..304ad610 100644 --- a/settings/templatetags/template_filters.py +++ b/settings/templatetags/template_filters.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from django import template +import base64 import phonenumbers import datetime, random from datetime import timedelta @@ -243,3 +244,6 @@ def in_events(day, events): return False +@register.filter +def base64_encode(value): + return base64.b64encode(value) \ No newline at end of file diff --git a/settings/views.py b/settings/views.py index 3b56d8a6..be9bf5da 100644 --- a/settings/views.py +++ b/settings/views.py @@ -52,10 +52,7 @@ def search_autocomplete(request): objects = areas + countries + cities return HttpResponse(json.dumps(objects), content_type='application/json') if form == 'subj': - objects = [{'text': get_by_lang(item, 'name', lang), 'id':item.pk, 'name': item.form_name} for item in SearchQuerySet().models(Theme, Tag).autocomplete(content_auto=term)] - #themes = [{'text':item.name, 'id':item.id, 'name':'th'} for item in Theme.objects.filter(translations__name__contains=term)] - #tags = [{'text':item.name, 'id':item.id, 'name':'tg'} for item in Tag.objects.filter(translations__name__contains=term)] - #objects = themes + tags + objects = [{'text': get_by_lang(item, 'name', lang), 'id':item.pk, 'name': item.form_name, 'cat': get_by_lang(item, 'parent', lang)} for item in SearchQuerySet().models(Theme, Tag).autocomplete(content_auto=term)] return HttpResponse(json.dumps(objects), content_type='application/json') else: return HttpResponse("Don't implemented yet") diff --git a/templates/client/includes/exposition/exposition_object.html b/templates/client/includes/exposition/exposition_object.html index 1a51af6e..824e6547 100644 --- a/templates/client/includes/exposition/exposition_object.html +++ b/templates/client/includes/exposition/exposition_object.html @@ -179,7 +179,7 @@ {% if exposition.web_page %}
{% trans 'Веб-сайт' %}:
- {{ exposition.web_page }} + {{ exposition.web_page }}
{% endif %} diff --git a/templates/client/popups/place.html b/templates/client/popups/place.html index ce7d9d10..00be3051 100644 --- a/templates/client/popups/place.html +++ b/templates/client/popups/place.html @@ -58,34 +58,6 @@ - {% comment %} - {% if value|get_country_by_area %} - - - {% endif %} - {% endcomment %} {% endfor %} @@ -95,9 +67,14 @@
{% trans 'Быстрый выбор' %}:
{% trans 'Сбросить выбранные регионы' %} diff --git a/theme/search_indexes.py b/theme/search_indexes.py index 445747ce..c3069a45 100644 --- a/theme/search_indexes.py +++ b/theme/search_indexes.py @@ -13,10 +13,12 @@ class ThemeIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): # 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() - def prepare_name_en(self, obj): + def prepare_parent_en(self, obj): translation.activate('en') event_types = [] for item, bool in obj.types: @@ -30,17 +32,10 @@ class ThemeIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): elif item == 'webinar': event_types.append('webinars') event_type = ', '.join(event_types) - try: - name = obj.translations.get(language_code = 'en').name - name ='%s(%s)'%(name, event_type) - except: - name = '' + return event_type - return name - - - def prepare_name_ru(self, obj): + def prepare_parent_ru(self, obj): translation.activate('ru') event_types = [] for item, bool in obj.types: @@ -54,9 +49,14 @@ class ThemeIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): 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 = 'ru').name - name ='%s(%s)'%(name, event_type) + name = obj.translations.get(language_code = 'en').name except: name = '' @@ -64,6 +64,15 @@ class ThemeIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): 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' @@ -88,14 +97,32 @@ class TagIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): # 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() + def prepare_parent_en(self, obj): + translation.activate('en') + try: + name = obj.theme.name + return name + except: + return '' + + def prepare_parent_ru(self, obj): + translation.activate('ru') + try: + name = obj.theme.name + return name + except: + return '' + def prepare_name_en(self, obj): translation.activate('en') try: name = obj.translations.get(language_code = 'en').name - name = '%s(%s)'%(name, obj.theme.name) + name = '%s'%name return name except: return '' @@ -105,7 +132,7 @@ class TagIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin): translation.activate('ru') try: name = obj.translations.get(language_code = 'ru').name - name = '%s(%s)'%(name, obj.theme.name) + name = '%s'%name return name except: return ''