remotes/origin/1203
Назар Котюк 11 years ago
parent 161039d4e0
commit fa092225d9
  1. 2
      proj/settings.py
  2. 2
      service/models.py
  3. 52
      service/order_forms.py
  4. 246
      templates/client/includes/conference/conference_list.html
  5. 18
      templates/client/includes/exposition/exposition_list.html
  6. 99
      templates/client/includes/place/place_list.html
  7. 20
      templates/client/service/tour.html

@ -404,6 +404,8 @@ MONTHES = {'jan': {'value': 1, 'name': _(u'Январь')}, 'feb': {'value': 2,
SNG_COUNTRIES = [159, 186, 31, 6, 99, 13, 189, 64] SNG_COUNTRIES = [159, 186, 31, 6, 99, 13, 189, 64]
CLIENT_DATE_FORMAT = ["%d.%m.%Y"]
# cache pages in random seconds. random in this range # cache pages in random seconds. random in this range
CACHE_RANGE = [60, 120] CACHE_RANGE = [60, 120]

@ -107,7 +107,7 @@ class Translation(AbstractOrder):
class Visit(AbstractOrder): class Visit(AbstractOrder):
fr = models.DateField() fr = models.DateField()
to = models.DateField() to = models.DateField()
people = models.IntegerField() people = models.IntegerField(blank=True, null=True)
hotel_additional = models.TextField(blank=True) hotel_additional = models.TextField(blank=True)
city_from = models.CharField(max_length=255, blank=True) city_from = models.CharField(max_length=255, blank=True)
hotel_stars = models.CharField(max_length=30, blank=True) hotel_stars = models.CharField(max_length=30, blank=True)

@ -6,6 +6,7 @@ from models import Catalog, Tickets, Remote, Participation, Translation, Visit,
from exposition.models import Exposition from exposition.models import Exposition
from conference.models import Conference from conference.models import Conference
from seminar.models import Seminar from seminar.models import Seminar
from django.conf import settings
class AbstractOrderForm(forms.ModelForm): class AbstractOrderForm(forms.ModelForm):
@ -74,7 +75,7 @@ class AbstractOrderForm(forms.ModelForm):
if not phone: if not phone:
return return
deduct = ('-','(',')','.',' ') deduct = ('-','(',')','.',' ', '+')
for elem in deduct: for elem in deduct:
phone = phone.replace(elem, '') phone = phone.replace(elem, '')
if phone.isdigit(): if phone.isdigit():
@ -132,42 +133,43 @@ from theme.models import Theme
class TranslationForm(AbstractOrderForm): class TranslationForm(AbstractOrderForm):
languages = forms.CharField(required=False) languages = forms.CharField(required=False)
themes = forms.CharField(required=False) themes = forms.CharField(required=False)
fr = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}), required=False) fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT,
to = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}), required=False) widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT,
widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}))
class Meta: class Meta:
model = Translation model = Translation
HOTEL_ADDITIONAL_CHOICES = [('', _(u'Выберите')),(_(u'Условие1'), _(u'Условие1')), HOTEL_ADDITIONAL_CHOICES = [('', _(u'Выберите')), (_(u'Одноместное'), _(u'Одноместное')),
(_(u'Условие2'), _(u'Условие2')),(_(u'Условие3'), _(u'Условие3'))] (_(u'Двухместное'), _(u'Двухместное')),(_(u'Трехместное'), _(u'Трехместное'))]
AVIA_TYPE_CHOICES = [(_(u'Прямой'), _(u'Прямой')), (_(u'С пересадкой'), _(u'С пересадкой')), AVIA_TYPE_CHOICES = [(_(u'Прямой'), _(u'Прямой')), (_(u'С пересадкой'), _(u'С пересадкой')),
(_(u'Бизнес-класс'), _(u'Бизнес-класс')), (_(u'Эконом-класс'), _(u'Эконом-класс'))] (_(u'Бизнес-класс'), _(u'Бизнес-класс')), (_(u'Эконом-класс'), _(u'Эконом-класс'))]
HOTEL_LOCATION_CHOICES = [('', _(u'Выберите')), (_(u'Расположение1'), _(u'Расположение1')), HOTEL_LOCATION_CHOICES = [('', _(u'Выберите')), (_(u'Любое'), _(u'Любое')),
(_(u'Расположение2'), _(u'Расположение2'))] (_(u'Рядом с выставкой'), _(u'Рядом с выставкой')),
(_(u'В центре'), _(u'В центре'))]
HOTEL_BUDGET_ADD = [('', _(u'Выберите')), (_(u'В сутки'), _(u'В сутки')), (_(u'В неделю'), _(u'В неделю'))] HOTEL_BUDGET_ADD = [(_(u'В сутки'), _(u'В сутки')), (_(u'За весь период'), _(u'За весь период'))]
class VisitForm(AbstractOrderForm): class VisitForm(AbstractOrderForm):
fr = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')})) fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, required=False,
to = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')})) widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, required=False,
widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}))
hotel_additional = forms.ChoiceField(choices=HOTEL_ADDITIONAL_CHOICES, required=False) hotel_additional = forms.ChoiceField(choices=HOTEL_ADDITIONAL_CHOICES, required=False)
hotel_stars = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), hotel_stars = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), required=False,
choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')]) choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')])
hotel_location = forms.ChoiceField(choices=HOTEL_LOCATION_CHOICES, required=False) hotel_location = forms.ChoiceField(choices=HOTEL_LOCATION_CHOICES, required=False)
hotel_budget_add = forms.ChoiceField(choices=HOTEL_BUDGET_ADD, required=False) hotel_budget_add = forms.ChoiceField(choices=HOTEL_BUDGET_ADD, required=False)
languages = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), languages = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Знание языков')}))
choices=LANGS) themes = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Тематика')}))
themes = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=[(theme.name, theme.name) for theme in Theme.objects.all()])
avia_type = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), avia_type = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=AVIA_TYPE_CHOICES) choices=AVIA_TYPE_CHOICES, required=False)
class Meta: class Meta:
model = Visit model = Visit
@ -178,20 +180,6 @@ class VisitForm(AbstractOrderForm):
else: else:
return ', '.join(hotel_stars) return ', '.join(hotel_stars)
def clean_languages(self):
languages = self.cleaned_data.get('languages')
if not languages:
return ''
else:
return ', '.join(languages)
def clean_themes(self):
themes = self.cleaned_data.get('themes')
if not themes:
return ''
else:
return ', '.join(themes)
def clean_avia_type(self): def clean_avia_type(self):
avia_type = self.cleaned_data.get('avia_type') avia_type = self.cleaned_data.get('avia_type')
if not avia_type: if not avia_type:

@ -1,124 +1,134 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}
<ul class="cat-list cl-exhibitions"> {% with objects=object_list %}
{% with objects=object_list %} {% if objects %}
{% for obj in objects %} <ul class="cat-list cl-exhibitions">
<li class="cl-item {% if obj.canceled %}canceled{% endif %}">
<div class="cl-item-wrap clearfix"> {% for obj in objects %}
<a href="{{ obj.get_permanent_url }}"> <li class="cl-item {% if obj.canceled %}canceled{% endif %}">
{% if obj.canceled %} <div class="cl-item-wrap clearfix">
<div class="cancel"></div> <a href="{{ obj.get_permanent_url }}">
{% else %} {% if obj.canceled %}
{% if obj.expohit %} <div class="cancel"></div>
<div class="hit"></div> {% else %}
{% endif %} {% if obj.expohit %}
{% endif %} <div class="hit"></div>
<div class="cli-pict"> {% endif %}
{% with obj=obj %} {% endif %}
{% include 'client/includes/show_logo.html' %} <div class="cli-pict">
{% endwith %} {% with obj=obj %}
</div> {% include 'client/includes/show_logo.html' %}
</a> {% endwith %}
<div class="cli-info"> </div>
<div class="cli-top clearfix"> </a>
{% if obj.quality_label.ufi.is_set %} <div class="cli-info">
<div class="cli-approved"> <div class="cli-top clearfix">
<img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" /> {% if obj.quality_label.ufi.is_set %}
</div> <div class="cli-approved">
{% endif %} <img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
<header> </div>
<div class="cli-title"><a href="{{ obj.get_permanent_url }}">{{ obj.name|safe }}</a></div> {% endif %}
</header> <header>
<div class="cli-descr"> <div class="cli-title"><a href="{{ obj.get_permanent_url }}">{{ obj.name|safe }}</a></div>
{{ obj.main_title|safe }} </header>
</div> <div class="cli-descr">
</div> {{ obj.main_title|safe }}
<div class="cli-bot clearfix"> </div>
<div class="cli-date"> </div>
{% with obj=obj %} <div class="cli-bot clearfix">
{% include 'client/includes/show_date_block.html' %} <div class="cli-date">
{% endwith %} {% with obj=obj %}
</div> {% include 'client/includes/show_date_block.html' %}
{% if obj.country %} {% endwith %}
<div class="cli-place"> </div>
<a href="{{ obj.catalog }}country/{{ obj.country.url }}/">{{ obj.country }}</a>, <a href="{{ obj.catalog }}city/{{ obj.city.url }}/">{{ obj.city }}</a> {% if obj.country %}
{% if obj.place %} <div class="cli-place">
, <a href="/places/{{ obj.place.url }}/">{{ obj.place }}</a> <a href="{{ obj.catalog }}country/{{ obj.country.url }}/">{{ obj.country }}</a>, <a href="{{ obj.catalog }}city/{{ obj.city.url }}/">{{ obj.city }}</a>
{% endif %} {% if obj.place %}
</div> , <a href="/places/{{ obj.place.url }}/">{{ obj.place }}</a>
{% endif %} {% endif %}
</div> </div>
</div> {% endif %}
<div class="cli-buttons clearfix"> </div>
<div class="cli-m-buttons"> </div>
{% include 'client/includes/exposition/services.html' with obj=obj %} <div class="cli-buttons clearfix">
{% include 'client/includes/calendar_button.html' with obj=obj%} <div class="cli-m-buttons">
<div class="{% if request.user.is_authenticated%}note-wrap{% else %}note-wrap-disabled{% endif %}"> {% include 'client/includes/exposition/services.html' with obj=obj %}
{% with note=obj|note_by_user:request.user %} {% include 'client/includes/calendar_button.html' with obj=obj%}
<a class="button green icon-note {% if note %}active{% endif %} note-button" href="/conference/add-note/{{ obj.url }}/">{% trans 'заметка' %}</a> <div class="{% if request.user.is_authenticated%}note-wrap{% else %}note-wrap-disabled{% endif %}">
<div class="note-overlay"> {% with note=obj|note_by_user:request.user %}
<form action=""> <a class="button green icon-note {% if note %}active{% endif %} note-button" href="/conference/add-note/{{ obj.url }}/">{% trans 'заметка' %}</a>
<textarea name="note_text" class="note-text"> {{ note }}</textarea> <div class="note-overlay">
</form> <form action="">
</div> <textarea name="note_text" class="note-text"> {{ note }}</textarea>
{% endwith %} </form>
</div> </div>
{% if request.user.is_admin %} {% endwith %}
<div class="note-wrap"> </div>
<a class="button green " href="/admin/conference/{{ obj.url }}/">{% trans 'изменить' %}</a> {% if request.user.is_admin %}
</div> <div class="note-wrap">
{% endif %} <a class="button green " href="/admin/conference/{{ obj.url }}/">{% trans 'изменить' %}</a>
<div></div> </div>
</div> {% endif %}
<div class="cli-s-buttons"> <div></div>
{% include 'client/buttons/booking_button.html' with object=obj %} </div>
</div> <div class="cli-s-buttons">
</div> {% include 'client/buttons/booking_button.html' with object=obj %}
</div> </div>
<footer class="clearfix"> </div>
<div class="cli-stats"> </div>
{% if obj.visitors %} <footer class="clearfix">
<span class="visitors" title="Посетители">{{ obj.visitors }}</span> <div class="cli-stats">
{% endif %} {% if obj.visitors %}
{% if obj.members %} <span class="visitors" title="Посетители">{{ obj.visitors }}</span>
<span class="participants" title="Участники">{{ obj.members }}</span> {% endif %}
{% endif %} {% if obj.members %}
</div> <span class="participants" title="Участники">{{ obj.members }}</span>
<div class="cli-tags"> {% endif %}
{% include 'client/includes/exposition/tags.html' with obj=obj %} </div>
</div> <div class="cli-tags">
</footer> {% include 'client/includes/exposition/tags.html' with obj=obj %}
</li> </div>
{% if forloop.counter == 8 %} </footer>
<!-- Яндекс.Директ --> </li>
<script type="text/javascript"> {% if forloop.counter == 8 %}
yandex_partner_id = 58151; <!-- Яндекс.Директ -->
yandex_site_bg_color = 'FFFFFF'; <script type="text/javascript">
yandex_ad_format = 'direct'; yandex_partner_id = 58151;
yandex_font_size = 1; yandex_site_bg_color = 'FFFFFF';
yandex_direct_type = 'horizontal'; yandex_ad_format = 'direct';
yandex_direct_border_type = 'block'; yandex_font_size = 1;
yandex_direct_limit = 3; yandex_direct_type = 'horizontal';
yandex_direct_title_font_size = 3; yandex_direct_border_type = 'block';
yandex_direct_border_radius = true; yandex_direct_limit = 3;
yandex_direct_links_underline = false; yandex_direct_title_font_size = 3;
yandex_direct_header_bg_color = 'FEEAC7'; yandex_direct_border_radius = true;
yandex_direct_bg_color = 'FFF9F0'; yandex_direct_links_underline = false;
yandex_direct_border_color = 'FBE5C0'; yandex_direct_header_bg_color = 'FEEAC7';
yandex_direct_title_color = '666666'; yandex_direct_bg_color = 'FFF9F0';
yandex_direct_url_color = '000000'; yandex_direct_border_color = 'FBE5C0';
yandex_direct_text_color = '000000'; yandex_direct_title_color = '666666';
yandex_direct_hover_color = 'FF3333'; yandex_direct_url_color = '000000';
yandex_direct_sitelinks_color = '666666'; yandex_direct_text_color = '000000';
yandex_direct_favicon = false; yandex_direct_hover_color = 'FF3333';
yandex_no_sitelinks = false; yandex_direct_sitelinks_color = '666666';
document.write('<scr'+'ipt type="text/javascript" src="//an.yandex.ru/system/context.js"></scr'+'ipt>'); yandex_direct_favicon = false;
</script> yandex_no_sitelinks = false;
{%endif %} document.write('<scr'+'ipt type="text/javascript" src="//an.yandex.ru/system/context.js"></scr'+'ipt>');
{% endfor %} </script>
{% endwith %} {%endif %}
</ul> {% endfor %}
</ul>
{% else %}
<p class="message-not-found">
<span class="message">
{% trans "Конференции по указанным параметрам не найдены. Попробуйте задать менее точный запрос по теме или расширить период времени" %}
</span>
</p>
{% endif %}
{% endwith %}
{% block scripts %} {% block scripts %}
{% if request.GET.debug == '1' %} {% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script> <script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script>

@ -1,8 +1,10 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}
{% with objects=object_list %}
{% if objects %}
<ul class="cat-list cl-exhibitions"> <ul class="cat-list cl-exhibitions">
{% with objects=object_list %}
{% for obj in objects %} {% for obj in objects %}
<li class="cl-item {% if obj.canceled %}canceled{% endif %}"> <li class="cl-item {% if obj.canceled %}canceled{% endif %}">
<div class="cl-item-wrap clearfix"> <div class="cl-item-wrap clearfix">
@ -119,8 +121,20 @@
</script> </script>
{%endif %} {%endif %}
{% endfor %} {% endfor %}
{% endwith %}
</ul> </ul>
{% else %}
<p class="message-not-found">
<span class="message">
{% trans "Выставки по указанным параметрам не найдены. Попробуйте задать менее точный запрос по теме или расширить период времени" %}
</span>
</p>
{% endif %}
{% endwith %}
{% block scripts %} {% block scripts %}
{% if request.GET.debug == '1' %} {% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script> <script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script>

@ -1,56 +1,53 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% with objects=object_list %}
<ul class="cat-list cl-places"> <ul class="cat-list cl-places">
{% for object in object_list %} {% for object in object_list %}
<li class="cl-item" {% if forloop.counter == 1 %}style="border:1px solid #ff6600;"{% else %}{% endif %}> <li class="cl-item" {% if forloop.counter == 1 %}style="border:1px solid #ff6600;"{% else %}{% endif %}>
<div class="cl-item-wrap clearfix"> <div class="cl-item-wrap clearfix">
<a href="{{ object.get_permanent_url }}"> <a href="{{ object.get_permanent_url }}">
<div class="cli-pict"> <div class="cli-pict">
{% with obj=object %} {% with obj=object %}
{% include 'client/includes/show_logo.html' %} {% include 'client/includes/show_logo.html' %}
{% endwith %} {% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title"><a href="{{ object.get_permanent_url }}">{{ object.name|safe }}</a></div>
<!--<div class="cli-rate">{{ object.rating }}</div>-->
</header>
<div class="cli-descr">{{ object.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %}
<div class="cli-place"><a href="/places/country/{{ object.country.url }}/">{{ object.country }}</a>, <a href="/places/city/{{ object.city.url }}/">{{ object.city }}</a>
</div>
</div>
</div> </div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title"><a href="{{ object.get_permanent_url }}">{{ object.name|safe }}</a></div>
<!--<div class="cli-rate">{{ object.rating }}</div>-->
</header>
<div class="cli-descr">{{ object.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %}
<div class="cli-place"><a href="/places/country/{{ object.country.url }}/">{{ object.country }}</a>, <a href="/places/city/{{ object.city.url }}/">{{ object.city }}</a>
</div>
</div>
</div>
<div class="cli-buttons clearfix">
<div class="cli-m-buttons">
<a class="button icon-info" href="{{ object.get_permanent_url }}">{% trans 'описание' %}</a>
{% if object.get_events_number %}
<a class="button green icon-list" href="#">{% trans 'события' %} ({{ object.get_events_number }})</a>
{% endif %}
{% if object.photogallery %}
<a class="button blue icon-photo" href="{{ object.get_permanent_url }}photo/">{% trans 'фото' %}</a>
{% endif %}
</div>
<div class="cli-s-buttons">
<a class="button blue2 lc" target="_blank" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отели поблизости' %}</a> <div class="cli-buttons clearfix">
</div> <div class="cli-m-buttons">
<a class="button icon-info" href="{{ object.get_permanent_url }}">{% trans 'описание' %}</a>
</div> {% if object.get_events_number %}
<a class="button green icon-list" href="#">{% trans 'события' %} ({{ object.get_events_number }})</a>
{% endif %}
</li> {% if object.photogallery %}
{% endfor %} <a class="button blue icon-photo" href="{{ object.get_permanent_url }}photo/">{% trans 'фото' %}</a>
</ul> {% endif %}
</div>
<div class="cli-s-buttons">
<a class="button blue2 lc" target="_blank" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отели поблизости' %}</a>
</div>
</div>
</li>
{% endfor %}
</ul>
{% endwith %}

@ -23,6 +23,7 @@
{% block page_title %} {% block page_title %}
<div class="page-title"> <div class="page-title">
<h1>{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Посещение выставки' %} {% if object %}{{ object.name }}{% endif %}{% endif %}</h1> <h1>{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Посещение выставки' %} {% if object %}{{ object.name }}{% endif %}{% endif %}</h1>
{{ form.errors }}
</div> </div>
{% endblock %} {% endblock %}
@ -150,28 +151,17 @@
<div class="rq-s-line"> <div class="rq-s-line">
<div class="mf-field full-width"> <div class="mf-field full-width">
<input type="text" name="languages" id="id_languages" placeholder="{% trans 'Знание языков' %}"/> {{ form.languages }}
</div> </div>
</div> </div>
<div class="rq-s-line"> <div class="rq-s-line">
<!-- todo: сделать input:text--> <div class="mf-field full-width">
<div class="c-select-box select" data-placeholder="{% trans 'Тематика' %}"> {{ form.themes }}
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
</ul>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div class="rq-s-line"> <div class="rq-s-line">

Loading…
Cancel
Save