diff --git a/emencia/django/newsletter/views/admin_views.py b/emencia/django/newsletter/views/admin_views.py index cdef1ab7..6ad72ab6 100644 --- a/emencia/django/newsletter/views/admin_views.py +++ b/emencia/django/newsletter/views/admin_views.py @@ -332,9 +332,9 @@ from ..models import PopupCount from theme.models import Theme def count_popups(request): - if not request.is_ajax(): - return HttpResponse("request is not ajax") - else: + #if not request.is_ajax(): + # return HttpResponse("request is not ajax") + #else: themes = request.GET.getlist('theme') if themes: for theme_id in themes: diff --git a/expobanner/admin.py b/expobanner/admin.py index 261a9c3d..aad89529 100644 --- a/expobanner/admin.py +++ b/expobanner/admin.py @@ -9,6 +9,8 @@ from expobanner.forms import UrlCreateForm, BannerCreateGroupForm, BannerCreateF PaidCreateForm, PaidUpdateForm, TopCreateForm, BannerLinkCreateForm, MainCreateForm, MainConfCreateForm, MainUpdateForm, TopUpdateForm from exposition.models import Exposition from conference.models import Conference +from settings.models import Html +from settings.forms import HtmlForm class BannersControl(TemplateView): template_name = 'admin/expobanner/banners_control.html' @@ -356,9 +358,22 @@ class TopUpdate(UpdateView): template_name = 'admin/expobanner/top_create.html' success_url = '/admin/expobanners/top/list/' - def get_context_data(self, **kwargs): context = super(TopUpdate, self).get_context_data(**kwargs) obj = self.object context['exposition'] = obj.get_event() return context + + +class MainPageBlock(UpdateView): + model = Html + form_class = HtmlForm + template_name = 'admin/expobanner/main_page_block.html' + + def get_context_data(self, **kwargs): + context = super(MainPageBlock, self).get_context_data(**kwargs) + context['languages'] = settings.LANGUAGES + return context + + def get_success_url(self): + return '/admin/' diff --git a/expobanner/admin_urls.py b/expobanner/admin_urls.py index 0c46fcd8..d67167eb 100644 --- a/expobanner/admin_urls.py +++ b/expobanner/admin_urls.py @@ -42,4 +42,5 @@ urlpatterns = patterns('expobanner.admin', url(r'^main/conf/$', MainConfCreate.as_view(), name='expobanner-conf-create_main'), url(r'^main/conf/turn/(?P\d+)/(?P.*)/$', main_turn, name='expobanner-conf-main-turn'), #url(r'^main/conf/(?P\d+)/stat/$', MainStat.as_view(), name='expobanner_stat_main'), + url(r'^main/block/(?P\d+)/$', MainPageBlock.as_view()), ) \ No newline at end of file diff --git a/expobanner/management/commands/banner_log_update.py b/expobanner/management/commands/banner_log_update.py index 9b795176..be596e38 100644 --- a/expobanner/management/commands/banner_log_update.py +++ b/expobanner/management/commands/banner_log_update.py @@ -1,12 +1,14 @@ # -*- coding: utf-8 -*- from datetime import date from django.core.management.base import BaseCommand -from expobanner.models import Log, LogStat, Banner, PaidStat -from exposition.models import Exposition + + class Command(BaseCommand): def handle(self, *args, **options): + from exposition.models import Exposition + from expobanner.models import Log, LogStat, Banner, PaidStat today = date.today() # banners for banner in Banner.objects.select_related('group').filter(public=True): diff --git a/expobanner/views.py b/expobanner/views.py index a9517d05..beb3f1ec 100644 --- a/expobanner/views.py +++ b/expobanner/views.py @@ -87,6 +87,7 @@ def get_banners(request): return response + def get_top(request): params = {'theme': request.GET.getlist('theme', []), 'tag': request.GET.get('tag'), diff --git a/functions/forms.py b/functions/forms.py index cb19d3f5..d5abbe91 100644 --- a/functions/forms.py +++ b/functions/forms.py @@ -69,7 +69,7 @@ from django.conf import settings from django.utils.translation import get_language from django.forms.models import save_instance -class TranslatableModelForm(forms.ModelForm): +class ExpoTranslatableModelForm(forms.ModelForm): translatable_fields = [] @@ -88,7 +88,7 @@ class TranslatableModelForm(forms.ModelForm): else: kwargs.update({'initial': init_tr_data}) - super(TranslatableModelForm, self).__init__(*args, **kwargs) + super(ExpoTranslatableModelForm, self).__init__(*args, **kwargs) if not self.translatable_fields: self.translatable_fields = self._all_tr_field_names @@ -113,7 +113,7 @@ class TranslatableModelForm(forms.ModelForm): # todo: fix commit False error init_lang = get_language()[:2] is_new = not self.instance.pk - inst = super(TranslatableModelForm, self).save() + inst = super(ExpoTranslatableModelForm, self).save() if is_new: for lang in self.data_by_lang: diff --git a/functions/signal_additional_func.py b/functions/signal_additional_func.py index 9e5162ed..20b83d15 100644 --- a/functions/signal_additional_func.py +++ b/functions/signal_additional_func.py @@ -1,10 +1,8 @@ # -*- coding: utf-8 -*- -from settings.models import settings_dict, Setting - - from django.conf import settings from functions.translate import get_translated_fields + def fill_missing_languages(obj): """ looking for missing languages @@ -30,39 +28,4 @@ def fill_missing_languages(obj): for field in fields: setattr(obj, field, getattr(translation, field)) - obj.save() - -def fill_meta_information(obj): - """ - looking for available settings for this object - and fill empty field with settings rules - """ - # return list of settings for this object - s_list = settings_dict.get(obj.__class__.__name__) - if s_list: - - for s in s_list: - # get Setting model object - setting = Setting.objects.get(key=s.get('key')) - field = s.get('field_name') - - if setting.type != 'transl': - # simple field - if getattr(obj, field)=="": - setattr(obj, field, setting.get_value()) - obj.save() - else: - # translated field - for code, lang in settings.LANGUAGES: - # get translation object - tr = obj._meta.translations_model.objects.get(language_code=code, master__id=getattr(obj, 'id')) - - if getattr(tr, field)=="": - value = setting.get_value(code) - try: - value = value%tr.__dict__ - except KeyError: - pass - # ! charfield -> textfield - setattr(tr, field, value[:250]) - tr.save() \ No newline at end of file + obj.save() \ No newline at end of file diff --git a/functions/signal_handlers.py b/functions/signal_handlers.py index 6c170a1e..df7321e8 100644 --- a/functions/signal_handlers.py +++ b/functions/signal_handlers.py @@ -1,7 +1,7 @@ import random import string from django.db.models.fields.files import FieldFile -from signal_additional_func import fill_missing_languages, fill_meta_information +from signal_additional_func import fill_missing_languages from functions.form_check import translit_with_separator @@ -34,7 +34,6 @@ def post_save_handler(sender, **kwargs): """ obj = kwargs['instance'] fill_missing_languages(obj) - fill_meta_information(obj) def file_cleanup(sender, instance, *args, **kwargs): diff --git a/proj/views.py b/proj/views.py index 68d93090..1801b84a 100644 --- a/proj/views.py +++ b/proj/views.py @@ -16,6 +16,8 @@ from conference.models import Conference from emencia.django.newsletter.forms import SubscribeAssideForm +from django.db.models.loading import get_model + def clear_slashes(str_): if str_[0] == r'/': str_ = str_[1:] @@ -73,6 +75,12 @@ class MainPageView(JitterCacheMixin, TemplateView): conf = Conference.objects.conf_main() ev = ex + conf events = sorted(ev, key=lambda x: x.main.position) + + Html = get_model('settings', 'Html') + try: + main_page_block = Html.objects.language().get(id=22) + except Html.DoesNotExist: + main_page_block = None # update main_page counter for event in events: event.main.link.log(self.request, 1) @@ -80,7 +88,8 @@ class MainPageView(JitterCacheMixin, TemplateView): conference_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.conference)[:6] args = {'events': events, 'exposition_themes': exposition_themes, 'conference_themes': conference_themes, - 'search_form': ExpositionSearchForm, 'search_action': '/expo/search/'} + 'search_form': ExpositionSearchForm, 'search_action': '/expo/search/', + 'main_page_block': main_page_block} context.update(args) diff --git a/settings/admin.py b/settings/admin.py index 5c0c3f39..10ea63bf 100644 --- a/settings/admin.py +++ b/settings/admin.py @@ -1,27 +1,9 @@ # -*- coding: utf-8 -*- import json from django.shortcuts import render_to_response -from django.http import HttpResponseRedirect, HttpResponse +from django.http import HttpResponseRedirect from django.core.context_processors import csrf -from django.conf import settings -from django.contrib.auth.decorators import login_required -# -from forms import SettingsForm - - - -@login_required -def change_settings(request): - if request.POST: - pass - else: - form = SettingsForm() - args = {'form': form, 'languages': settings.LANGUAGES} - args.update(csrf(request)) - return render_to_response('settings.html', args) - -from forms import MainPageEvent, MainPagePhotoreport, MainPageArticle, MainPageNews, MainPageThemes - +from forms import MainPageArticle, MainPageNews, MainPageThemes def handle_form(request, Form): @@ -36,21 +18,18 @@ def handle_form(request, Form): return HttpResponseRedirect('/admin/settings/main-page/') -def handle_events(request): - return handle_form(request, MainPageEvent) def handle_news(request): return handle_form(request, MainPageNews) + def handle_articles(request): return handle_form(request, MainPageArticle) + def handle_themes(request): return handle_form(request, MainPageThemes) -def handle_photoreports(request): - return handle_form(request, MainPagePhotoreport) - from exposition.models import Exposition from conference.models import Conference @@ -60,6 +39,7 @@ from theme.models import Theme from article.models import Article import datetime + def main_page(request): now = datetime.datetime.now() expositions = Exposition.objects.filter(main_page=1) @@ -83,10 +63,8 @@ def main_page(request): news_form.fields['main_page_news'].widget.attrs['data-init-text'] = json.dumps(a) article_form = MainPageArticle(initial={'article' : blogs}) - event_data = {'expositions': ','.join(['%s:%s'%(item.id, item.name) for item in expositions])} - event_form = MainPageEvent(initial=event_data) - args = {'event_form' : event_form, 'theme_form' : MainPageThemes(initial=themes), + args = { 'theme_form' : MainPageThemes(initial=themes), 'article_form' : article_form, - 'news_form' : news_form, 'photoreport_form' : MainPagePhotoreport(),} + 'news_form' : news_form} args.update(csrf(request)) return render_to_response('admin/settings/main_page.html', args) \ No newline at end of file diff --git a/settings/admin_urls.py b/settings/admin_urls.py index fb38fbeb..8a90c5a2 100644 --- a/settings/admin_urls.py +++ b/settings/admin_urls.py @@ -3,10 +3,7 @@ from django.conf.urls import patterns, include, url urlpatterns = patterns('settings.admin', url(r'^main-page/$', 'main_page'), - url(r'^main-page/events/$', 'handle_events'), - url(r'^main-page/photoreports/$', 'handle_photoreports'), url(r'^main-page/themes/$', 'handle_themes'), url(r'^main-page/news/$', 'handle_news'), url(r'^main-page/blogs/$', 'handle_articles'), - url(r'^$', 'change_settings'), ) diff --git a/settings/forms.py b/settings/forms.py index e0aed057..87d73c1d 100644 --- a/settings/forms.py +++ b/settings/forms.py @@ -1,146 +1,19 @@ # -*- coding: utf-8 -*- from django import forms -from models import Setting, settings_dict -from django.conf import settings -from functions.translate import fill_trans_fields, populate, ZERO_LANGUAGE, populate_all, fill_trans_fields_all - - -class SettingsForm(forms.Form): - """ - Create Settings form for creating settings - - __init__ uses for dynamic creates fields - - save function saves data in Settings object. If it doesnt exist create new object - """ - - def __init__(self, *args, **kwargs): - super(SettingsForm, self).__init__(*args, **kwargs) - # creates translated form fields, example: name_ru, name_en - # len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs - for model_name in settings_dict.values(): - for setting in model_name: - item = Setting.objects.get(key=setting['key']) - if setting['type'] != 'transl': - self.fields[setting['key']] = forms.CharField(label=setting['verbose_name'], initial=item.get_value(), - required=False) - else: - if len(settings.LANGUAGES) in range(10): - for lid, (code, name) in enumerate(settings.LANGUAGES): - # using enumerate for detect iteration number - # first iteration is a default lang so it required fields - required = True if lid == 0 else False - self.fields['%s_%s' %(setting['key'], code)] = forms.CharField(label=setting['verbose_name'], - initial=item.get_value(code), - required=required, - widget=forms.TextInput( - attrs={'style':'width: 450px'})) - - """ - settings_list = Setting.objects.all() - for item in settings_list: - if item.type != 'transl': - self.fields['%s'%item.key] = forms.CharField(label='%s'%item.key, initial=item.get_value(), - required=False) - else: - if len(settings.LANGUAGES) in range(10): - for lid, (code, name) in enumerate(settings.LANGUAGES): - # using enumerate for detect iteration number - # first iteration is a default lang so it required fields - required = True if lid == 0 else False - self.fields['%s_%s' %(item.key, code)] = forms.CharField(label=getattr(item, 'key'), - initial=item.get_value(code), - required=required, - widget=forms.TextInput( - attrs={'style':'width: 450px'})) - """ - - - def save(self): - """ - changes Settings model - """ - data = self.cleaned_data - capacity_tmpl = Setting.objects.get(key='hall_template') - for code, name in settings.LANGUAGES: - capacity_tmpl.set_value(data['hall_capacity_tmpl_%s'%code], code) - - -from exposition.models import Exposition -from conference.models import Conference -from seminar.models import Seminar -from webinar.models import Webinar -from photoreport.models import Photoreport -from news.models import News +from ckeditor.widgets import CKEditorWidget from theme.models import Theme +from .models import Html from article.models import Article +from functions.forms import ExpoTranslatableModelForm -import datetime - -class MainPageEvent(forms.Form): - expositions = forms.CharField(label=u'Выставки', widget=forms.HiddenInput(), required=False) - conferences = forms.CharField(label=u'Конференции', widget=forms.HiddenInput(), required=False) - - def save(self): - data = self.cleaned_data - expositions = data['expositions'] - conferences = data['conferences'] - Exposition.objects.filter(main_page=1).update(main_page=0) - Exposition.objects.filter(id__in=expositions).update(main_page=1) - #Conference.objects.filter(main_page=1).update(main_page=0) - #Conference.update(main_page=1) +class HtmlForm(ExpoTranslatableModelForm): + class Meta: + model = Html + widgets = { + 'text': CKEditorWidget, + } - def clean_expositions(self): - expositions = self.cleaned_data.get('expositions') - if expositions: - res = [] - for id in expositions.split(','): - try: - res.append(int(id)) - except: - continue - return res - else: - return [] - -""" -class MainPageEvent(forms.Form): - def __init__(self, *args, **kwargs): - super(MainPageEvent, self).__init__(*args, **kwargs) - now = datetime.datetime.now - self.fields['expositions' ] = forms.ModelMultipleChoiceField( - queryset=Exposition.objects.all(), - required=False - ) - - self.fields['conferences' ] = forms.ModelMultipleChoiceField( - queryset=Conference.objects.all(), - required=False - ) - self.fields['seminars' ] = forms.ModelMultipleChoiceField( - queryset=Seminar.objects.all(), - required=False - ) - self.fields['webinars' ] = forms.ModelMultipleChoiceField( - queryset=Webinar.objects.all(), - required=False - ) - def save(self): - data = self.cleaned_data - expositions = data['expositions'] - conferences = data['conferences'] - seminars = data['seminars'] - webinars = data['webinars'] - Exposition.objects.all().update(main_page=0) - expositions.update(main_page=1) - Conference.objects.all().update(main_page=0) - conferences.update(main_page=1) - Seminar.objects.all().update(main_page=0) - seminars.update(main_page=1) - Webinar.objects.all().update(main_page=0) - webinars.update(main_page=1) -""" class MainPageThemes(forms.Form): exposition_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.exposition), @@ -163,17 +36,6 @@ class MainPageThemes(forms.Form): #seminar_themes.update(main_page=1) - - -class MainPagePhotoreport(forms.Form): - photoreports = forms.ModelMultipleChoiceField(queryset=Photoreport.objects.all()) - - def save(self): - data = self.cleaned_data - photoreports = data['photoreports'] - photoreports.update(main_page=1) - - class MainPageNews(forms.Form): main_page_news = forms.CharField(label=u'Новости', widget=forms.HiddenInput(), required=False,) diff --git a/settings/models.py b/settings/models.py index ec623778..8bb734bf 100644 --- a/settings/models.py +++ b/settings/models.py @@ -4,95 +4,11 @@ from hvad.models import TranslatableModel, TranslatedFields from functions.custom_fields import EnumField -class Setting(TranslatableModel): - """ - Create Settings model, which stores different settings of project - - Uses hvad.TranslatableModel which is child of django.db.models class - - Setting create only by admin - """ - VALUES = ('int', 'text', 'transl', 'date') - - key = models.CharField(max_length=50) - type = EnumField(values=VALUES) - int = models.IntegerField(blank=True, null=True) - text = models.CharField(max_length=255, blank=True) - date = models.DateTimeField(blank=True, null=True) - +class Html(TranslatableModel): + name = models.CharField(max_length=100, blank=True) translations = TranslatedFields( - transl = models.CharField(max_length=255, blank=True,default='111'), - name = models.CharField(max_length=50), + text=models.TextField() ) def __unicode__(self): - return self.key - - def get_value(self, code=None): - """ - returns value of setting - value can be - int, text, date or translated field - - """ - if self.type == 'transl': - obj = Setting._meta.translations_model.objects.get(language_code = code,master__id=getattr(self, 'id')) - return getattr(obj, self.type) - else: - return getattr(self,self.type) - - def set_value(self, value, code=None): - """ - sets value of setting - """ - if self.type == 'transl': - obj = Setting._meta.translations_model.objects.get(language_code = code,master__id=getattr(self, 'id')) - setattr(obj, self.type, value) - obj.save() - else: - setattr(self, self.type, value) - -# dictionaty of models settings -# every model have list of settings -# key: setting in db, field_name: field in model -settings_dict = dict(#City=[{'key': 'city_title', 'field_name': 'title', 'type': 'transl', 'verbose_name': 'title Городов'}, - # {'key': 'city_keywords', 'field_name': 'keywords', 'type': 'transl', 'verbose_name': 'keywords'}, - # {'key': 'city_descriptions', 'field_name': 'descriptions', 'type': 'transl', 'verbose_name': 'description'}], - #Exposition=[{'key': 'exposition_title', 'field_name': 'title', 'type': 'transl', 'verbose_name': 'title Выставок'}, - # {'key': 'exposition_keywords', 'field_name': 'keywords', 'type': 'transl', 'verbose_name': 'keywords Выставок'}], -# Country=[{'key': 'country_title', 'field_name': 'title', 'type': 'transl', 'verbose_name': 'title'}, -# {'key': 'country_keywords', 'field_name': 'keywords', 'type': 'transl', 'verbose_name': 'keywords'}, -# {'key': 'country_descriptions', 'field_name': 'descriptions', 'type': 'transl', 'verbose_name': 'description'}] -# Exposition=[{'key': 'exposition_title', 'field_name': 'title', 'type': 'transl', 'verbose_name': 'Exposition title'}, -# {'key': 'exposition_keywords', 'field_name': 'keywords', 'type': 'transl', 'verbose_name': 'Exposition keywords'}, -# {'key': 'exposition_descriptions', 'field_name': 'descriptions', 'type': 'transl', 'verbose_name': 'Exposition description'}] -) - -#from settings.models import settings, Setting -#country_set = settings.get('country') -#for s in country_set: -# set = Setting(key=s['key'], type=s['type']) -# set.save() - - - - -from django.db.models.signals import post_save -from django.dispatch import receiver - - -#@receiver(post_save, sender=Setting) -def create_transl_fields(sender, **kw): - """ - - """ - setting = kw['instance'] - setting.text = '111' - setting.save() - #if kwargs['created'] and setting.type == 'transl': - # setting.int = 1 - #if len(setting.LANGUAGES) in range(10): - # for lid, (code, name) in enumerate(settings.LANGUAGES): - # using enumerate for detect iteration number - # first iteration is a default lang so it required fields - -#post_save.connect(create_transl_fields, sender=Setting) \ No newline at end of file + return self.name \ No newline at end of file diff --git a/specialist_catalog/forms.py b/specialist_catalog/forms.py index 7571b53a..c7860937 100644 --- a/specialist_catalog/forms.py +++ b/specialist_catalog/forms.py @@ -33,6 +33,21 @@ class SpecialistCatalogForm(TranslatableModelForm): 'big_cities': CKEditorWidget, } + def __init__(self, *args, **kwargs): + + super(SpecialistCatalogForm, self).__init__(*args, **kwargs) + if kwargs.get('instance'): + instance = kwargs['instance'] + if instance.type == SpecialistCatalog._country: + qs = Specialist.objects.filter(country=instance.country) + else: + qs = Specialist.objects.filter(city=instance.city) + + self.fields['specialists'] = forms.ModelMultipleChoiceField(label=u"Специалисты", required=False, + queryset=qs) + + + def save(self, commit=True): place = self.cleaned_data.get('city') or self.cleaned_data.get('country') place_inflect = place.inflect or place.name diff --git a/specialist_catalog/models.py b/specialist_catalog/models.py index f92a0cd3..428eb6dc 100644 --- a/specialist_catalog/models.py +++ b/specialist_catalog/models.py @@ -26,6 +26,8 @@ class Specialist(models.Model): class SpecialistCatalog(TranslatableModel): + _country = 1 + _city = 2 price = models.IntegerField(verbose_name=u"Цена", default=200) currency = models.CharField(max_length=255, verbose_name=u"Валюта", default=u"EUR") logo = models.ImageField(db_column= "logo_preview", verbose_name=u"Логотип", blank=True, upload_to='specialist_catalog/logo_preview/') diff --git a/templates/admin/expobanner/main_page_block.html b/templates/admin/expobanner/main_page_block.html new file mode 100644 index 00000000..050e0656 --- /dev/null +++ b/templates/admin/expobanner/main_page_block.html @@ -0,0 +1,26 @@ +{% extends 'admin/base.html' %} +{% load static %} +{% load i18n %} + + +{% block body %} +
{% csrf_token %} +
+ +
+
+

Блок на главной

+
+
+ {% include 'admin/forms/multilang.html' with field='text' form=form languages=languages %} +
+
+
+ +
+ + +
+
+ +{% endblock %} \ No newline at end of file diff --git a/templates/admin/includes/admin_nav.html b/templates/admin/includes/admin_nav.html index ad358b63..2ada523d 100644 --- a/templates/admin/includes/admin_nav.html +++ b/templates/admin/includes/admin_nav.html @@ -105,6 +105,7 @@
  • Выставки в топе
  • Выставки на главной
  • Конференции на главной
  • +
  • Блок на главной
  • diff --git a/templates/client/base_catalog.html b/templates/client/base_catalog.html index ac80542d..8bedcc02 100644 --- a/templates/client/base_catalog.html +++ b/templates/client/base_catalog.html @@ -27,9 +27,10 @@ {% include 'client/includes/side_confs.html' %} -
    {% include 'client/includes/banners/aside_2.html' %} + {% include 'client/includes/translators_aside.html' %} +
    diff --git a/templates/client/includes/booking_block.html b/templates/client/includes/booking_block.html index 4f686236..8528a43c 100644 --- a/templates/client/includes/booking_block.html +++ b/templates/client/includes/booking_block.html @@ -8,16 +8,16 @@ {% endif %}
    - {% include 'client/includes/booking_block.html' with city=event.city place=event.place %} + {% include 'client/includes/booking_block.html' with city=event.city place=event.place event=event %}
    {% if event.get_nearest_events|slice:":6" %}
    diff --git a/templates/client/includes/event_object.html b/templates/client/includes/event_object.html deleted file mode 100644 index fc06f421..00000000 --- a/templates/client/includes/event_object.html +++ /dev/null @@ -1,319 +0,0 @@ -{% load static %} -{% load i18n %} -{% load thumbnail %} -{% load template_filters %} - -{% block page_body %} -
    -
    - - -
    -
    -
    - {% if exposition.main_title %} - {{ exposition.main_title|safe }} {{ exposition.name|safe }} - {% else %} - {{ exposition.name|safe }} - {% endif %} -
    -
    - -
    - {% with obj=exposition %} - {% include 'client/includes/show_date_block.html' %} - {% endwith %} -
    - {% if exposition.place %} -
    -
    -
    - {{ exposition.place.adress }} -
    - -
    - - -
    - {% endif %} -
    -
    -
    - {% with event=exposition user=user %} - {% include 'client/includes/visit_button.html' %} - {% endwith %} - - {% with event=exposition user=user %} - {% include 'client/includes/calendar_button.html' %} - {% endwith %} - {% trans 'заметка' %} -
    - -
    -
    -
    -
    - -
    - -
    - {% for tag in exposition.tag.all %} - {{ tag }}, - {% endfor %} -
    -
    -
    -
    - -
    - -
    - - {% include 'includes/event_steps.html' with event=exposition filter=filter %} - - {% if exposition.get_photos %} - {% with photos=exposition.get_photos|slice:"5" %} -
    - -
    - - -
    - {% endwith %} - {% endif %} - {% if exposition.description %} -
    - -
    {% trans 'О выставке' %} {{ exposition.name|safe }}
    -
    {{ exposition.description|safe|linebreaks }}
    -
    -
    - {% endif %} -
    -
    {% trans 'Дополнительная информация' %}
    - -
    -
    {% trans 'Организатор' %}:
    -
    - {% for organiser in exposition.organiser.all %} - {{ organiser.name }}
    - {{ organiser.web_page }}
    - {{ organiser.email }} - {% endfor %} -
    - {% if exposition.web_page %} -
    {% trans 'Веб-сайт' %}:
    -
    - {{ exposition.web_page }} -
    - {% endif %} - - {% if exposition.get_audience %} -
    {% trans 'Аудитория' %}:
    -
    - {{ exposition.get_audience }} -
    - {% endif %} - - {% if exposition.get_periodic %} -
    {% trans 'Периодичность' %}:
    -
    {{ exposition.get_periodic }}
    - {% endif %} - - {% if exposition.products %} -
    {% trans 'Экспонируемые продукты' %}:
    -
    {{ exposition.products|safe|linebreaks }}
    - {% endif %} - -
    - -
    -
    -
    -
    -
    -
    {% trans 'Участники' %}
    - {% trans 'Все участники' %} -
    - -
    - -
    -
    -
    {% trans 'Посетители' %}
    -
    - - {% trans 'Все посетители' %} -
    -
    - - {% if exposition.place %} -
    -
    - {% if exposition.place %} -
    -
    {% trans 'Общая выставочная площадь' %}
    -
    - {% if exposition.place.total_area %} - {{ exposition.place.total_area }} {% trans 'м²' %} - {% endif %} -
    -
    - {% endif %} - -
    - {% if exposition.visitors %} -
    {{ exposition.visitors }} {% trans 'учасников' %}
    - {% endif %} - {% if exposition.members %} -
    {{ exposition.members }} {% trans 'посетителей' %}
    - {% endif %} - {% if exposition.foundation_year %} -
    {% trans 'Основано в' %} {{ exposition.foundation_year }} {% trans 'году' %}
    - {% endif %} -
    -
    - {% endif %} - -
    - - {% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place %} - -
    - {% if exposition.get_nearest_events|slice:":6" %} -
    -
    {% trans 'Ближайшие выставки по тематике' %} «{{ exposition.theme.all.0 }}»
    - -
    - {% endif %} - - -{% endblock %} -{% block content_text %} -{% endblock %} \ No newline at end of file diff --git a/templates/client/includes/exposition/expo_paid.html b/templates/client/includes/exposition/expo_paid.html index 74796195..fc2e3547 100644 --- a/templates/client/includes/exposition/expo_paid.html +++ b/templates/client/includes/exposition/expo_paid.html @@ -318,7 +318,7 @@ {% endif %}
    - {% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place %} + {% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
    {% if exposition.get_nearest_events|slice:":6" %}
    diff --git a/templates/client/includes/exposition/exposition_object.html b/templates/client/includes/exposition/exposition_object.html index 01d93f8a..1847213f 100644 --- a/templates/client/includes/exposition/exposition_object.html +++ b/templates/client/includes/exposition/exposition_object.html @@ -315,7 +315,7 @@
    {% endif %} - {% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place %} + {% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
    {% if exposition.get_nearest_events|slice:":6" %}
    diff --git a/templates/client/includes/main_page_video_block.html b/templates/client/includes/main_page_video_block.html new file mode 100644 index 00000000..c4252f67 --- /dev/null +++ b/templates/client/includes/main_page_video_block.html @@ -0,0 +1,8 @@ +{% load i18n %} + +
    + +
    + \ No newline at end of file diff --git a/templates/client/includes/translators_aside.html b/templates/client/includes/translators_aside.html new file mode 100644 index 00000000..a28b6c96 --- /dev/null +++ b/templates/client/includes/translators_aside.html @@ -0,0 +1,14 @@ +{% load i18n %} + \ No newline at end of file diff --git a/templates/client/index.html b/templates/client/index.html index a887eb2a..69fa98fe 100644 --- a/templates/client/index.html +++ b/templates/client/index.html @@ -72,15 +72,9 @@
    diff --git a/templates/client/service/translator.html b/templates/client/service/translator.html index c0236e37..8ab216cb 100644 --- a/templates/client/service/translator.html +++ b/templates/client/service/translator.html @@ -374,7 +374,7 @@
    {% if object %}
    - {% include 'client/includes/booking_block.html' with city=object.city place=object.place %} + {% include 'client/includes/booking_block.html' with city=object.city place=object.place event=object %}
    {% endif %} diff --git a/templates/client/specialist_catalog/catalog_detailed.html b/templates/client/specialist_catalog/catalog_detailed.html index d087aca8..a46d36f1 100644 --- a/templates/client/specialist_catalog/catalog_detailed.html +++ b/templates/client/specialist_catalog/catalog_detailed.html @@ -36,10 +36,9 @@
    {{ object.title }}
    -
    +
    {{ object.main_descr|safe }}
    -
    @@ -63,7 +62,7 @@
    {% if object.big_cities %}
    -

    Крупные города:

    +

    {% trans 'Города, в которых мы предоставляем переводчиков:' %}

    {{ object.big_cities|safe }}
    {% endif %} @@ -72,7 +71,7 @@
    -

    Коротко о наших преимуществах:

    +

    {% trans 'Коротко о наших преимуществах:' %}

    {{ object.benefits|safe }}
    @@ -228,9 +227,9 @@
    -
    от {{ object.price }} {{ object.currency }} / день
    +
    от {{ object.price }} {{ object.currency }} / {% trans 'день' %}
    @@ -238,9 +237,6 @@
    - - -
    {% if request.GET.debug == '1' %} @@ -257,14 +253,12 @@ {% with object.specialists.all as specialists %} {% if specialists %}
    -
    Наши специалисты
    +
    {% trans 'Наши специалисты' %}
    - - {% endfor %} - -
    -
    {% endif %} {% endwith %} @@ -297,7 +286,7 @@
    -
    Отзывы клиентов:
    +
    {% trans 'Отзывы клиентов:' %}
    {% for feedback in feedbacks %}