remotes/origin/1203
Назар Котюк 11 years ago
parent 42480df991
commit 236c22eab1
  1. 4
      country/models.py
  2. 6
      functions/search_forms.py
  3. 4
      settings/templatetags/template_filters.py
  4. 5
      settings/views.py
  5. 2
      templates/client/includes/exposition/exposition_object.html
  6. 37
      templates/client/popups/place.html
  7. 55
      theme/search_indexes.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()]

@ -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')\

@ -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)

@ -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")

@ -179,7 +179,7 @@
{% if exposition.web_page %}
<dt>{% trans 'Веб-сайт' %}:</dt>
<dd>
<!--todo:seohide--> <a target="_blank" href="#" data-type="href" data-hash="1qwer" data-url="{{ exposition.web_page }}" class="link-encode">{{ exposition.web_page }}</a>
<!--todo:seohide--> <a target="_blank" href="#" data-type="href" data-hash="1qwer" data-url="{{ exposition.web_page|base64_encode }}" class="link-encode">{{ exposition.web_page }}</a>
</dd>
{% endif %}

@ -58,34 +58,6 @@
</li>
</ul>
{% comment %}
{% if value|get_country_by_area %}
<ul>
{% for country in value|get_country_by_area %}
<li class="level2 level">
<label>
<input type="checkbox" name="co" value="{{ country.id }}" {% for option in search_form.co.value %}{% if option == country.id|slugify %}checked="checked"{% endif %}{% endfor %}/>
<span class="hidden">{{ country.name }}</span>
</label>
<a href="#">{{ country.name }}</a>
{% if country.id|get_city_by_country %}
<ul>
{% for city in country.id|get_city_by_country %}
<li>
<label>
<input type="checkbox" name="ci" value="{{ city.id }}" {% for option in search_form.ci.value %}{% if option == city.id|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ city.name }}
</label>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endcomment %}
</li>
{% endfor %}
@ -95,9 +67,14 @@
<div class="q-sel">
<div class="q-sel-title">{% trans 'Быстрый выбор' %}:</div>
<ul>
<li><a href="#" data-name="co" data-id="187">{% trans 'США' %}</a></li>
<li><a href="#" data-name="ci" data-id="-1746443">{% trans 'Берлин' %}</a></li>
<li><a href="#" data-name="ci" data-id="-2960561">{% trans 'Москва' %}</a></li>
<li><a href="#" data-name="ci" data-id="-2996338">{% trans 'Санкт-Петербург' %}</a></li>
<li><a href="#" data-name="co" data-id="159">{% trans 'Россия' %}</a></li>
<li><a href="#" data-name="ci" data-id="-1044367">{% trans 'Киев' %}</a></li>
<li><a href="#" data-name="co" data-id="186">{% trans 'Украина' %}</a></li>
<li><a href="#" data-name="co" data-id="47">{% trans 'Германия' %}</a></li>
<li><a href="#" data-name="co" data-id="40">{% trans 'Китай' %}</a></li>
</ul>
<a class="clear" href="#">{% trans 'Сбросить выбранные регионы' %}</a>

@ -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 ''

Loading…
Cancel
Save