Merge branch 'develop' of gitlab.com:OldminTeam/expomap into develop

remotes/origin/tests
ya_dim4ik 9 years ago
commit a8b7ab3282
  1. 1
      apps/company/admin.py
  2. 3
      apps/conference/forms.py
  3. 2
      apps/emencia/django/newsletter/admin_forms.py
  4. 3
      apps/expobanner/models.py
  5. 1
      apps/functions/custom_views.py
  6. 1
      apps/functions/utils.py
  7. 9
      apps/place_exposition/models.py
  8. 1
      apps/settings/forms.py
  9. 8
      apps/theme/models.py
  10. 0
      apps/wizard/__init__.py
  11. 2
      apps/wizard/description.txt
  12. 76
      apps/wizard/forms.py
  13. 0
      apps/wizard/models.py
  14. 16
      apps/wizard/tests.py
  15. 7
      apps/wizard/urls.py
  16. 131
      apps/wizard/views.py
  17. 15
      proj/settings.py
  18. 1
      requirements.txt
  19. 4
      support/nginx.conf
  20. 8
      templates/client/includes/exposition/tags.html
  21. 72
      templates/client/includes/index/main_events.html
  22. 293
      templates/client/index.html
  23. 209
      templates/client/wizard/first_step.html
  24. 259
      templates/client/wizard/second_step.html
  25. 147
      templates/client/wizard/third_step.html
  26. 25
      templates/client/wizard/wizard.html

@ -43,7 +43,6 @@ def company_delete(request, url):
@login_required
def company_change(request, url):
print('URL\n' + url)
"""
Return form and fill it with existing Company object data.

@ -181,7 +181,8 @@ class ConferenceCreateForm(forms.Form):
# conference.quality_label = flag
conference.audience = data['audience']
if data.get('audience'):
conference.audience = data['audience']
if data.get('country'):
conference.country = Country.objects.get(id=data['country'])#.id cause select uses queryset

@ -276,14 +276,12 @@ class NewsletterRecommendForm(forms.ModelForm):
def clean_event(self):
event = self.cleaned_data.get('event')
print(event)
match = self.rx.match(event)
if not match:
raise forms.ValidationError(_(u'Введены неверные данные'))
model = self.event_models.get(match.group('type'))
self.event_model = model
event_id = match.group('pk')
print(model, event_id, event)
try:
event = model.objects.get(pk=event_id)
except model.DoesNotExist:

@ -165,7 +165,7 @@ class Banner(models.Model, StatMixin):
'group': self.group,
'ip': request.META.get('REMOTE_ADDR'),
'user_agent': request.META.get('HTTP_USER_AGENT'),
'page': request.META.get('HTTP_REFERER', '')[:255],
'page': request.META.get('HTTP_REFERER', '')[:200],
}
if request.user.is_authenticated():
@ -218,6 +218,7 @@ class Log(models.Model):
datetime = models.DateTimeField(verbose_name=_('Clicked At'), auto_now_add=True)
ip = models.IPAddressField(verbose_name=_('IP'), null=True, blank=True)
user_agent = models.CharField(verbose_name=_('User Agent'), max_length=1024, null=True, blank=True)
# FIXME: в бд реально 250 символов
page = models.URLField(verbose_name=_('Page'), null=True, blank=True, max_length=255)
key = models.CharField(verbose_name=_('User Agent'), max_length=32, null=True, blank=True)
TYPE_CHOICES = (

@ -486,7 +486,6 @@ class SimpleObjectChangeView(RedirectView, SingleObjectMixin):
def get(self, request, *args, **kwargs):
self.object = self.get_object()
self.change_object()
print(self.request.META.get('QUERY_STRING', ''))
return super(SimpleObjectChangeView, self).get(request, *args, **kwargs)

@ -21,7 +21,6 @@ def strfdelta(tdelta, fmt):
class CachedSting(object):
def __init__(self, path, timeout=None):
super(CachedSting, self).__init__()
print('initiated', path)
self.path = path
self.timeout = timeout or timedelta(days=1)
self.get_object()

@ -196,8 +196,13 @@ class PlaceExposition(TranslatableModel, ExpoMixin):
if not self.address:
return []
# get coordinates of all hotels in current city
qs_hotels_all = self.city.hotels.filter(city=self.city)
hotels_coord = [(hotel.latitude, hotel.longitude) for hotel in qs_hotels_all]
qs_hotels_all = self.city.hotels.language().filter(
city=self.city
).values(
'latitude', 'longitude', 'url', 'photo', 'name',
'min_price', 'currency'
)
hotels_coord = [(hotel['latitude'], hotel['longitude']) for hotel in qs_hotels_all]
# coordinate current place
place_coord = (float(self.address['lat']), float(self.address['lng']))
# 4 coordinates of 4 nearest hotels

@ -197,7 +197,6 @@ class EventDefaultDescriptionEditForm(forms.Form):
for field_name, path in templates.iteritems():
try:
with open(os.path.join(settings.SITE_ROOT, path), 'w+') as f:
print(self.cleaned_data.get(field_name))
f.write(self.cleaned_data.get(field_name).encode('utf-8'))
except Exception as e:
print(e)

@ -63,19 +63,19 @@ class Theme(TranslatableModel):
def expositions_number(self):
return Exposition.enable.upcoming().filter(theme__id=self.id).count()
return Exposition.enable.upcoming().filter(theme=self).count()
def conferences_number(self):
return Conference.enable.upcoming().filter(theme__id=self.id).count()
return Conference.enable.upcoming().filter(theme=self).count()
def seminars_number(self):
return Seminar.objects.filter(theme__id=self.id).count()
return Seminar.objects.filter(theme=self).count()
def webinars_number(self):
return Webinar.objects.filter(theme__id=self.id).count()
return Webinar.objects.filter(theme=self).count()
def events_number(self):
return self.expositions_number() + self.conferences_number() + self.seminars_number() + self.webinars_number()

@ -1,2 +0,0 @@
Должен был быть модуль для добавления событий и других даных через кабинет пользователя.
Остановленна разработка по ненадобности, так как делается функционал добавление событий через црм

@ -1,76 +0,0 @@
# -*- coding: utf-8 -*-
from django import forms
from theme.models import Theme
from place_exposition.models import PlaceExposition
from country.models import Country
from multiupload.fields import MultiFileField, MultiFileInput
from django.utils.translation import ugettext as _
choices = ((0, ''), (1.0, _(u'Ежегодно')), (2.0, _(u'2 раза в год')), (3.0, _(u'3 раза в год')), (4.0, _(u'4 раза в год')),
(5.0, _(u'5 раз в год')), (0.5, _(u'Раз в 2 года')), (
0.33, _(u'Раз в 3 года')), (0.25, _(u'Раз в 4 года')))
places = [(item.id, item.name) for item in PlaceExposition.objects.language().all()]
places.insert(0,('', _(u'Не выбрано')))
class ExpoForm1(forms.Form):
"""
main information about exposition
"""
name = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'placeholder': _(u"Введите название выставки")}))
main_title = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'placeholder': _(u"Краткое описание выставки (необязательно)")}))
description = forms.CharField(widget=forms.Textarea(attrs={'placeholder': _(u"Полное описание выставки"), 'cols':30, 'rows':10}))
date_start = forms.DateField(widget=forms.TextInput(attrs={'class':'data dateFrom', 'placeholder':_(u'дд.мм.гг')}))
date_end = forms.DateField(widget=forms.TextInput(attrs={'class':'data dateTo','placeholder':_(u'дд.мм.гг')}))
country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()], widget=forms.Select(attrs={'id':'id_country'}))
theme = forms.MultipleChoiceField(label=_('Тематики'), choices=[(item.id, item.name) for item in Theme.objects.language().all()], widget=forms.SelectMultiple(attrs={'id':'id_theme'}))
place = forms.ChoiceField(label=_(u'Место проведения'), required=False, choices=places, widget=forms.Select(attrs={'id':'id_place'}))
city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput(attrs={'id':'id_city'}))
tag = forms.CharField(label=_(u'Теги'), widget=forms.HiddenInput(attrs={'id':'id_tag'}), required=False)
audience1 = forms.BooleanField(required=False)
audience2 = forms.BooleanField(required=False)
audience3 = forms.BooleanField(required=False)
periodic = forms.ChoiceField(choices=choices, required=False)
membership1 = forms.BooleanField(required=False)
membership2 = forms.BooleanField(required=False)
membership3 = forms.BooleanField(required=False)
web_site = forms.URLField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u"Веб-сайт (необязательно)")}))
products = forms.CharField(widget=forms.Textarea(attrs={'placeholder': _(u"Экспонируемые продукты"), 'cols':30, 'rows':10}))
time_start = forms.TimeField()
time_end = forms.TimeField()
logo = forms.ImageField(widget=forms.FileInput(attrs={'class':"button big icon-clip"}), required=False)
class ExpoForm2(forms.Form):
"""
statistics
"""
found_year = forms.IntegerField()
# ticket price
pre_one_day = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'на один день')}))
pre_all_days = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'на все дни')}))
one_day = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'на один день')}))
all_days = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'на все дни')}))
# rent price
equiped = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'оборудованная площадь')}))
unequiped = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'необорудованная площадь')}))
open_square = forms.FloatField(widget=forms.TextInput(attrs={'placeholder':_(u'открытая площадь')}))
min_square = forms.FloatField()
registration_depos = forms.FloatField()
deadline_date = forms.DateField(widget=forms.TextInput(attrs={'placeholder':_(u'дд.мм.гг')}))
class ExpoForm3(forms.Form):
"""
photos from last expositions
"""
attachments = MultiFileField(min_num=0, max_num=6, max_file_size=1024*1024*5, widget=MultiFileInput(
attrs={'class':'button big icon-camera', 'value': _(u'выберите фотографии'), 'id': 'files'}
))

@ -1,16 +0,0 @@
"""
This file demonstrates writing tests using the unittest module. These will pass
when you run "manage.py test".
Replace this with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.assertEqual(1 + 1, 2)

@ -1,7 +0,0 @@
from django.conf.urls import patterns, url
from .views import ExpoWizard
from .forms import ExpoForm1, ExpoForm2,ExpoForm3
formlist = [ExpoForm1,ExpoForm2, ExpoForm3]
urlpatterns = patterns('', url(r'^$', ExpoWizard.as_view(formlist), name = 'add_exposition'))

@ -1,131 +0,0 @@
from django.contrib.formtools.wizard.views import SessionWizardView
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponseRedirect, HttpResponseForbidden
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.core.exceptions import PermissionDenied
import os
from photologue.models import Photo
from exposition.models import Exposition
from functions.form_check import translit_with_separator
from accounts.models import User
from country.models import Country
from city.models import City
from place_exposition.models import PlaceExposition
from theme.models import Tag, Theme
class LoginRequiredMixin(object):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
if not request.user.organiser:
raise PermissionDenied
return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
# defining different template for every form
TEMPLATES = {
'0': 'client/wizard/first_step.html',
'1': 'client/wizard/second_step.html',
'2': 'client/wizard/third_step.html'
}
class ExpoWizard(LoginRequiredMixin, SessionWizardView):
"""main view that handle all data from 3 forms(steps) and finally create an Exposition"""
# storing temporary files during upload
location = os.path.join(settings.MEDIA_ROOT, 'temp')
file_storage = FileSystemStorage(location, settings.MEDIA_URL)
SUCCESS_URL = "/"
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def done(self, form_list, **kwargs):
# getting data and files
upload_logo = form_list[0].cleaned_data.get('logo')
upload_images = self.request.FILES.getlist(u'2-attachments')
data = self.get_all_cleaned_data()
# creating new exposition
lang = self.request.LANGUAGE_CODE
expo = Exposition.objects.language(lang).create(
name=data.get('name'),
data_begin=data.get('date_start'),
data_end=data.get('date_end'),
main_title=data.get('main_title'),
description=data.get('description'),
products=data.get('products'),
country=Country.objects.language(lang).get(id=data.get('country')),
city=City.objects.language(lang).get(id=data.get('city')),
place=PlaceExposition.objects.language(lang).get(id=data.get('place')),
periodic=data.get('periodic'),
web_page=data.get('web_site'),
logo=data.get('logo'),
foundation_year=data.get('found_year'),
area=data.get('square'),
price_day=data.get('one_day'),
price_all=data.get('all_days'),
price_day_bar=data.get('pre_one_day'),
price_all_bar=data.get('pre_all_days'),
min_area=data.get('min_square'),
registration_payment=data.get('registration_depos'),
application_deadline=data.get('deadline_date'),
min_closed_area=data.get('unequiped'),
min_open_area=data.get('open_square'),
min_closed_equipped_area=data.get('equiped'),
url=translit_with_separator(data.get('name')),
quality_label=0,
audience=0,
creator=User.objects.get(id=self.request.user.id)
)
# adding photo to gallery
photos = []
for i, photo in enumerate(upload_images):
photos.append(Photo.objects.language(self.request.LANGUAGE_CODE).create(
image=photo,
title=data.get(u'pdescr_%i' % i, photo.name))
)
for photo in photos:
expo.upload_photo(photo)
expo.tag = Tag.objects.language(lang).filter(id__in=data.get('tag').split(','))
expo.theme = Theme.objects.language(lang).filter(id__in=data.get('theme'))
# setting bit fields audience and quality_label
self.set_flags(expo, data)
expo.save()
# remove temporary files if it has any
if upload_logo:
self.file_storage.delete(upload_logo.name)
if upload_images:
for f in upload_images:
self.file_storage.delete(f.name)
return HttpResponseRedirect(self.SUCCESS_URL)
@staticmethod
def set_flags(expo, data):
if data['membership1']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.exporating)
if data['membership2']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.rsva)
if data['membership3']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.ufi)
if data['audience1']:
expo.audience = (expo.audience | Exposition.audience.experts)
if data['audience2']:
expo.audience = expo.audience | getattr(Exposition.audience, 'experts and consumers')
if data['audience3']:
expo.audience = expo.audience | (getattr(Exposition.audience, 'general public'))

@ -90,10 +90,7 @@ USE_L10N = False
USE_TZ = False
MEDIA_ROOT = os.path.join(SITE_ROOT, 'media/')
CKEDITOR_UPLOAD_PATH = os.path.join(SITE_ROOT, 'media/upload')
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'standart',
@ -119,11 +116,12 @@ CKEDITOR_CONFIGS = {
}
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(SITE_ROOT, 'media/')
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(SITE_ROOT, 'collected_static')
STATICFILES_DIRS = (
'static',
os.path.join(SITE_ROOT, 'static'),
)
STATICFILES_FINDERS = (
@ -400,7 +398,7 @@ INSTALLED_APPS = (
'south',
'rosetta',
'widget_tweaks',
'raven.contrib.django.raven_compat',
# 'raven.contrib.django.raven_compat',
)
CRONJOBS = [
@ -461,7 +459,6 @@ HAYSTACK_CONNECTIONS = {
"""
THUMBNAIL_DEBUG = DEBUG
THUMBNAIL_ENGINE = "proj.sorlengine.SorlEngine"
THUMBNAIL_FORMAT = "PNG"
@ -531,9 +528,9 @@ PERIODIC = {
}
# sentry
RAVEN_CONFIG = {
'dsn': 'http://eb7e4b632b3543f487386cbe9151b174:0b148a7ed13643c88d3a6b014c3a4f65@sentry.oldmin.org/2',
}
# RAVEN_CONFIG = {
# 'dsn': 'http://eb7e4b632b3543f487386cbe9151b174:0b148a7ed13643c88d3a6b014c3a4f65@sentry.oldmin.org/2',
# }
try:
from local import *

@ -15,7 +15,6 @@ django-haystack==2.3.2
django-hvad==1.2.0
django-model-utils==2.2
django-modeltranslation==0.12
django-multiupload==0.5
django-redis==4.0.0
django-redis-cache==0.13.1
django-rosetta==0.7.6

@ -45,7 +45,7 @@ server {
location /static {
access_log off;
expires max;
root /home/www/proj;
alias /home/www/proj/collected_static;
}
location /media {
@ -57,7 +57,7 @@ server {
location /templates {
access_log off;
expires max;
root /home/www/proj/static;
alias /home/www/proj/collected_static/templates;
}
}

@ -1,5 +1,3 @@
{% with tags=obj.tags %}
{% for tag in tags %}
<a href="{{ obj.catalog }}tag/{{ tag.url }}">{{ tag.name }}</a>{% if forloop.counter != tags|length %},{% endif %}
{% endfor %}
{% endwith %}
{% for tag in obj.tags.all %}
<a href="{{ obj.catalog }}tag/{{ tag.url }}">{{ tag.name }}</a>{% if not forloop.last %},{% endif %}
{% endfor %}

@ -1,72 +0,0 @@
{% load thumbnail %}
{% load i18n %}
{% load template_filters %}
<div class="mcl">
<div id="mp-recent-expo" class="recent-expo">
<ul class="cycle-slideshow"
data-cycle-fx="scrollHorz"
data-cycle-timeout="4000"
data-cycle-prev=".swiper-button-prev"
data-cycle-next=".swiper-button-next"
data-cycle-pause-on-hover="true"
data-cycle-slides="> li"
data-cycle-log="false">
{% for event in events %}
<li>
<div class="re-pict pict-over" >
{% if event.logo %}
<a href="{{ event.get_main_link }}">
{# <img src="{{ event.logo.url }}"> #}
{% thumbnail event.get_preview "220x220" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
</a>
{% endif %}
</div>
<div class="re-body">
<div class="re-info">
<a href="{{ event.get_main_link }}">
<div class="re-title">{{ event.name|safe }}</div>
<div class="re-date">
{% include 'client/includes/index/main_date_block.html' with obj=event %}
</div>
<div class="re-descr" title="{{ event.main_title|safe }}">{{ event.main_title|safe }}</div>
</a>
</div>
<footer>
<div class="re-buttons">
<a class="button blue icon-calendar {% if event|in_calendar:request.user %}removecalendar {% else %}addcalendar {% endif %}" href="{{ event.get_calendar_url }}">{% if event|in_calendar:request.user %}{% trans 'Убрать из календаря' %}{% else %}{% trans 'добавить в календарь' %}{% endif %}</a>
<div class="main-page {% if request.user.is_authenticated%}note-wrap{% else %}note-wrap-disabled{% endif %}">
<a class="button green icon-note {% if note %}active{% endif %} note-button" href="{{ event.get_note_url }}">{% trans 'заметка' %}</a>
<div class="note-overlay">
<form action="">
<textarea name="note_text" class="note-text"> {{ note }}</textarea>
</form>
</div>
</div>
</div>
<div class="re-tags">
{% with tags=event.tags %}
{% for tag in tags %}
<a href="{{ event.get_catalog_url }}tag/{{ tag.url }}">{{ tag }}</a>{% if forloop.counter < tags|length %},{% endif %}
{% endfor %}
{% endwith %}
</div>
</footer>
</div>
</li>
{% endfor %}
</ul>
<div class="re-controls">
<a class="prev swiper-button-prev" href="javascript:void(0)">&lt;</a>
<a class="next swiper-button-next" href="javascript:void(0)">&gt;</a>
</div>
</div>
</div>

@ -1,152 +1,223 @@
{% extends "blank.html" %}
{% load static %}
{% load i18n %}
{% extends "client/blank.html" %}
{% load static i18n %}
{% load thumbnail %}
{% load template_filters %}
{% block styles %}
<style>
.pict-over{width:220px;height:220px;line-height:212px;text-align:center;background:#fff;border-radius:4px;-moz-box-sizing:border-box;box-sizing:border-box;display:block}.pict-over img{max-width:100%;max-height:100%;border-radius:4px;vertical-align:middle}
.pict-over{width:220px;height:220px;line-height:212px;text-align:center;background:#fff;border-radius:4px;-moz-box-sizing:border-box;box-sizing:border-box;display:block}.pict-over img{max-width:100%;max-height:100%;border-radius:4px;vertical-align:middle}
</style>
{% endblock %}
{% block body_class %} class="main-page" {% endblock %}
{% block top %}
<section class="layout mp-top">
<div class="layout-wrap">
<aside>
{% include 'client/includes/menu.html' %}
</aside>
{% include 'client/includes/index/main_events.html' with events=events %}
</div>
</section>
<section class="layout mp-top">
<div class="layout-wrap">
<aside>
{% include 'client/includes/menu.html' %}
</aside>
<div class="mcl">
<div id="mp-recent-expo" class="recent-expo">
<ul class="cycle-slideshow"
data-cycle-fx="scrollHorz"
data-cycle-timeout="4000"
data-cycle-prev=".swiper-button-prev"
data-cycle-next=".swiper-button-next"
data-cycle-pause-on-hover="true"
data-cycle-slides="> li"
data-cycle-log="false">
{% for event in events %}
<li>
<div class="re-pict pict-over" >
{% if event.logo %}
<a href="{{ event.get_main_link }}">
{# <img src="{{ event.logo.url }}"> #}
{% thumbnail event.get_preview "220x220" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
</a>
{% endif %}
</div>
<div class="re-body">
<div class="re-info">
<a href="{{ event.get_main_link }}">
<div class="re-title">{{ event.name|safe }}</div>
<div class="re-date">
{% include 'client/includes/index/main_date_block.html' with obj=event %}
</div>
<div class="re-descr" title="{{ event.main_title|safe }}">{{ event.main_title|safe }}</div>
</a>
</div>
<footer>
<div class="re-buttons">
<a class="button blue icon-calendar {% if event|in_calendar:request.user %}removecalendar {% else %}addcalendar {% endif %}" href="{{ event.get_calendar_url }}">{% if event|in_calendar:request.user %}{% trans 'Убрать из календаря' %}{% else %}{% trans 'добавить в календарь' %}{% endif %}</a>
<div class="main-page {% if request.user.is_authenticated%}note-wrap{% else %}note-wrap-disabled{% endif %}">
<a class="button green icon-note {% if note %}active{% endif %} note-button" href="{{ event.get_note_url }}">{% trans 'заметка' %}</a>
<div class="note-overlay">
<form action="">
<textarea name="note_text" class="note-text"> {{ note }}</textarea>
</form>
</div>
</div>
</div>
<div class="re-tags">
{% with tags=event.tags %}
{% for tag in tags %}
<a href="{{ event.get_catalog_url }}tag/{{ tag.url }}">{{ tag }}</a>{% if forloop.counter < tags|length %},{% endif %}
{% endfor %}
{% endwith %}
</div>
</footer>
</div>
</li>
{% endfor %}
</ul>
<div class="re-controls">
<a class="prev swiper-button-prev" href="javascript:void(0)">&lt;</a>
<a class="next swiper-button-next" href="javascript:void(0)">&gt;</a>
</div>
</div>
</div>
</div>
</section>
{% endblock %}
{% block search %}
{% include 'client/includes/catalog_search_main.html' with search_form=search_form %}
{% include 'client/includes/catalog_search_main.html' with search_form=search_form %}
{% endblock %}
{% block catalog %}
<section class="layout mp-catalog">
<div class="layout-wrap">
<section class="layout mp-catalog">
<div class="layout-wrap">
<aside>
<aside>
{% include 'client/includes/feedback.html' %}
{% include 'client/includes/feedback.html' %}
{% include 'client/includes/online_consult.html' %}
{% include 'client/includes/online_consult.html' %}
{% comment %}
<!-- task EXPO-145-->
{% include 'client/includes/announces.html' %}
{% endcomment %}
{% include 'client/includes/services.html' %}
{% comment %}
<!-- task EXPO-145-->
{% include 'client/includes/announces.html' %}
{% endcomment %}
{% include 'client/includes/services.html' %}
</aside>
</aside>
<div class="mcl">
<div class="mp-catalog-lists">
<div class="mcl">
<div class="mp-catalog-lists">
<div class="mpc-list">
{% include 'client/includes/index/expos.html' with themes=exposition_themes %}
</div>
<div class="mpc-list">
{% include 'client/includes/index/expos.html' with themes=exposition_themes %}
</div>
<div class="mpc-list">
{% include 'client/includes/index/confs.html' with themes=conference_themes %}
</div>
<div class="mpc-list">
{% include 'client/includes/index/confs.html' with themes=conference_themes %}
</div>
</div>
</div>
{% include 'client/includes/banners/main_page_inner.html' %}
</div>
</div>
</div>
</section>
</div>
</section>
{% endblock %}
{% block announces %}
<section class="layout mp-announces">
<div class="layout-wrap">
<aside>
<div class="mp-news-list">
{% include 'client/includes/index/news.html' with news=news_list %}
</div>
</aside>
<div class="mcl">
<div class="mp-photo-gallery">
<section class="layout mp-announces">
<div class="layout-wrap">
<aside>
<div class="mp-news-list">
{% include 'client/includes/index/news.html' with news=news_list %}
</div>
</aside>
<div class="mcl">
<div class="mp-photo-gallery">
{% if main_page_block %}
{{ main_page_block.text|safe }}
{% endif %}
{% comment %}
<div id="mp-photo-gallery" class="photo-gallery swiper-container">
<ul class="swiper-wrapper">
<li class="swiper-slide">
<div class="pg-item">
<div class="pgi-pict"><img src="{% static 'client/img/_del-temp/mp-phg-1.jpg' %}" alt="" /></div>
<div class="pgi-descr clearfix">
<div class="pgi-date"><b>с 1 по 8 августа</b> 2013 года</div>
<div class="pgi-text">Международный фестиваль оперы, музыки, драматических и танцевальных постановок Edinburgh International Festival 2013</div>
</div>
</div>
</li>
<li class="swiper-slide">
<div class="pg-item">
<div class="pgi-pict"><img src="{% static 'client/img/_del-temp/mp-phg-1.jpg' %}" alt="" /></div>
<div class="pgi-descr clearfix">
<div class="pgi-date"><b>с 1 по 8 августа</b> 2013 года</div>
<div class="pgi-text">Международный фестиваль оперы, музыки, драматических и танцевальных постановок Edinburgh International Festival 2013</div>
</div>
</div>
</li>
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
{% endcomment %}
</div>
</div>
</div>
</section>
<div id="mp-photo-gallery" class="photo-gallery swiper-container">
<ul class="swiper-wrapper">
<li class="swiper-slide">
<div class="pg-item">
<div class="pgi-pict"><img src="{% static 'client/img/_del-temp/mp-phg-1.jpg' %}" alt="" /></div>
<div class="pgi-descr clearfix">
<div class="pgi-date"><b>с 1 по 8 августа</b> 2013 года</div>
<div class="pgi-text">Международный фестиваль оперы, музыки, драматических и танцевальных постановок Edinburgh International Festival 2013</div>
</div>
</div>
</li>
<li class="swiper-slide">
<div class="pg-item">
<div class="pgi-pict"><img src="{% static 'client/img/_del-temp/mp-phg-1.jpg' %}" alt="" /></div>
<div class="pgi-descr clearfix">
<div class="pgi-date"><b>с 1 по 8 августа</b> 2013 года</div>
<div class="pgi-text">Международный фестиваль оперы, музыки, драматических и танцевальных постановок Edinburgh International Festival 2013</div>
</div>
</div>
</li>
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
{% endcomment %}
</div>
</div>
</div>
</section>
{% endblock %}
{% block partners %}
<section class="layout mp-partners">
<div class="mpp-wrap">
<header>{% trans 'Наши партнеры:' %}</header>
<ul class="mp-partners-list">
<li><img src="{% static 'client/img/partners/deutsche-messe-2.png' %}" /></li>
<li><img src="{% static 'client/img/partners/ite.png' %}" /></li>
<li><img src="{% static 'client/img/partners/congress_office.png' %}" /></li>
{% comment %}
<li><img src="{% static 'client/img/partners/nurnberg-messe.png' %}" /></li>
{% endcomment %}
<li><img src="{% static 'client/img/partners/reed-exhibitions.png' %}" /></li>
<li><img src="{% static 'client/img/partners/messe-dusseldorf.png' %}" /></li>
</ul>
</div>
</section>
<section class="layout mp-partners">
<div class="mpp-wrap">
<header>{% trans 'Наши партнеры:' %}</header>
<ul class="mp-partners-list">
<li><img src="{% static 'client/img/partners/deutsche-messe-2.png' %}" /></li>
<li><img src="{% static 'client/img/partners/ite.png' %}" /></li>
<li><img src="{% static 'client/img/partners/congress_office.png' %}" /></li>
{% comment %}
<li><img src="{% static 'client/img/partners/nurnberg-messe.png' %}" /></li>
{% endcomment %}
<li><img src="{% static 'client/img/partners/reed-exhibitions.png' %}" /></li>
<li><img src="{% static 'client/img/partners/messe-dusseldorf.png' %}" /></li>
</ul>
</div>
</section>
{% endblock %}
{% block services %}
<section class="layout mp-services">
<div class="layout-wrap">
<aside>
{% include 'client/includes/side_confs.html' %}
</aside>
<div class="mcl">
<div class="mp-reviews-wrap clearfix">
{% include 'client/includes/index/blogs.html' with blogs=blogs %}
</div>
</div>
</div>
</section>
<section class="layout mp-services">
<div class="layout-wrap">
<aside>
{% include 'client/includes/side_confs.html' %}
</aside>
<div class="mcl">
<div class="mp-reviews-wrap clearfix">
{% include 'client/includes/index/blogs.html' with blogs=blogs %}
</div>
</div>
</div>
</section>
{% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/page.index.js' %}"></script>

@ -1,209 +0,0 @@
{% extends 'client/base_catalog.html' %}
{% load static %}
{% load i18n %}
{% block head_scripts %}
<script src="{% static 'js/select/select2.js' %}"></script>
<script src="{% static 'custom_js/wizard.js' %}"></script>
{% endblock %}
{% block content_list %}
{{ form.errors }}
<div class="page-body clearfix">
<div class="set-sect p-form adm-form">
<div class="set-sect-title clearfix">
{{ wizard.form.media }}
<h3>{% blocktrans with step=wizard.steps.step1%}Шаг {{ step }}. Основная информация{% endblocktrans %}</h3>
</div>
<form action="" enctype="multipart/form-data" method="post">{% csrf_token %}
{{ wizard.management_form }}
{% with wizard.form as form %}
<div class="adm-form-body">
<div class="mf-line ">
<div class="mf-field">
<label>{% trans "Тематика:" %}</label>
{{ form.theme }}
</div>
<div class="mf-field">
<label>{% trans "Теги:" %}</label>
{{ form.tag }}
</div>
</div>
<hr/>
<h2>{% trans "Описание выставки" %}</h2>
<div class="mf-line">
<div class="mf-field">
{{ form.name }}
</div>
</div>
<div class="mf-line full-width">
<div class="mf-field">
{{ form.main_title }}
</div>
</div>
<div class="mf-line full-width">
<div class="mf-field">
{{ form.description }}
</div>
</div>
<hr/>
<div id="dates-range" class="mf-line">
<label class="h2">{% trans "Даты проведения:" %}</label>
<div class="mf-field">
<div class="period">
<div class="pwf-field">
<label>{% trans "с" %}</label>
{{ form.date_start }}
</div>
<div class="pwf-field">
<label>{% trans "по" %}</label>
{{ form.date_end }}
</div>
</div>
</div>
</div>
<hr/>
<div class="mfs-location">
<h2>{% trans "Локация" %}</h2>
<div class="mf-line">
<div class="mf-field">
<h3>{% trans "Место проведения:" %}</h3>
{{ form.place }}
</div>
</div>
<div class="mf-line">
<div class="mf-field">
<h3>{% trans "Страна:" %}</h3>
{{ form.country }}
</div>
<div class="mf-field">
<h3>{% trans "Город:" %}</h3>
{{ form.city }}
</div>
</div>
</div>
<hr/>
<div class="mfs-additional">
<h2>{% trans "Дополнительная информация" %}</h2>
<div class="mf-line mf-targets">
<label>{% trans "Аудитория:" %}</label>
<div class="mf-field">
<div class="clearfix">
<div class="mff-col">
<label class="checkbox">{{ form.audience1 }}{% trans "специалисты" %}</label>
<label class="checkbox">{{ form.audience2 }}{% trans "специалисты и потребители" %}</label>
<label class="checkbox">{{ form.audience3 }}{% trans "широкая публика" %}</label>
</div>
<div class="mff-col">
{% trans "Периодичность:" %}
{{ form.periodic }}
</div>
</div>
<hr/>
</div>
</div>
<div class="mf-line mf-membership">
<label>{% trans "Членства и знаки качества:" %}</label>
<div class="mf-field">
<label class="checkbox">{{ form.membership1 }}Exporating</label>
<label class="checkbox">{{ form.membership2 }}RSVA</label>
<label class="checkbox">{{ form.membership3 }}UFI</label>
<hr/>
</div>
</div>
<div class="mf-line mf-prod">
<div class="mf-field">
{{ form.web_site }}
{{ form.products }}
<hr/>
</div>
</div>
<div class="mf-line mf-time">
<label>{% trans "Время работы:" %}</label>
<div id="work-time" class="mf-field">
<div class="w-time">
<div class="w-time-wrap">
<label>c</label>
{{ form.time_start }}
</div>
<div class="w-time-wrap">
<label>до</label>
{{ form.time_end }}
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="mf-line mf-logo">
<label class="h2">{% trans "Логотип:" %}</label>
<div class="mf-field">
<div class="input-file clearfix">
{{ form.logo }}
</div>
</div>
</div>
<hr/>
</div>
<div class="a-bot-buttons-line clearfix">
<div class="abb-right">
<input class="button big orange a-more" type="submit" value="Дале >"/>
</div>
</div>
</form>
{% endwith %}
</div>
<div class="set-sect p-form adm-form not-active">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 2. Статистика и условия участия" %}</h3>
</div>
</div>
<div class="set-sect p-form adm-form not-active">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 3. Добавление фото" %}</h3>
</div>
</div>
</div>
<hr/>
{% endblock %}

@ -1,259 +0,0 @@
{% extends 'client/base_catalog.html' %}
{% load static %}
{% load i18n %}
{% block head_scripts %}
<script src="{% static 'js/select/select2.js' %}"></script>
<script>
$(document).ready(function () {
$('select').select2({
width: 'element',
allowClear: true
});
});
</script>
{% endblock %}
{% block content_list %}
{{ form.errors }}
<div class="page-title">
<h1>{% trans "Добавить событие" %}</h1>
</div>
<div class="page-body clearfix">
<form action="" method="post">{% csrf_token %}
{{ wizard.form.media }}
<div class="set-sect p-form adm-form passed">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 1. Основная информация" %}</h3>
<div class="afh-right">
<button name="wizard_goto_step" type="submit" class="button icon-edit"
value="{{ wizard.steps.prev }}">{% trans "изменить" %}
</button>
</div>
</div>
</div>
<div class="set-sect p-form adm-form">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 2. Статистика и условия участия" %}</h3>
<div class="afh-right">
<div class="sst-info">{% blocktrans %}<b>+ 0,9 баллов</b> к рейтингу{% endblocktrans %}</div>
</div>
</div>
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{{ form }}
{% endfor %}
{% else %}
{% with wizard.form as form %}
<hr/>
<div class="mfs-additional mf-stat">
<div class="mf-line mf-prod mf-short-input">
<label>{% trans "Год основания:" %}</label>
{{ form.found_year }}
<div class="mf-field">
</div>
</div>
<hr/>
<h2>{% trans "Стоимость посещения и участия" %}</h2>
<div class="e-price-wrap">
<div class="epr-layout">
<div class="eprl-col">
<div class="eprl-col-wrap">
<div class="epr-subtitle">{% trans "Стоимость билетов" %}</div>
<div class="tp-wrap">
<ul class="pr-list">
<li>
{{ form.one_day }}
<select name="oneDayCurrency1">
<option value="rur">{% trans "руб" %}</option>
<option value="usd">usd</option>
<option value="eur">eur</option>
</select>
</li>
<li>
{{ form.all_days }}
<select name="allDaysCurrency1">
<option value="rur">{% trans "руб" %}</option>
<option value="usd">usd</option>
<option value="eur">eur</option>
</select>
</li>
</ul>
<div class="tp-descr">{% trans "Предварительная регистрация" %}</div>
</div>
<hr/>
<div class="tp-wrap">
<ul class="pr-list">
<li>
{{ form.pre_one_day }}
<select name="oneDayCurrency2">
<option value="1">{% trans "руб" %}</option>
<option value="2">usd</option>
<option value="3">eur</option>
</select>
</li>
<li>
{{ form.pre_all_days }}
<select name="allDaysCurrency2">
<option value="1">{% trans "руб" %}</option>
<option value="2">usd</option>
<option value="3">eur</option>
</select>
</li>
</ul>
<div class="tp-descr grey">{% trans "Регистрация на&nbsp;стойке" %}</div>
</div>
</div>
</div>
<div class="eprl-col">
<div class="eprl-col-wrap">
<div class="epr-subtitle">{% trans "Стоимость аренды 1м²" %}</div>
<ul class="pr-list">
<li>
{{ form.equiped }}
<select name="areaCurrency1">
<option value="1">руб</option>
<option value="2">usd</option>
<option value="3">eur</option>
</select>
</li>
<li>
{{ form.unequiped }}
<select name="areaCurrency2">
<option value="1">{% trans "руб" %}</option>
<option value="2">usd</option>
<option value="3">eur</option>
</select>
</li>
<li>
{{ form.open_square }}
<select name="areaCurrency3">
<option value="1">{% trans "руб" %}</option>
<option value="2">usd</option>
<option value="3">eur</option>
</select>
</li>
</ul>
<hr/>
<div class="mf-line mf-min-area">
<label>{% trans "Минимальная площадь:" %}</label>
<div class="mf-field">
{{ form.min_square }}
м²
</div>
</div>
<hr/>
<div class="mf-line mf-reg-payment">
<label>{% trans "Регистрационный взнос:" %}</label>
<div class="mf-field">
{{ form.registration_depos }}
<select name="areaCurrency3">
<option value="1">{% trans "руб" %}</option>
<option value="2">usd</option>
<option value="3">eur</option>
</select>
</div>
</div>
<hr/>
<div class="mf-line mf-deadline">
<label>{% trans "Крайний срок подачи заявки:" %}</label>
<div class="mf-field">
<div class="period">
<div class="pwf-field">
{{ form.deadline_date }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="a-bot-buttons-line clearfix">
<div class="abb-left">
<div class="mfpl-button-line">
{# <div class="mfpl-button">#}
{# <a class="button big grey a-more" href="#">пропустить этот шаг</a>#}
{# </div>#}
<div class="mfpl-text">
<p>{% trans "более полная информация повышает рейтинг вашего мероприятия и позволяет ранжировать его выше других" %}</p>
</div>
</div>
</div>
<button class="button big orange a-more" type="submit">{% trans "Дале" %}</button>
</div>
</div>
<div class="set-sect p-form adm-form passed">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 3. Добавление фото" %}</h3>
</div>
</div>
</form>
</div>
{% endwith %}
{% endif %}
{% endblock %}

@ -1,147 +0,0 @@
{% extends "client/base_catalog.html" %}
{% load i18n %}
{% block styles %}
<style>
.thumb {
height: 175px;
border: 1px solid #000;
}
</style>
{% endblock %}
{% block content_list %}
{{ wizard.form.media }}
<div class="page-title">
<h1>{% trans "Добавить событие" %}</h1>
</div>
<div class="page-body clearfix">
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
<div class="set-sect p-form adm-form passed">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 1. Основная информация" %}</h3>
<div class="afh-right">
<button name="wizard_goto_step" type="submit" class="button icon-edit"
value="{{ wizard.steps.first }}">{% trans "изменить" %}
</button>
</div>
</div>
</div>
<div class="set-sect p-form adm-form passed">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 2. Статистика и условия участия" %}</h3>
<div class="afh-right">
<button name="wizard_goto_step" type="submit" class="button icon-edit"
value="{{ wizard.steps.prev }}">{% trans "изменить" %}
</button>
</div>
</div>
</div>
<div class="set-sect p-form adm-form">
<div class="set-sect-title clearfix">
<h3>{% trans "Шаг 3. Добавление фото" %}</h3>
<div class="afh-right">
<div class="sst-info">{% blocktrans %}<b>+ 1,2 балла</b> к рейтингу{% endblocktrans %}</div>
</div>
</div>
{{ form.errors }}
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{{ form }}
{% endfor %}
{% else %}
{% with wizard.form as form %}
<hr/>
<div class="mf-photos-list">
<div class="mfpl-button-line">
<div class="mfpl-button">
{{ form.attachments }}
</div>
<div class="mfpl-text">
<p>{% trans "более полная информация повышает рейтинг вашего мероприятия и позволяет ранжировать его выше других" %}</p>
</div>
</div>
</div>
<ul id="list"></ul>
<div class="a-bot-buttons-line clearfix">
<div class="abb-left">
<button class="button big grey a-more" type="submit">{% trans "пропустить этот шаг" %}</button>
</div>
<div class="abb-right">
<button id="next" class="button big orange a-more" type="submit">{% trans "далее" %}</button>
</div>
<div id="res"> </div>
</div>
{% endwith %}
{% endif %}
</div>
</form>
</div>
<!-- for response debugging -->
{% comment %} <script>
$("#next").click(function(e){
e.preventDefault();
$.ajax({url: '/wizard/ajax/', success: function(result){
$("#res").html(result);
}});
});
</script>{% endcomment %}
<script type="text/javascript">
var cnt = 0;
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function (theFile) {
return function (e) {
// Render thumbnail.
var div = document.createElement('div');
div.innerHTML = ['<li><div class="mfpli-pict"> <img class="thumb" src="', e.target.result,
'" title="', theFile.name,
'"/></div>', '<div class="mfpli-body"> <div class="mf-line full-width"> <div class="mf-field"> <textarea name="pdescr_',
cnt.toString(), '" cols="30" rows="10" placeholder="Описание"></textarea></div></div>',
'</li>'].join('');
cnt +=1 ;
document.getElementById('list').insertBefore(div, null);
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
{% endblock %}

@ -1,25 +0,0 @@
{% extends 'client/base_catalog.html' %}
{% load i18n %}
{% block content_list %}
{{ wizard.form.media }}
<p>{% blocktrans with step=wizard.steps.step1 count=wizard.steps.count %}Step {{ step }} of {{ count }}{% endblocktrans %}</p>
<form action="" method="post">{% csrf_token %}
<table>
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{{ form }}
{% endfor %}
{% else %}
{{ wizard.form }}
{% endif %}
</table>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}"> "{% trans "first step" %}" </button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}"> "{% trans "prev step" %}"</button>
{% endif %}
<input type="submit" value= "submit"/>
</form>
{% endblock %}
Loading…
Cancel
Save