удалил комментарии, встроил стороние

remotes/origin/t90_expo_page
Slava Kyrachevsky 9 years ago
parent e99f3b011e
commit c3143027c5
  1. 1
      apps/article/models.py
  2. 3
      apps/article/views.py
  3. 0
      apps/comments/__init__.py
  4. 97
      apps/comments/admin.py
  5. 22
      apps/comments/forms.py
  6. 73
      apps/comments/matfilter.py
  7. 452
      apps/comments/migrations/0001_initial.py
  8. 0
      apps/comments/migrations/__init__.py
  9. 37
      apps/comments/models.py
  10. 16
      apps/comments/tests.py
  11. 55
      apps/comments/views.py
  12. 2
      apps/conference/models.py
  13. 3
      apps/conference/views.py
  14. 2
      apps/exposition/models.py
  15. 3
      apps/exposition/views.py
  16. 1
      proj/settings.py
  17. 37
      templates/client/article/article.html
  18. 548
      templates/client/exposition/exposition_detail.html
  19. 12
      templates/client/includes/comments.html
  20. 38
      templates/client/includes/conference/conference_partner.html
  21. 10
      templates/client/includes/event_steps.html
  22. 442
      templates/client/includes/exposition/expo_paid.html
  23. 577
      templates/client/includes/exposition/exposition_object.html

@ -99,7 +99,6 @@ class Article(TranslatableModel):
)
files = generic.GenericRelation('file.FileModel', content_type_field='content_type', object_id_field='object_id')
comments = generic.GenericRelation('comments.Comment')
class Meta:
ordering = ['-publish_date']

@ -10,7 +10,6 @@ from functions.custom_views import ListView
from theme.models import Tag, Theme
from meta.views import MetadataMixin
from comments.views import CommentMixin
from .models import Article
from .forms import BlogFilterForm, NewsFilterForm
@ -149,7 +148,7 @@ class BlogList(MetadataMixin, ListView):
return context
class BlogDetail(CommentMixin, MetadataMixin, DetailView):
class BlogDetail(MetadataMixin, DetailView):
model = Article
slug_field = 'slug'
template_name = 'client/article/article.html'

@ -1,97 +0,0 @@
# -*- coding: utf-8 -*-
from functools import update_wrapper, partial
from django.contrib import admin
from django.contrib.admin.util import unquote
from django.conf.urls import patterns, url
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse_lazy, reverse
from django.http import Http404
from django.utils.translation import ugettext_lazy as _
from django.utils.html import escape
from django.utils.encoding import force_text
from functions.admin import DefaultAdmin
from functions.http import JsonResponse
from .models import Comment
class CommentAdmin(DefaultAdmin):
class Media:
js = (
"js/jquery.truncator.js",
"admin/js/comments_manage.js",
)
# css = {
# 'all': ("admin/css/comments_manage.css",),
# }
list_display = ['text', 'ip', 'user', 'hide']
list_select_related = True
list_filter = ('hidden', )
date_hierarchy = 'created'
readonly_fields = ['ip', 'created', 'parent', 'user']
fieldsets = (
(None,
{'fields': (('created', 'hidden',),
'ip',
'user',
'text', )}),
)
def hide(self, obj):
body = u'<img src="{url}" alt={alt}>' \
u'&nbsp;<a class="action" href="{href}">{label}</a>' \
u'&nbsp;|&nbsp;<a class="action" href="{href2}">{label2}</a>'\
.format(**self.get_yesno_image_data(obj))
return body
hide.short_description = _(u'Модерирование')
hide.allow_tags = True
def urls(self):
urlpatterns = self.get_urls()
def wrap(view):
def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
return update_wrapper(wrapper, view)
info = self.model._meta.app_label, self.model._meta.module_name
_urlpatterns = patterns('',
url(r'^(?P<object_id>\d+)/ajax/(?P<action>hide|show|banro|unbanro)/$',
wrap(self.ajax_view),
name='%s_%s_ajax' % info),
)
return _urlpatterns + urlpatterns
urls = property(urls)
def get_yesno_image_data(self, obj):
return {
'url': '/static/admin/img/icon-{0}.gif'.format('no' if obj.hidden else 'yes'),
'alt': str(not obj.hidden),
'href': reverse('admin:comments_comment_ajax', args=[obj.id, 'hide' if not obj.hidden else 'show']),
'label': unicode(_(u'Опубликовать') if obj.hidden else _(u'Скрыть')),
'href2': reverse('admin:comments_comment_ajax', args=[obj.id, 'banro' if not obj.user.readonly else 'unbanro']),
'label2': unicode(_(u'Снять RO') if obj.user.readonly else _(u'Наложить RO')),
}
def ajax_view(self, request, object_id, extra_context=None, *args, **kwargs):
"The 'change' admin view for this model."
action = kwargs.get('action')
model = self.model
opts = model._meta
obj = self.get_object(request, unquote(object_id))
if not self.has_change_permission(request, obj) or not request.is_ajax():
raise PermissionDenied
if obj is None:
raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)})
if action in ['hide', 'show']:
obj.hidden = True if action == 'hide' else False
obj.save()
else:
obj.user.readonly = True if action == 'banro' else False
obj.user.save()
return JsonResponse(dict({'success': True}, **self.get_yesno_image_data(obj)))
ajax_view.csrf_exempt = True
admin.site.register(Comment, CommentAdmin)

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
from django import forms
from django.utils.translation import ugettext as _
from functions.forms import EmptySelect
from .models import Comment
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['parent', 'text']
widgets = dict(parent=EmptySelect)
def save(self, commit=True):
obj = super(CommentForm, self).save(commit=False)
return obj
def clean(self):
if getattr(self._user, 'readonly', True):
raise forms.ValidationError(_(u'Вы не можете оставлять комментарии. Вам выдано ограничение ReadOnly.'))
return super(CommentForm, self).clean()

@ -1,73 +0,0 @@
# -*- encoding: utf-8 -*-
version = "0.0.1"
version_info = (0,0,1)
"""
Модуль для поиска нецензурных слов (мата) в тексте
Лицензия: LGPL (http://www.opensource.org/licenses/lgpl-2.1.php)
Пример:
from matfilter import matfilter
some_data = "любой текст для проверки"
if len(matfilter(some_data)):
print "Пожалуйста, уберите из текста нецензурные выражения."
Источник:
https://bitbucket.org/spanasik/django-matfilter
"""
import re
PATTERNS = (ur"(\b[сs]{1}[сsц]{0,1}[uуy](?:[ч4]{0,1}[иаakк][^ц])\w*\b)",
ur"(\b(?!пло|стра|[тл]и)(\w(?!(у|пло)))*[хx][уy](й|йа|[еeё]|и|я|ли|ю)(?!га)\w*\b)",
ur"(\b(п[oо]|[нз][аa])*[хx][eе][рp]\w*\b)",
ur"(\b[мm][уy][дd]([аa][кk]|[oо]|и)\w*\b)",
ur"(\b\w*д[рp](?:[oо][ч4]|[аa][ч4])(?!л)\w*\b)",
ur"(\b(?!(?:кило)?[тм]ет)(?!смо)[а-яa-z]*(?<!с)т[рp][аa][хx]\w*\b)",
ur"(\b[к|k][аaoо][з3z]+[eе]?ё?л\w*\b)",
ur"(\b(?!со)\w*п[еeё]р[нд](и|иc|ы|у|н|е|ы)\w*\b)",
ur"(\b\w*[бп][ссз]д\w+\b)",
ur"(\b([нnп][аa]?[оo]?[xх])\b)",
ur"(\b([аa]?[оo]?[нnпбз][аa]?[оo]?)?([cс][pр][аa][^зжбсвм])\w*\b)",
ur"(\b\w*([оo]т|вы|[рp]и|[оo]|и|[уy]){0,1}([пnрp][iиеeё]{0,1}[3zзсcs][дd])\w*\b)",
ur"(\b(вы)?у?[еeё]?би?ля[дт]?[юоo]?\w*\b)",
ur"(\b(?!вело|ски|эн)\w*[пpp][eеиi][дd][oaоаеeирp](?![цянгюсмйчв])[рp]?(?![лт])\w*\b)",
ur"(\b(?!в?[ст]{1,2}еб)(?:(?:в?[сcз3о][тяaа]?[ьъ]?|вы|п[рp][иоo]|[уy]|р[aа][з3z][ьъ]?|к[оo]н[оo])?[её]б[а-яa-z]*)|(?:[а-яa-z]*[^хлрдв][еeё]б)\b)",
ur"(\b[з3z][аaоo]л[уy]п[аaeеин]\w*\b)",)
def CheckMatches(matches):
if len(matches):
result = []
for match in matches:
if type(match) == tuple:
result.append(match[0].strip())
else:
result.append(match.strip())
return result
return ()
def matfilter(text, npattern=None):
"""Находит в тексте мат.
Возвращает список найденных слов"""
text = text.replace("\r\n", " ")
text = text.replace("\n", " ")
if npattern is not None:
result = CheckMatches(re.findall(
PATTERNS[npattern], text,
re.IGNORECASE | re.VERBOSE | re.UNICODE | re.DOTALL))
if len(result):
return result
else:
for pattern in PATTERNS:
result = CheckMatches(re.findall(
pattern, text,
re.IGNORECASE | re.VERBOSE | re.UNICODE | re.DOTALL))
if len(result):
return result
return ()

@ -1,452 +0,0 @@
# -*- coding: utf-8 -*-
from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding model 'Comment'
db.create_table(u'comments_comment', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('ip', self.gf('django.db.models.fields.GenericIPAddressField')(max_length=39, null=True, blank=True)),
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('hidden', self.gf('django.db.models.fields.BooleanField')(default=False)),
('parent', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['comments.Comment'], null=True, blank=True)),
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['accounts.User'])),
('text', self.gf('django.db.models.fields.TextField')()),
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
))
db.send_create_signal(u'comments', ['Comment'])
def backwards(self, orm):
# Deleting model 'Comment'
db.delete_table(u'comments_comment')
models = {
u'accounts.user': {
'Meta': {'ordering': "['-rating']", 'object_name': 'User'},
'blocked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'company': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'users'", 'null': 'True', 'to': u"orm['company.Company']"}),
'date_joined': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'date_registered': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'db_index': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'organiser': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['organiser.Organiser']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.PROTECT', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'position': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '100'}),
'readonly': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'translator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['translator.Translator']", 'blank': 'True', 'unique': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'blank': 'True'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'})
},
u'auth.group': {
'Meta': {'object_name': 'Group'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
u'auth.permission': {
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
u'city.city': {
'Meta': {'unique_together': '()', 'object_name': 'City', 'index_together': '()'},
'code_IATA': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['directories.Iata']", 'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cities'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['country.Country']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'old_url': ('django.db.models.fields.CharField', [], {'max_length': '55'}),
'phone_code': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'population': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
},
u'comments.comment': {
'Meta': {'object_name': 'Comment'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ip': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39', 'null': 'True', 'blank': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comments.Comment']", 'null': 'True', 'blank': 'True'}),
'text': ('django.db.models.fields.TextField', [], {}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
},
u'company.company': {
'Meta': {'ordering': "['-rating', 'id']", 'unique_together': '()', 'object_name': 'Company', 'index_together': '()'},
'address': ('functions.custom_fields.LocationField', [], {'blank': 'True'}),
'blocked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['country.Country']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'created_company'", 'null': 'True', 'to': u"orm['accounts.User']"}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'facebook': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '100'}),
'staff_number': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
'tag': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Tag']"}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Theme']"}),
'twitter': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
'vk': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
},
u'country.area': {
'Meta': {'ordering': "['translations__name']", 'unique_together': '()', 'object_name': 'Area', 'index_together': '()'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'country.country': {
'Meta': {'ordering': "['translations__name']", 'unique_together': '()', 'object_name': 'Country', 'index_together': '()'},
'area': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Area']"}),
'big_cities': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'cities'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['city.City']"}),
'capital': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'capital'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'country_code': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'currency': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['directories.Currency']", 'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'language': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['directories.Language']", 'null': 'True', 'blank': 'True'}),
'latitude': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'longitude': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'old_url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '55'}),
'phone_code': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'population': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'teritory': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'time_delivery': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
'timezone': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
},
u'directories.currency': {
'Meta': {'unique_together': '()', 'object_name': 'Currency', 'index_together': '()'},
'code': ('django.db.models.fields.CharField', [], {'max_length': '3'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'directories.iata': {
'Meta': {'object_name': 'Iata'},
'airport': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'code': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'directories.language': {
'Meta': {'unique_together': '()', 'object_name': 'Language', 'index_together': '()'},
'code': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'language': ('django.db.models.fields.CharField', [], {'max_length': '255'})
},
u'expobanner.banner': {
'Meta': {'ordering': "['sort']", 'object_name': 'Banner'},
'alt': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'cookie': ('django.db.models.fields.CharField', [], {'default': "'expo_b_default_popup'", 'max_length': '30', 'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['country.Country']", 'null': 'True', 'blank': 'True'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'customer': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Customer']", 'null': 'True', 'blank': 'True'}),
'flash': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2017, 1, 19, 0, 0)'}),
'group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'banners'", 'null': 'True', 'to': u"orm['expobanner.BannerGroup']"}),
'html': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'img': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
'link': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'often': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1', 'null': 'True', 'blank': 'True'}),
'paid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'popup': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'sort': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '500'}),
'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'to': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
'urls': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'url_banners'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['expobanner.URL']"})
},
u'expobanner.bannergroup': {
'Meta': {'ordering': "['name']", 'object_name': 'BannerGroup'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'height': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
'speed': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '2000'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'})
},
u'expobanner.customer': {
'Meta': {'ordering': "['name']", 'object_name': 'Customer'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
},
u'expobanner.top': {
'Meta': {'ordering': "['position']", 'object_name': 'Top'},
'base_catalog': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'catalog': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'cities': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'top_in_set'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['city.City']"}),
'country': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['country.Country']", 'null': 'True', 'blank': 'True'}),
'excluded_cities': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['city.City']", 'null': 'True', 'blank': 'True'}),
'excluded_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Tag']", 'null': 'True', 'blank': 'True'}),
'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2017, 1, 19, 0, 0)'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'link': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Banner']"}),
'months': ('functions.custom_fields.MonthMultiSelectField', [], {'default': 'None', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
'position': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2', 'null': 'True', 'blank': 'True'}),
'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
'to': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
'years': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
},
u'expobanner.url': {
'Meta': {'ordering': "['-created_at']", 'object_name': 'URL'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'regex': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'site_urls'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['sites.Site']"}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.CharField', [], {'max_length': '2048'})
},
u'file.filemodel': {
'Meta': {'unique_together': '()', 'object_name': 'FileModel', 'index_together': '()'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']", 'null': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'file_path': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'file_type': ('functions.custom_fields.EnumField', [], {'default': "'PDF'", 'values': "('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF')", 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'img_height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'img_width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'purpose': ('functions.custom_fields.EnumField', [], {'default': "'photo'", 'values': "['photo', 'flat', 'logo', 'map', 'scheme teritory', 'diplom', 'preview', 'preview2']"})
},
u'organiser.organiser': {
'Meta': {'unique_together': '()', 'object_name': 'Organiser', 'index_together': '()'},
'active': ('django.db.models.fields.NullBooleanField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
'address': ('functions.custom_fields.LocationField', [], {'null': 'True', 'blank': 'True'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['city.City']", 'null': 'True', 'on_delete': 'models.PROTECT', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Country']", 'null': 'True', 'on_delete': 'models.PROTECT', 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'events_number': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'facebook': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'place_conference': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'organiser_place_conference'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['place_conference.PlaceConference']"}),
'place_exposition': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'organiser_place_exposition'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['place_exposition.PlaceExposition']"}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'staff_number': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'tag': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Tag']", 'null': 'True', 'blank': 'True'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
'twitter': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
'vk': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'photologue.gallery': {
'Meta': {'ordering': "['-date_added']", 'unique_together': '()', 'object_name': 'Gallery', 'index_together': '()'},
'date_added': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'photos': ('sortedm2m.fields.SortedManyToManyField', [], {'blank': 'True', 'related_name': "'galleries'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['photologue.Photo']"}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '200'}),
'tags': ('photologue.models.TagField', [], {'max_length': '255', 'blank': 'True'})
},
u'photologue.photo': {
'Meta': {'ordering': "['sort']", 'unique_together': '()', 'object_name': 'Photo', 'index_together': '()'},
'crop_from': ('django.db.models.fields.CharField', [], {'default': "'center'", 'max_length': '10', 'blank': 'True'}),
'date_added': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'effect': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'photo_related'", 'null': 'True', 'to': u"orm['photologue.PhotoEffect']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '200'}),
'sort': ('django.db.models.fields.PositiveIntegerField', [], {'default': '10', 'null': 'True', 'db_index': 'True'}),
'tags': ('photologue.models.TagField', [], {'max_length': '255', 'blank': 'True'}),
'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['photologue.UserMark']", 'null': 'True', 'symmetrical': 'False'}),
'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
},
u'photologue.photoeffect': {
'Meta': {'object_name': 'PhotoEffect'},
'background_color': ('django.db.models.fields.CharField', [], {'default': "'#FFFFFF'", 'max_length': '7'}),
'brightness': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'color': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'contrast': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'filters': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
'reflection_size': ('django.db.models.fields.FloatField', [], {'default': '0'}),
'reflection_strength': ('django.db.models.fields.FloatField', [], {'default': '0.6'}),
'sharpness': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'transpose_method': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
},
u'photologue.usermark': {
'Meta': {'object_name': 'UserMark'},
'height': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'left': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
'top': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'marks'", 'to': u"orm['accounts.User']"}),
'width': ('django.db.models.fields.PositiveSmallIntegerField', [], {})
},
u'place_conference.placeconference': {
'Meta': {'unique_together': '()', 'object_name': 'PlaceConference', 'index_together': '()'},
'address': ('functions.custom_fields.LocationField', [], {}),
'amount_halls': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'banquet_hall': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'catering': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'place_conferences'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'conference_call': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Country']", 'on_delete': 'models.PROTECT'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'exp_hall_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'exposition_hall': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'hotel': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'multimedia_equipment': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'total_capacity': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'translate_equipment': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'type': ('functions.custom_fields.EnumField', [], {'default': "'Convention centre'", 'values': "['Convention centre', 'Exposition centre']"}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
'video_link': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'virtual_tour': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'wifi': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
},
u'place_exposition.placeexposition': {
'Meta': {'ordering': "['-rating', 'id']", 'unique_together': '()', 'object_name': 'PlaceExposition', 'index_together': '()'},
'address': ('functions.custom_fields.LocationField', [], {}),
'bank': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'business_centre': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'cafe': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'children_room': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'place_expositions'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'closed_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'conference_centre': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Country']", 'on_delete': 'models.PROTECT'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'disabled_service': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'event_in_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'mobile_application': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'online_registration': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'open_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'parking': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'partner': ('django.db.models.fields.NullBooleanField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'photogallery': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['photologue.Gallery']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'press_centre': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'terminals': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'total_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'total_halls': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'total_pavilions': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'type': ('functions.custom_fields.EnumField', [], {'default': "'Exposition complex'", 'values': "['Exposition complex', 'Convention centre', 'Exposition centre']"}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'virtual_tour': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'wifi': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
},
u'sites.site': {
'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
u'theme.tag': {
'Meta': {'unique_together': '()', 'object_name': 'Tag', 'index_together': '()'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'theme': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tags'", 'on_delete': 'models.PROTECT', 'to': u"orm['theme.Theme']"}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
},
u'theme.theme': {
'Meta': {'unique_together': '()', 'object_name': 'Theme', 'index_together': '()'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'main_page_conf': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
'main_page_expo': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'types': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
},
u'translator.translator': {
'Meta': {'unique_together': '()', 'object_name': 'Translator', 'index_together': '()'},
'birth': ('django.db.models.fields.DateField', [], {}),
'car': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'gender': ('functions.custom_fields.EnumField', [], {'default': "'male'", 'values': "('male', 'female')"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
}
}
complete_apps = ['comments']

@ -1,37 +0,0 @@
# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext_lazy as _
from accounts.models import User
# from core.utils import UCrypto
class Comment(models.Model):
class Meta:
verbose_name = u'Комментарий'
verbose_name_plural = u'Комментарии'
get_latest_by = 'created'
ip = models.GenericIPAddressField(_(u'IP address'), unpack_ipv4=True, blank=True, null=True)
created = models.DateTimeField(_(u'дата создания'), auto_now_add=True)
hidden = models.BooleanField(_(u'скрыть'), default=False, help_text=_(u'Будет скрыто, если отмечено'))
parent = models.ForeignKey('self', verbose_name=_(u'Родительский комментарий'), null=True, blank=True)
user = models.ForeignKey(User, verbose_name=_(u'Пользователь'))
text = models.TextField(_(u'сообщение'))
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def get_name(self):
return self.user.get_full_name()
def get_date(self):
return self.created.strftime('%d %B %Y %H:%M')
def __unicode__(self):
return self.get_date()

@ -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,55 +0,0 @@
# -*- coding: utf-8 -*-
from django.views.generic.edit import FormMixin
from functions.http import JsonResponse
from .forms import CommentForm
class CommentMixin(FormMixin):
form_class = CommentForm
def get_comment_form(self):
form_class = self.get_form_class()
form = self.get_form(form_class)
form._user = self.request.user
return form
def post(self, request, *args, **kwargs):
self.commentform = None
if request.method == 'POST' and request.is_ajax():
self.commentform = self.get_comment_form()
if self.commentform.is_valid():
self.object = self.get_object()
self.save_comment()
return JsonResponse({'success': True})
else:
return JsonResponse({'success': False, 'errors': self.commentform.errors})
return self.get(request, *args, **kwargs)
def save_comment(self):
comment = self.commentform.save(commit=False)
comment.user_id = self.request.user.pk
comment.content_object = self.object
comment.ip = self.request.META['REMOTE_ADDR']
comment.save()
def get_context_data(self, **kwargs):
context = super(CommentMixin, self).get_context_data(**kwargs)
self.commentform = self.get_comment_form()
if self.request.method == 'POST' and self.commentform.is_valid():
self.save_comment()
context['commentform'] = self.commentform
_comments = list(self.object.comments.filter(hidden=False))
comments = {x.pk: x for x in filter(lambda x: x.parent is None, _comments)}
for comment in filter(lambda x: x.parent is not None, _comments):
try:
p = comments[comment.parent_id]
if hasattr(p, 'childs'):
p.childs.append(comment)
else:
p.childs = [comment]
except IndexError:
pass
context['comments'] = comments.values()
return context

@ -141,8 +141,6 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin):
_(u'Минимальная цена'), choices=PRICE_EUR, blank=True, null=True, db_index=True)
price_eur = models.PositiveIntegerField(verbose_name=_(u'Цена в евро'), blank=True, null=True)
comments = generic.GenericRelation('comments.Comment')
def __unicode__(self):
return self.lazy_translation_getter('name', unicode(self.pk))

@ -19,7 +19,6 @@ from django.utils.translation import ugettext as _
from django.views.generic import DetailView
from django.views.generic.edit import FormMixin
from comments.views import CommentMixin
from functions.cache_mixin import CacheMixin, JitterCacheMixin
from functions.custom_views import ListView, ReverseOrderMixin
from functions.views_help import get_side_items
@ -432,7 +431,7 @@ class ConferenceServiceView(FormMixin, DetailView):
return self.initial.copy()
class ConferenceDetail(ObjectStatMixin, CommentMixin, JitterCacheMixin, MetadataMixin, DetailView):
class ConferenceDetail(ObjectStatMixin, JitterCacheMixin, MetadataMixin, DetailView):
cache_range = settings.CACHE_RANGE
model = Conference
slug_field = 'url'

@ -160,8 +160,6 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
_(u'Минимальная цена'), choices=PRICE_EUR, blank=True, null=True, db_index=True)
price_eur = models.PositiveIntegerField(verbose_name=_(u'Цена в евро'), blank=True, null=True)
comments = generic.GenericRelation('comments.Comment')
#set manager of this model(fisrt manager is default)
objects = ExpoManager()
enable = ClientManager()

@ -41,7 +41,6 @@ from stats_collector.mixin import (
from theme.models import Tag, Theme
from events.mixin import ExpoFilterMixin, SearchFilterMixin
from settings.models import EventDefaultDescription
from comments.views import CommentMixin
class ExpositionBy(ExpoFilterMixin, ExpoSectionMixin, JitterCacheMixin, MetadataMixin, ListView):
@ -178,7 +177,7 @@ def exposition_add_calendar(request, id):
# return HttpResponse(json.dumps(args), content_type='application/json')
class ExpoDetail(ObjectStatMixin, CommentMixin, JitterCacheMixin, MetadataMixin, DetailView):
class ExpoDetail(ObjectStatMixin, JitterCacheMixin, MetadataMixin, DetailView):
cache_range = [60*30, 60*60]
model = Exposition
slug_field = 'url'

@ -351,7 +351,6 @@ INSTALLED_APPS = (
'emencia.django.newsletter',
'accounts',
'article',
'comments',
'city',
'company',
'conference',

@ -121,42 +121,7 @@
</div>
{% endif %}
<div class="article_comments">
<h2>{% trans 'Комментарии' %}</h2>
{% for comment in comments %}
<div class="comment">
<div class="comment_author">
{{ comment.user.get_full_name }} <time><i class="fa fa-calendar"></i> {{ comment.created }}</time>
</div>
<div class="comment_text">{{ comment.text }}</div>
<a href="#" data-parent="{{ comment.pk }}" data-user="{{ comment.user.get_full_name }}" class="reply_comment"><i class="fa fa-comment"></i> <span>{% trans "Ответить на комментарий" %}</span></a>
{% for answer in comment.childs %}
<div class="comment">
<div class="comment_author">
{{ answer.user.get_full_name }} <time><i class="fa fa-calendar"></i> {{ answer.created }}</time>
</div>
<div class="comment_text">{{ answer.text }}</div>
</div>
{% endfor %}
</div>
{% endfor %}
{% if user.is_authenticated %}
<div class="сomment_form">
<form action="." method="post" id="comment_form">
{% csrf_token %}
<p>
<textarea cols="40" id="id_text" name="text" rows="10"></textarea>
<button type="submit" class="button">Отправить</button>
</p>
</form>
</div>
{% else %}
<p class="no_login">{% trans 'Для отправки комментариев' %}, <a class="login pw-open" href="#pw-login">{% trans 'авторизуйтесь' %}.</a></p>
{% endif %}
</div>
{% include 'client/includes/comments.html' %}
</div>
{% endblock %}

@ -1,5 +1,5 @@
{% extends 'client/base_catalog.html' %}
{% load i18n %}
{% load i18n static %}
{% load thumbnail %}
{% load template_filters %}
@ -25,17 +25,545 @@
</div>
{% endblock %}
{% block page_title %}
{% endblock %}
{% block page_title %}{% endblock %}
{% block paginator %}{% endblock %}
{% block content_list %}
{% if object.paid_new_id and object.paid_new.public %}
{% include 'client/includes/exposition/expo_paid.html' with exposition=object %}
{% else %}
{% include 'client/includes/exposition/exposition_object.html' with exposition=object %}
{% endif %}
{% endblock %}
{% block page_body %}
<div class="m-article event-page">
<div class="item-wrap event clearfix">
<aside>
{% if exposition.expohit %}
<div class="hit"></div>
{% endif %}
{% if exposition.canceled %}
<div class="cancel"></div>
{% endif %}
<div class="i-pict">
{% with obj=exposition %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
<div class="i-stats">
{% if exposition.visitors %}
<span class="visitors" title="{% trans 'Посетители' %}">{{ exposition.visitors }}</span>
{% endif %}
{% if exposition.members %}
<span class="participants" title="{% trans 'Участники' %}">{{ exposition.members }}</span>
{% endif %}
</div>
<div class="i-discount">
{% if exposition.discount %}
<a class="discount-button" href="#">{% trans 'Скидка' %} -{{ exposition.discount }}%</a>
<div class="dsc-text">{{ exposition.discount_description|safe|linebreaks }}</div>
{% endif %}
</div>
</aside>
<div class="i-info">
<header>
<h1 class="i-title">
{% if exposition.main_title %}
{{ exposition.name|safe }} - {{ exposition.main_title|lowfirst|safe }}
{% else %}
{{ exposition.name|safe }}
{% endif %}
</h1>
</header>
<div class="i-date">
{% with obj=exposition %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
{% if not request.GET.debug == '1' %}
{% include "client/includes/sharing_block.html" %}
{% endif %}
</div>
{% if exposition.place %}
<div class="i-address">
<header>
<div class="address">
{{ exposition.place.country }}, {{ exposition.place.city }},
{% if exposition.place.web_page %}
<a href="{{ exposition.place.get_permanent_url }}" class="place_link">{{ exposition.place.name }}</a>
{% else %}
{{ exposition.place.name }}
{% endif %}
</div>
{# <div class="show-map"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>#}
</header>
<div class="show-map"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>
<div class="i-map">
<div class="close-map">
<a class="toggle-map" href="#">{% trans 'Скрыть карту' %}</a>
</div>
<div class="map-canvas" id="map-canvas" data-coords="{{ exposition.place.address.lat|coord_format }},{{ exposition.place.address.lng|coord_format }}" ></div>
</div>
</div>
{% else %}
<div class="i-address">
<header>
<div class="address">
{{ exposition.country.name }}, {{ exposition.city.name }}{% if exposition.place_alt %} , {{ exposition.place_alt }}{% endif %}
</div>
</header>
</div>
{% endif %}
</div>
</div>
<hr />
<div class="i-buttons clearfix">
<div class="ib-main">
{% with event=exposition user=user %}
{% include 'client/includes/visit_button.html' %}
{% endwith %}
{% include 'client/includes/calendar_button.html' with obj=exposition %}
{% if request.user.is_admin %}
<a target="_blank" class="button green " href="/admin/exposition/{{ object.url }}/">{% trans 'изменить' %}</a>
{% endif %}
</div>
<div class="event_org">
<a href="#pw-event-news-subscribe" class="button pw-open new_subribe_btn green"><i class="fa fa-at"></i>&nbsp;{% trans 'Подписаться на новости' %}</a>
</div>
</div>
<hr />
<div class="i-divs clearfix">
<div class="i-subj">
<ul>
{% with themes=exposition.themes %}
{% for theme in themes %}
<li><a href="{{ object.catalog }}theme/{{ theme.url }}/">{{ theme.name }} ({{ theme.expositions_number }})</a></li>
{% endfor %}
{% endwith %}
</ul>
</div>
<div class="i-tags grey">
{% with tags=exposition.tags %}
{% for tag in tags %}
<a href="{{ object.catalog }}tag/{{ tag.url }}/">{{ tag.name }}</a>{% if forloop.counter != tags|length %},{% endif %}
{% endfor %}
{% endwith %}
</div>
</div>
<div class="exposition_main_image" {% if exposition.main_image %}data-background="{% thumbnail exposition.main_image '937x244' crop='center' %}"{% endif %}>
<div class="buttons">
<a href="{% url 'expo_service' object.url 'tickets' %}" class="orange">{% trans 'Посетителю' %}</a>
<a href="{% url 'expo_price' object.url %}" class="green">{% trans 'Экспоненту' %}</a>
{% if object.paid_new_id and object.paid_new.public %}
<a href="{{ object.paid_new.official.get_click_link }}" class="pink">{% trans 'Официальный сайт' %}</a>
{% endif %}
</div>
</div>
{# Описание выставки #}
<div class="expo_description">
<h2>{% trans 'О выставке' %} {{ exposition.name|safe }}</h2>
<aside class="right_grey_block">
{% if object.members_choice and object.visitors_choice %}
<h4>{% trans 'Масштаб выставки:' %}</h4>
<div class="exposition_members">
<div class="members">
<h5>{% trans 'Участники:' %}</h5>
<span>{% if object.members_choice %}{{ object.members_choice }}{% else %}нет данных{% endif %}</span>
</div>
<div class="visitors">
<h5>{% trans 'Посетители:' %}</h5>
<span>{% if object.visitors_choice %}{{ object.visitors_choice }}{% else %}нет данных{% endif %}</span>
</div>
</div>
{% endif %}
<div class="logos">
{% if exposition.quality_label.ufi.is_set %}
<div class="img_wrapper">
<img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exposition.quality_label.exporating.is_set %}
<div class="img_wrapper">
<img src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exposition.quality_label.rsva.is_set %}
<div class="img_wrapper">
<img src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
</div>
</aside>
<aside class="right_grey_block" id="recommended_expositions">
<h4>{% trans 'Также рекомендуем:' %}</h4>
<div class="recommended_expositions">
{% for item in recommend_expos %}
<div class="recommended">
<a href="{{ item.get_absolute_url }}" target="_blank">{{ item.name }}</a>
<p>{{ item.city }}, {{ item.data_begin|date:'d' }}{% if item.data_end %}-{{ item.data_end|date:'d' }}{% endif %} сентября {{ item.data_begin|date:'Y' }}</p>
</div>
{% endfor %}
</div>
</aside>
{% if exposition.description %}
<div class="expo_description_detail">
{{ exposition.description|safe }}
</div>
{% elif default_description %}
<div class="expo_description_detail">
{{ default_description|safe }}
</div>
{% else %}
{% include "client/includes/exposition/default_description.html" with expo=exposition className="expo_description_detail" %}
{% endif %}
</div>
{% include 'client/includes/banners/expo_detail.html' %}
<hr>
{# Дополнительная информация #}
<div id="additional" class="i-event-additional clearfix">
<div class="sect-title">{% trans 'Дополнительная информация' %}</div>
<ul class="e-docs">
{% if exposition.business_program.exists %}
<li><a href="{{ exposition.get_permanent_url }}program/">{% trans 'Деловая программа' %}</a></li>
{% endif %}
<li><a href="{{ exposition.get_permanent_url }}price/">{% trans 'Условия участия' %}</a></li>
{% if exposition.statistic_exists %}
<li><a href="{{ exposition.get_permanent_url }}statistic/">{% trans 'Статистика' %}</a></li>
{% endif %}
<li><a href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ exposition.city.id }}&do_availability_check=on&label=expo_search&lang={{ request.LANGUAGE_CODE }}&checkin_monthday={{ exposition.data_begin|date:'j' }}&checkin_year_month={{ exposition.data_begin|date:'Y' }}-{{ exposition.data_begin|date:'n' }}&checkout_monthday={{ exposition.data_end|date:'j' }}&checkout_year_month={{ exposition.data_end|date:'Y' }}-{{ exposition.data_end|date:'n' }}" class="find_hotel" target="_blank">{% trans 'Найти отель' %}</a></li>
<li><a href="http://www.rentalcars.com/SearchResults.do?enabler=&country={{ exposition.country }}&doYear={{ exposition.data_begin|date:'Y' }}&city={{ exposition.city }}&driverage=on&doFiltering=true&dropCity={{ exposition.city }}&driversAge=30&filterTo=49&fromLocChoose=true&dropLocationName={{ exposition.city }}+(Все+места)+&dropCountryCode=&doMinute=0&countryCode=&puYear={{ exposition.data_begin|date:'Y' }}&locationName={{ exposition.city }}+(Все+места)+&puMinute=0&doDay={{ exposition.data_end|date:'d' }}&searchType=allareasgeosearch&filterFrom=0&puMonth={{ exposition.data_end|date:'m' }}&dropLocation=-1&doHour=10&dropCountry={{ exposition.country }}&puDay={{ exposition.data_begin|date:'d' }}&puHour=10&location=-1&doMonth={{ exposition.data_begin|date:'m' }}&filterName=CarCategorisationSupplierFilter&affiliateCode=expomap790&preflang=ru" class="car_rent" target="_blank">{% trans 'Арендовать авто' %}</a></li>
<li><a href="https://www.interpreters.travel/ru/new_partner_search?partner_id=44&search[city_name]={{ exposition.city.name }}" class="translator" target="_blank">{% trans 'Услуги переводчика' %}</a></li>
</ul>
<dl class="add-info">
{% if exposition.organiser.all.exists %}
<dt>{% trans 'Организатор' %}:</dt>
<dd>
{% with organisers=exposition.organiser.all %}
{% for organiser in organisers %}
{{ organiser.name }}<br />
{% endfor %}
{% endwith %}
</dd>
{% else %}
{% if exposition.org %}
{% for item in exposition.org_split %}
<dt>{% if forloop.counter == 1 %}{% trans 'Организатор' %}:{% endif %}</dt>
<dd>
{{ item }}
</dd>
{% endfor %}
{% endif %}
{% endif %}
{% if exposition.web_page %}
<dt>{% trans 'Веб-сайт' %}:</dt>
<dd>
<a target="_blank" href="#" data-type="href" data-hash="1qwer" data-url="{{ exposition.web_page|base64_encode }}" class="link-encode">{{ exposition.web_page }}</a>
</dd>
{% endif %}
{% if exposition.get_audience %}
<dt>{% trans 'Аудитория' %}:</dt>
<dd>{{ exposition.get_audience }}</dd>
{% endif %}
{% if exposition.get_periodic %}
<dt>{% trans 'Периодичность' %}:</dt>
<dd>{{ exposition.get_periodic }}</dd>
{% endif %}
{% if exposition.products %}
<dt>{% trans 'Экспонируемые продукты' %}:</dt>
<dd>{{ exposition.products|safe }}</dd>
{% endif %}
{% if exposition.time %}
<dt>{% trans 'Время работы' %}:</dt>
<dd>{{ exposition.time|safe }}</dd>
{% endif %}
</dl>
</div>
<hr>
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
{# Планируют быть #}
<div class="conf_visitors">
{% with visitors=exposition.users.all|slice:":17" %}
<h3>{% trans 'Планируют быть на' %} {{ exposition.name }}</h3>
<ul class="visitors-list" id="visitors-list">
{% if visitors %}
{# есть посетители #}
{% for user in visitors %}
{% if user == request.user %}
<li class="current"><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }}&nbsp;{% if user.company %}({{ user.company.name }}){% endif %}</a></li>
{% else %}
<li><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }}&nbsp;{% if user.company %}({{ user.company.name }}){% endif %}</a></li>
{% endif %}
{% endfor %}
{% endif %}
</ul>
<p id="nobody" class=" mb-1em {% if exposition.users.all|length > 0 %}hidden{% else %}{% endif %}">{% trans 'Пока никто не отметился на событии.' %}</p>
<p><a id="somebody" class=" more mb-1em {% if visitors|length > 0 %}{%else%}hidden{% endif %}" href="{{ event.get_permanent_url }}visitors/">{% trans 'Все посетители' %}</a></p>
{% endwith %}
{% with event=exposition user=user %}
{% include 'client/includes/visit_button.html' %}
{% endwith %}
</div>
{# Слайдер фото с прошлой выставки #}
{% if exposition.get_photos %}
{% with photos=exposition.get_photos %}
<div class="conference_slider">
<h2><a href="{{ exposition.get_permanent_url }}photo/">{% trans 'Фотографии с прошлой конференции' %}</a></h2>
<div class="last_photos_slider">
{% for photo in photos %}
{% thumbnail photo.image '936x468' crop="center" as im %}
<a href="{{ exposition.get_permanent_url }}photo/"><img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt="" /></a>
{% endthumbnail %}
{% endfor %}
</div>
<div class="last_photos_thumbs">
{% for photo in photos %}
{% thumbnail photo.image '137x95' crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt="" />
{% endthumbnail %}
{% endfor %}
</div>
</div>
{% endwith %}
{% endif %}
<div class="exposition_news">
{% include "client/includes/article/articles_in_event.html" with event=exposition news_list=news %}
</div>
{% if exposition.members or exposition.visitors or exposition.foundation_year or exposition.area %}
<div class="e-num-info">
{% if exposition.area %}
<div class="eni-area-wrap">
<div class="eni-title">{% trans 'Общая выставочная площадь' %}</div>
<div class="eni-area">
{{ exposition.area }} {% trans 'м²' %}
</div>
</div>
{% endif %}
<div class="eni-stats">
{% if exposition.members %}
<div class="enis-item"><b>{{ exposition.members }}</b> {% trans 'участников' %}</div>
{% endif %}
{% if exposition.visitors %}
<div class="enis-item"><b>{{ exposition.visitors }}</b> {% trans 'посетителей' %}</div>
{% endif %}
{% if exposition.foundation_year %}
<div class="eni-founded">{% trans 'Основано в' %} <b>{{ exposition.foundation_year }}</b> {% trans 'году' %}</div>
{% endif %}
</div>
</div>
{% endif %}
<div class="conf_comments">
<h2>{% trans 'Комментарии' %}</h2>
{% include 'client/includes/comments.html' %}
</div>
</div>
<div class="conf_sharing">
{% include 'client/includes/sharing_block_full.html' %}
</div>
{% include 'client/includes/banners/catalog_inner_2.html' %}
{% with themes=exposition.themes %}
{% for theme in themes %}
<li><a href="{{ object.catalog }}theme/{{ theme.url }}/">{{ theme.name }} ({{ theme.expositions_number }})</a></li>
{% endfor %}
{% endwith %}
{% if exposition.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">
{% with themes=exposition.themes %}
{% trans 'Ближайшие выставки по тематике' %} «{% for theme in themes %}{{ theme.name }}{% if not forloop.last %}, {% endif %}{% endfor %}»
{% endwith %}
</div>
<ul class="cat-list cl-exhibitions">
{% for exp in exposition.get_nearest_events %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ exp.get_permanent_url }}">
<div class="cli-pict">
{% with obj=exp %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
{% if exp.quality_label.rsva.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.exporating.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.ufi.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ exp.get_permanent_url }}">{{ exp.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ exp.main_title|safe|linebreaks }}
</div>
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=exp %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
</div>
<div class="cli-place">
<a href="{{ exposition.catalog }}country/{{ exp.country.url }}/">{{ exp.country }}</a>, <a href="{{ exposition.catalog }}city/{{ exp.city.url }}/">{{ exp.city }}</a>
{% if exp.place %}
, <a href="{{ exp.place.get_permanent_url }}">{{ exp.place }}</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ exposition.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% endif %}
{% include 'client/includes/banners/detail_inner_3.html' %}
<div class="e-cat look-also">
<div class="sect-title">{% trans 'Смотрите также:' %}</div>
<a href="{{ exposition.catalog }}city/{{ exposition.city.url }}/">{% trans "Выставки" %} {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
<a href="{{ exposition.catalog }}country/{{ exposition.country.url }}/">{% trans "Выставки" %} {% if request.LANGUAGE_CODE == 'ru' and exposition.country.inflect %}{{ exposition.country.inflect }}{% else %}{% trans 'in' %} {{ exposition.country.name }}{% endif %}</a>
{% if exposition.theme.all %}
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/country/{{ exposition.country.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.country.inflect %}{{ exposition.country.inflect }}{% else %}{% trans 'in' %} {{ exposition.country.name }}{% endif %}</a>
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/city/{{ exposition.city.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
{% endif %}
</div>
{% endblock %}
{% block content_text %}
{% endblock %}
{% block popup %}
{% include 'client/popups/advertise_member.html' with form=advertising_form %}
{% include 'client/popups/event_news_subscribe.html' %}
{% endblock %}
{% block scripts %}
{% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/page.exposition.object.js' %}"></script>
{% else %}
<script src="{% static 'client/js_min/_modules/page.exposition.object.min.js' %}"></script>
{% endif %}
<script>
EXPO.exposition.object.init({
visit:{
activeClass:"visit",
passiveClass:"unvisit",
currentHtml:'<li class="current"><a href="{{ request.user.get_permanent_url }}">{{ request.user.get_full_name }}&nbsp;{% if request.user.company %}({{ request.user.company.name }}){% endif %}</a></li>',
visitorsListId:"visitors-list",
somebodyId:"somebody",
nobodyId:"nobody"
},
advertise:{
id:"advert-member-form"
},
event_news_subscribe:{
id: "event-news-subscribe-form"
},
addCalendarText:"{% trans 'В расписание' %}",
removeCalendarText:"{% trans 'Из расписания' %}"
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js"></script>
<script>
$(window).load(function () {
$('.last_photos_slider').slick({
slidesToShow: 1,
slidesToScroll: 1,
fade: true,
asNavFor: '.last_photos_thumbs'
});
$('.last_photos_thumbs').slick({
slidesToShow: 5,
slidesToScroll: 1,
asNavFor: '.last_photos_slider',
dots: false,
variableWidth: true,
focusOnSelect: true
});
});
$(function() {
var $recommended = $('#recommended_expositions'),
$text = $('.expo_description_detail'),
$main_image = $('.exposition_main_image');
{% block paginator %}
$recommended
.insertBefore($text.find('>*').eq(-2))
.show();
if ($main_image.data('background')) {
$main_image.css('background', 'url(' + $main_image.data('background') + ')');
}
})
</script>
{% endblock %}
{% endblock %}

@ -0,0 +1,12 @@
<div id="mc-container"></div>
<script type="text/javascript">
cackle_widget = window.cackle_widget || [];
cackle_widget.push({widget: 'Comment', id: 53712});
(function() {
var mc = document.createElement('script');
mc.type = 'text/javascript';
mc.async = true;
mc.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://cackle.me/widget.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mc, s.nextSibling);
})();
</script>

@ -431,43 +431,7 @@
<div class="conf_comments">
<h2>{% trans 'Комментарии' %}</h2>
{% for comment in comments %}
<div class="comment">
<div class="comment_author">
{{ comment.user.get_full_name }} <time><i class="fa fa-calendar"></i> {{ comment.created }}</time>
</div>
<div class="comment_text">{{ comment.text }}</div>
<a href="#" data-parent="{{ comment.pk }}" data-user="{{ comment.user.get_full_name }}" class="reply_comment"><i class="fa fa-comment"></i> <span>{% trans "Ответить на комментарий" %}</span></a>
{% for answer in comment.childs %}
<div class="comment">
<div class="comment_author">
{{ answer.user.get_full_name }} <time><i class="fa fa-calendar"></i> {{ answer.created }}</time>
</div>
<div class="comment_text">{{ answer.text }}</div>
</div>
{% endfor %}
</div>
{% endfor %}
{% if user.is_authenticated %}
<div class="сomment_form">
<form action="." method="post" id="comment_form">
{% csrf_token %}
{# {{ commentform.as_p }}#}
<h3>{% trans 'Оставьте свой отзыв:' %}</h3>
<p>
<label for="id_text">Сообщение:</label>
<textarea id="id_text" name="text" placeholder="{% trans 'Введите текст' %}"></textarea>
<button type="submit" class="button">{% trans 'Оставить отзыв' %}</button>
</p>
</form>
</div>
{% else %}
<p class="no_login">{% trans 'Если вы хотите оставить отзыв или комментарий о конференции' %}, <a class="login pw-open" href="#pw-login">{% trans 'авторизуйтесь' %}.</a></p>
{% endif %}
{% include 'client/includes/comments.html' %}
</div>
<div class="conf_sharing">

@ -13,18 +13,10 @@
{% trans 'УЧАСТВОВАТЬ' %}
</a>
</li>
{% comment %}
<li class="s2">
<div class="label">{% trans 'Забронируйте площадь по лучшей цене' %}</div>
<a class="step" href="{{ event.paid_new.participation.get_click_link }}" target="_blank">{% trans "Заявка на участие" %}</a>
</li>
{% endcomment %}
<li class="s2">
<div class="label">{% trans 'Забронируйте отель по лучшей цене' %}</div>
<a class="step" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ event.city.id }}&do_availability_check=on&label=expo_search&lang={{ request.LANGUAGE_CODE }}&checkin_monthday={{ event.data_begin|date:'j' }}&checkin_year_month={{ event.data_begin|date:'Y' }}-{{ event.data_begin|date:'n' }}&checkout_monthday={{ event.data_end|date:'j' }}&checkout_year_month={{ event.data_end|date:'Y' }}-{{ event.data_end|date:'n' }}" target="_blank"><b>booking</b>.com</a>
</li>
<li class="s3">
<div class="label">{% trans 'Задайте свой вопрос напрямую организатору' %}</div>
<a class="step pw-open" href="#pw-organizer" target="_blank">{% trans 'Запрос организатору' %}</a>
@ -34,7 +26,7 @@
{% else %}
{# Непроплаченая конференция #}
<div class="i-steps">
<div class="is-title">{% if event.catalog == '/expo/' %}{% trans 'Участвовать в выставке' %}{% else %}{% trans 'Посетить конференцию' %}{% endif %}</div>
<div class="is-title">{% trans 'Посетить конференцию' %}</div>
<ul>
<li class="s1">

@ -1,442 +0,0 @@
{% load static i18n %}
{% load thumbnail %}
{% load template_filters %}
{% block page_body %}
<div class="m-article event-page">
<div class="item-wrap event clearfix">
<aside>
{% if exposition.expohit %}
<div class="hit"></div>
{% endif %}
<div class="i-pict">
{% with obj=exposition %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
<div class="i-stats">
{% if exposition.visitors %}
<span class="visitors" title="Посетители">{{ exposition.visitors }}</span>
{% endif %}
{% if exposition.members %}
<span class="participants" title="Участники">{{ exposition.members }}</span>
{% endif %}
</div>
<div class="i-discount">
{% if exposition.discount %}
<a class="discount-button" href="#">{% trans 'Скидка' %} -{{ exposition.discount }}%</a>
<div class="dsc-text">{{ exposition.discount_description|safe|linebreaks }}</div>
{% endif %}
</div>
{% if exposition.paid_new.logo %}
<div class="paid-partner-block">
<p class="partner-title">{% trans 'Организатор' %}</p>
<div class="i-pict">
<img src="{{ exposition.paid_new.logo.url }}" class="pic" alt="">
</div>
</div>
{% endif %}
</aside>
<div class="i-info">
<header>
<h1 class="i-title">
{% if exposition.main_title %}
{{ exposition.name|safe }} - {{ exposition.main_title|lowfirst|safe }}
{% else %}
{{ exposition.name|safe }}
{% endif %}
</h1>
</header>
<div class="i-date">
{% with obj=exposition %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
{% include "client/includes/sharing_block.html" %}
</div>
{% if exposition.place %}
<div class="i-address">
<header>
<div class="address">
{{ exposition.place.country }}, {{ exposition.place.city }},
{% if exposition.place.web_page %}
<a href="{{ exposition.place.web_page }}" class="place_link">{{ exposition.place.name }}</a>
{% else %}
{{ exposition.place.name }}
{% endif %}
</div>
{# <div class="show-map"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>#}
</header>
<div class="show-map"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>
<div class="i-map">
<div class="close-map"><a class="toggle-map" href="#">{% trans 'Скрыть карту' %}</a>
</div>
<div class="map-canvas" id="map-canvas" data-coords="{{ exposition.place.address.lat|coord_format }},{{ exposition.place.address.lng|coord_format }}" ></div>
</div>
</div>
{% endif %}
<div class="event_org">
<a href="#pw-event-news-subscribe" class="button pw-open new_subribe_btn"><i class="fa fa-at"></i>&nbsp;{% trans 'Подписаться на новости' %}</a>
</div>
<hr />
<div class="i-buttons clearfix">
<div class="ib-main">
{% with event=exposition user=user %}
{% include 'client/includes/visit_button.html' %}
{% endwith %}
{% include 'client/includes/calendar_button.html' with obj=object %}
{% if request.user.is_admin %}
<a class="button green " href="/admin/exposition/{{ object.url }}/">{% trans 'изменить' %}</a>
{% endif %}
{% if exposition.photogallery_id %}
<a class="button blue icon-photo" href="{{ exposition.get_permanent_url }}photo/">{% trans 'фото' %}</a>
{% endif %}
</div>
<div class="ib-add"><a class="button blue2 icon-find" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отель' %}</a></div>
</div>
<hr />
<div class="i-divs clearfix">
<div class="i-subj">
<ul>
{% with themes=exposition.theme.all %}
{% for theme in themes %}
<li><a href="{{ object.catalog }}theme/{{ theme.url }}/">{{ theme.name }} ({{ theme.expositions_number }})</a></li>
{% endfor %}
{% endwith %}
</ul>
</div>
<div class="i-tags">
{% with tags=exposition.tag.all %}
{% for tag in tags %}
<a href="{{ object.catalog }}tag/{{ tag.url }}/">{{ tag.name }}</a>{% if forloop.counter != tags|length %},{% endif %}
{% endfor %}
{% endwith %}
</div>
</div>
</div>
</div>
<p><a href="#pw-event-news-subscribe" class="button pw-open"><i class="fa fa-at"></i>&nbsp;{% trans 'Подписаться на новости' %}</a>&nbsp;&nbsp;&nbsp;<i>{% blocktrans with name=exposition.name|safe %}Получайте актуальную информацию о выставке {{ name }} на свой email{% endblocktrans %}</i></p>
<div class="i-sub-articles">
<a target="_blank" href="{{ exposition.paid_new.official.get_click_link }}" class="paid-partner-link">{% trans 'Официальный сайт выставки' %}</a>
</div>
<div class="i-steps">
<div class="is-title">{% trans 'Посетить/участвовать в выставке' %}</div>
<ul>
<li class="s1">
<div class="label">{% trans 'Зарегистрируйтесь на событие' %}</div>
<a class="step"
href="{{ exposition.paid_new.tickets.get_click_link }}"
target="_blank">
{% trans 'Билеты на выставку' %}
</a>
</li>
<li class="s2">
<div class="label">{% trans 'Забронируйте площадь по лучшей цене' %}</div>
<a class="step" href="{{ exposition.paid_new.participation.get_click_link }}" target="_blank">Заявка на участие</a>
</li>
<li class="s3">
<div class="label">{% trans 'Просмотрите список участников' %}</div>
<a class="step" href="{{ exposition.paid_new.participants_list.get_click_link }}" target="_blank">{% trans 'Список участников' %}</a>
</li>
</ul>
</div>
{% if exposition.get_photos %}
{% with photos=exposition.get_photos|slice:"5" %}
<hr />
<div class="i-photo-slides">
<div class="sect-title"><a href="#">{% trans 'Фотографии с прошлой выставки' %}</a></div>
<div id="ps-photo-gallery" class="ps-photo-gallery swiper-container">
<ul class="swiper-wrapper">
{% for photo in photos %}
<li class="swiper-slide">
<img src="{{ photo.get_display_url }}" alt="" />
</li>
{% endfor %}
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
</div>
{% endwith %}
{% endif %}
{% if exposition.description %}
<div class="i-event-description">
<h2 class="ied-title">{% trans 'О выставке' %} {{ exposition.name|safe }}</h2>
<div class="ied-text">{{ exposition.description|safe }}</div>
</div>
<hr />
{% endif %}
<div class="i-event-additional clearfix">
<div class="sect-title">{% trans 'Дополнительная информация' %}</div>
<ul class="e-docs">
{% if exposition.business_program.exists %}
<li><a href="{{ exposition.get_permanent_url }}program/">{% trans 'Деловая программа' %}</a></li>
{% endif %}
<li><a href="{{ exposition.get_permanent_url }}price/">{% trans 'Условия участия' %}</a></li>
{% if exposition.statistic_exists %}
<li><a href="{{ exposition.get_permanent_url }}statistic/">{% trans 'Статистика' %}</a></li>
{% endif %}
</ul>
<dl class="add-info">
{% if exposition.organiser.all|length > 0 %}
<dt>{% trans 'Организатор' %}:</dt>
<dd>
{% with organisers=exposition.organiser.all %}
{% for organiser in organisers %}
{{ organiser.name }}<br />
{% endfor %}
{% endwith %}
</dd>
{% endif %}
{% if exposition.web_page %}
<dt>{% trans 'Веб-сайт' %}:</dt>
<dd>
<a target="_blank" href="#" data-type="href" data-hash="1qwer" data-url="{{ exposition.web_page|base64_encode }}" class="link-encode">{{ exposition.web_page }}</a>
</dd>
{% endif %}
{% if exposition.get_audience %}
<dt>{% trans 'Аудитория' %}:</dt>
<dd>
{{ exposition.get_audience }}
</dd>
{% endif %}
{% if exposition.get_periodic %}
<dt>{% trans 'Периодичность' %}:</dt>
<dd>{{ exposition.get_periodic }}</dd>
{% endif %}
{% if exposition.products %}
<dt>{% trans 'Экспонируемые продукты' %}:</dt>
<dd>{{ exposition.products|safe }}</dd>
{% endif %}
{% if exposition.time %}
<dt>{% trans 'Время работы' %}:</dt>
<dd>{{ exposition.time|safe }}</dd>
{% endif %}
</dl>
</div>
{% include "client/includes/article/articles_in_event.html" with event=exposition news_list=news %}
<hr />
<div class="i-members clearfix">
<div class="im-participants">
{% with companies=exposition.company.all|slice:":6" %}
{% if companies %}
{# есть участники #}
<header>
<div class="im-title">{% trans 'Участники' %}</div>
<a class="more" href="{{ exposition.get_permanent_url }}members/">{% trans 'Все участники' %}</a>
</header>
<ul>
{% for company in companies %}
<li>
<a href="{{ company.get_permanent_url }}">
<span class="imp-pict">
{% with obj=company %}
{% include 'includes/show_logo.html' %}
{% endwith %}
</span>
{{ company.name }}
</a>
</li>
{% endfor %}
</ul>
{% else %}
{# нет участников #}
<header>
<div class="im-title">{% trans 'Участники' %}</div>
<p>{% trans 'Привлекайте целевых посетителей на стенд' %}</p>
<p><a href="#pw-advertise" class="button icon-up pw-open" >{% trans "Рекламировать участника" %}</a></p>
</header>
{% endif %}
{% endwith %}
</div>
<div class="im-visitors">
{% with visitors=exposition.users.all|slice:":17" %}
<header>
<div class="im-title">{% trans 'Посетители' %}</div>
</header>
<ul id="visitors-list">
{% if visitors %}
{# есть посетители #}
{% for user in visitors %}
{% if user == request.user %}
<li class="current"><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }}&nbsp;{% if user.company %}({{ user.company.name }}){% endif %}</a></li>
{% else %}
<li><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }}&nbsp;{% if user.company %}({{ user.company.name }}){% endif %}</a></li>
{% endif %}
{% endfor %}
{% endif %}
</ul>
<a id="somebody" class=" more mb-1em {% if visitors|length > 0 %}{%else%}hidden{% endif %}" href="{{ exposition.get_permanent_url }}visitors/">{% trans 'Все посетители' %}</a>
{% endwith %}
<p id="nobody" class=" mb-1em {% if exposition.users.all|length > 0 %}hidden{% else %}{% endif %}">{% trans 'Пока никто не отметился на событии.' %}</p>
{% with event=exposition user=user %}
{% include 'client/includes/visit_button.html' %}
{% endwith %}
</div>
</div>
<hr/>
{% if exposition.area %}
{% else %}
{% if exposition.members or exposition.visitors or exposition.foundation_year %}
<p class="title"> <i class="fa fa-bar-chart">&nbsp;</i>{% trans 'Статистика' %}</p>
{% endif %}
{% endif %}
{% if exposition.members or exposition.visitors or exposition.foundation_year or exposition.area %}
<div class="e-num-info">
{% if exposition.area %}
<div class="eni-area-wrap">
<div class="eni-title">{% trans 'Общая выставочная площадь' %}</div>
<div class="eni-area">
{{ exposition.area }} {% trans 'м²' %}
</div>
</div>
{% endif %}
<div class="eni-stats">
{% if exposition.members %}
<div class="enis-item"><b>{{ exposition.members }}</b> {% trans 'участников' %}</div>
{% endif %}
{% if exposition.visitors %}
<div class="enis-item"><b>{{ exposition.visitors }}</b> {% trans 'посетителей' %}</div>
{% endif %}
{% if exposition.foundation_year %}
<div class="eni-founded">{% trans 'Основано в' %} <b>{{ exposition.foundation_year }}</b> {% trans 'году' %}</div>
{% endif %}
</div>
</div>
{% endif %}
</div>
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
<hr />
{% if exposition.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">{% trans 'Другие выставки, которые могут быть вам интересны' %}</div>
<ul class="cat-list cl-exhibitions">
{% for exp in exposition.get_nearest_events %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ exp.get_permanent_url }}">
<div class="cli-pict">
{% with obj=exp %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
{% if exp.quality_label.rsva.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.exporating.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.ufi.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ exp.get_permanent_url }}">{{ exp.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ exp.main_title|safe|linebreaks }}
</div>
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=exp %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
</div>
<div class="cli-place">
<a href="{{ exposition.catalog }}country/{{ exp.country.url }}/">{{ exp.country }}</a>, <a href="{{ exposition.catalog }}city/{{ exp.city.url }}/">{{ exp.city }}</a>
{% if exp.place %}
, <a href="{{ exp.place.get_permanent_url }}">{{ exp.place }}</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ exposition.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% endif %}
<div class="e-cat look-also">
<div class="sect-title">{% trans 'Смотрите также:' %}</div>
<a href="{{ exposition.catalog }}city/{{ exposition.city.url }}/">{% trans "Выставки" %} {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
<a href="{{ exposition.catalog }}country/{{ exposition.country.url }}/">{% trans "Выставки" %} {% if request.LANGUAGE_CODE == 'ru' and exposition.country.inflect %}{{ exposition.country.inflect }}{% else %}{% trans 'in' %} {{ exposition.country.name }}{% endif %}</a>
{% if exposition.theme.all %}
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/country/{{ exposition.country.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.country.inflect %}{{ exposition.country.inflect }}{% else %}{% trans 'in' %} {{ exposition.country.name }}{% endif %}</a>
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/city/{{ exposition.city.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
{% endif %}
</div>
{% endblock %}
{% block content_text %}
{% endblock %}
{% block popup %}
{% include 'client/popups/advertise_member.html' with form=advertising_form %}
{% include 'client/popups/event_news_subscribe.html' %}
{% endblock %}
{% block scripts %}
{% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/page.exposition.object.js' %}"></script>
{% else %}
<script src="{% static 'client/js_min/_modules/page.exposition.object.min.js' %}"></script>
{% endif %}
<script>
EXPO.exposition.object.init({
visit:{
activeClass:"visit",
passiveClass:"unvisit",
currentHtml:'<li class="current"><a href="{{ request.user.get_permanent_url }}">{{ request.user.get_full_name }}&nbsp;{% if request.user.company %}({{ request.user.company.name }}){% endif %}</a></li>',
visitorsListId:"visitors-list",
somebodyId:"somebody",
nobodyId:"nobody"
},
advertise:{
id:"advert-member-form"
},
event_news_subscribe:{
id: "event-news-subscribe-form"
},
addCalendarText:"{% trans 'В расписание' %}",
removeCalendarText:"{% trans 'Из расписания' %}"
});
</script>
{% endblock %}

@ -1,577 +0,0 @@
{% load static i18n %}
{% load thumbnail %}
{% load template_filters %}
{% block page_body %}
<div class="m-article event-page">
<div class="item-wrap event clearfix">
<aside>
{% if exposition.expohit %}
<div class="hit"></div>
{% endif %}
{% if exposition.canceled %}
<div class="cancel"></div>
{% endif %}
<div class="i-pict">
{% with obj=exposition %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
<div class="i-stats">
{% if exposition.visitors %}
<span class="visitors" title="{% trans 'Посетители' %}">{{ exposition.visitors }}</span>
{% endif %}
{% if exposition.members %}
<span class="participants" title="{% trans 'Участники' %}">{{ exposition.members }}</span>
{% endif %}
</div>
<div class="i-discount">
{% if exposition.discount %}
<a class="discount-button" href="#">{% trans 'Скидка' %} -{{ exposition.discount }}%</a>
<div class="dsc-text">{{ exposition.discount_description|safe|linebreaks }}</div>
{% endif %}
</div>
</aside>
<div class="i-info">
<header>
<h1 class="i-title">
{% if exposition.main_title %}
{{ exposition.name|safe }} - {{ exposition.main_title|lowfirst|safe }}
{% else %}
{{ exposition.name|safe }}
{% endif %}
</h1>
</header>
<div class="i-date">
{% with obj=exposition %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
{% if not request.GET.debug == '1' %}
{% include "client/includes/sharing_block.html" %}
{% endif %}
</div>
{% if exposition.place %}
<div class="i-address">
<header>
<div class="address">
{{ exposition.place.country }}, {{ exposition.place.city }},
{% if exposition.place.web_page %}
<a href="{{ exposition.place.get_permanent_url }}" class="place_link">{{ exposition.place.name }}</a>
{% else %}
{{ exposition.place.name }}
{% endif %}
</div>
{# <div class="show-map"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>#}
</header>
<div class="show-map"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>
<div class="i-map">
<div class="close-map">
<a class="toggle-map" href="#">{% trans 'Скрыть карту' %}</a>
</div>
<div class="map-canvas" id="map-canvas" data-coords="{{ exposition.place.address.lat|coord_format }},{{ exposition.place.address.lng|coord_format }}" ></div>
</div>
</div>
{% else %}
<div class="i-address">
<header>
<div class="address">
{{ exposition.country.name }}, {{ exposition.city.name }}{% if exposition.place_alt %} , {{ exposition.place_alt }}{% endif %}
</div>
</header>
</div>
{% endif %}
</div>
</div>
<hr />
<div class="i-buttons clearfix">
<div class="ib-main">
{% with event=exposition user=user %}
{% include 'client/includes/visit_button.html' %}
{% endwith %}
{% include 'client/includes/calendar_button.html' with obj=exposition %}
{% if request.user.is_admin %}
<a target="_blank" class="button green " href="/admin/exposition/{{ object.url }}/">{% trans 'изменить' %}</a>
{% endif %}
</div>
<div class="event_org">
<a href="#pw-event-news-subscribe" class="button pw-open new_subribe_btn green"><i class="fa fa-at"></i>&nbsp;{% trans 'Подписаться на новости' %}</a>
</div>
</div>
<hr />
<div class="i-divs clearfix">
<div class="i-subj">
<ul>
{% with themes=exposition.themes %}
{% for theme in themes %}
<li><a href="{{ object.catalog }}theme/{{ theme.url }}/">{{ theme.name }} ({{ theme.expositions_number }})</a></li>
{% endfor %}
{% endwith %}
</ul>
</div>
<div class="i-tags grey">
{% with tags=exposition.tags %}
{% for tag in tags %}
<a href="{{ object.catalog }}tag/{{ tag.url }}/">{{ tag.name }}</a>{% if forloop.counter != tags|length %},{% endif %}
{% endfor %}
{% endwith %}
</div>
</div>
<div class="exposition_main_image" {% if exposition.main_image %}data-background="{% thumbnail exposition.main_image '937x244' crop='center' %}"{% endif %}>
<div class="buttons">
<a href="{% url 'expo_service' object.url 'tickets' %}" class="orange">{% trans 'Посетителю' %}</a>
<a href="{% url 'expo_price' object.url %}" class="green">{% trans 'Экспоненту' %}</a>
{% if object.paid_new_id and object.paid_new.public %}
<a href="{{ object.paid_new.official.get_click_link }}" class="pink">{% trans 'Официальный сайт' %}</a>
{% endif %}
</div>
</div>
{# Описание выставки #}
<div class="expo_description">
<h2>{% trans 'О выставке' %} {{ exposition.name|safe }}</h2>
<aside class="right_grey_block">
{% if object.members_choice and object.visitors_choice %}
<h4>{% trans 'Масштаб выставки:' %}</h4>
<div class="exposition_members">
<div class="members">
<h5>{% trans 'Участники:' %}</h5>
<span>{% if object.members_choice %}{{ object.members_choice }}{% else %}нет данных{% endif %}</span>
</div>
<div class="visitors">
<h5>{% trans 'Посетители:' %}</h5>
<span>{% if object.visitors_choice %}{{ object.visitors_choice }}{% else %}нет данных{% endif %}</span>
</div>
</div>
{% endif %}
<div class="logos">
{% if exposition.quality_label.ufi.is_set %}
<div class="img_wrapper">
<img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exposition.quality_label.exporating.is_set %}
<div class="img_wrapper">
<img src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exposition.quality_label.rsva.is_set %}
<div class="img_wrapper">
<img src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
</div>
</aside>
<aside class="right_grey_block" id="recommended_expositions">
<h4>{% trans 'Также рекомендуем:' %}</h4>
<div class="recommended_expositions">
{% for item in recommend_expos %}
<div class="recommended">
<a href="{{ item.get_absolute_url }}" target="_blank">{{ item.name }}</a>
<p>{{ item.city }}, {{ item.data_begin|date:'d' }}{% if item.data_end %}-{{ item.data_end|date:'d' }}{% endif %} сентября {{ item.data_begin|date:'Y' }}</p>
</div>
{% endfor %}
</div>
</aside>
{% if exposition.description %}
<div class="expo_description_detail">
{{ exposition.description|safe }}
</div>
{% elif default_description %}
<div class="expo_description_detail">
{{ default_description|safe }}
</div>
{% else %}
{% include "client/includes/exposition/default_description.html" with expo=exposition className="expo_description_detail" %}
{% endif %}
</div>
{% include 'client/includes/banners/expo_detail.html' %}
<hr>
{# Дополнительная информация #}
<div id="additional" class="i-event-additional clearfix">
<div class="sect-title">{% trans 'Дополнительная информация' %}</div>
<ul class="e-docs">
{% if exposition.business_program.exists %}
<li><a href="{{ exposition.get_permanent_url }}program/">{% trans 'Деловая программа' %}</a></li>
{% endif %}
<li><a href="{{ exposition.get_permanent_url }}price/">{% trans 'Условия участия' %}</a></li>
{% if exposition.statistic_exists %}
<li><a href="{{ exposition.get_permanent_url }}statistic/">{% trans 'Статистика' %}</a></li>
{% endif %}
{# TODO: ссылки #}
<li><a href="#" class="find_hotel">{% trans 'Найти отель' %}</a></li>
<li><a href="#" class="car_rent">{% trans 'Арендовать авто' %}</a></li>
<li><a href="#" class="translator">{% trans 'Услуги переводчика' %}</a></li>
</ul>
<dl class="add-info">
{% if exposition.organiser.all.exists %}
<dt>{% trans 'Организатор' %}:</dt>
<dd>
{% with organisers=exposition.organiser.all %}
{% for organiser in organisers %}
{{ organiser.name }}<br />
{% endfor %}
{% endwith %}
</dd>
{% else %}
{% if exposition.org %}
{% for item in exposition.org_split %}
<dt>{% if forloop.counter == 1 %}{% trans 'Организатор' %}:{% endif %}</dt>
<dd>
{{ item }}
</dd>
{% endfor %}
{% endif %}
{% endif %}
{% if exposition.web_page %}
<dt>{% trans 'Веб-сайт' %}:</dt>
<dd>
<a target="_blank" href="#" data-type="href" data-hash="1qwer" data-url="{{ exposition.web_page|base64_encode }}" class="link-encode">{{ exposition.web_page }}</a>
</dd>
{% endif %}
{% if exposition.get_audience %}
<dt>{% trans 'Аудитория' %}:</dt>
<dd>{{ exposition.get_audience }}</dd>
{% endif %}
{% if exposition.get_periodic %}
<dt>{% trans 'Периодичность' %}:</dt>
<dd>{{ exposition.get_periodic }}</dd>
{% endif %}
{% if exposition.products %}
<dt>{% trans 'Экспонируемые продукты' %}:</dt>
<dd>{{ exposition.products|safe }}</dd>
{% endif %}
{% if exposition.time %}
<dt>{% trans 'Время работы' %}:</dt>
<dd>{{ exposition.time|safe }}</dd>
{% endif %}
</dl>
</div>
<hr>
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
{# Планируют быть #}
<div class="conf_visitors">
{% with visitors=exposition.users.all|slice:":17" %}
<h3>{% trans 'Планируют быть на' %} {{ exposition.name }}</h3>
<ul class="visitors-list" id="visitors-list">
{% if visitors %}
{# есть посетители #}
{% for user in visitors %}
{% if user == request.user %}
<li class="current"><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }}&nbsp;{% if user.company %}({{ user.company.name }}){% endif %}</a></li>
{% else %}
<li><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }}&nbsp;{% if user.company %}({{ user.company.name }}){% endif %}</a></li>
{% endif %}
{% endfor %}
{% endif %}
</ul>
<p id="nobody" class=" mb-1em {% if exposition.users.all|length > 0 %}hidden{% else %}{% endif %}">{% trans 'Пока никто не отметился на событии.' %}</p>
<p><a id="somebody" class=" more mb-1em {% if visitors|length > 0 %}{%else%}hidden{% endif %}" href="{{ event.get_permanent_url }}visitors/">{% trans 'Все посетители' %}</a></p>
{% endwith %}
{% with event=exposition user=user %}
{% include 'client/includes/visit_button.html' %}
{% endwith %}
</div>
{# Слайдер фото с прошлой выставки #}
{% if exposition.get_photos %}
{% with photos=exposition.get_photos %}
<div class="conference_slider">
<h2><a href="{{ exposition.get_permanent_url }}photo/">{% trans 'Фотографии с прошлой конференции' %}</a></h2>
<div class="last_photos_slider">
{% for photo in photos %}
{% thumbnail photo.image '936x468' crop="center" as im %}
<a href="{{ exposition.get_permanent_url }}photo/"><img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt="" /></a>
{% endthumbnail %}
{% endfor %}
</div>
<div class="last_photos_thumbs">
{% for photo in photos %}
{% thumbnail photo.image '137x95' crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt="" />
{% endthumbnail %}
{% endfor %}
</div>
</div>
{% endwith %}
{% endif %}
<div class="exposition_news">
{% include "client/includes/article/articles_in_event.html" with event=exposition news_list=news %}
</div>
{% if exposition.members or exposition.visitors or exposition.foundation_year or exposition.area %}
<div class="e-num-info">
{% if exposition.area %}
<div class="eni-area-wrap">
<div class="eni-title">{% trans 'Общая выставочная площадь' %}</div>
<div class="eni-area">
{{ exposition.area }} {% trans 'м²' %}
</div>
</div>
{% endif %}
<div class="eni-stats">
{% if exposition.members %}
<div class="enis-item"><b>{{ exposition.members }}</b> {% trans 'участников' %}</div>
{% endif %}
{% if exposition.visitors %}
<div class="enis-item"><b>{{ exposition.visitors }}</b> {% trans 'посетителей' %}</div>
{% endif %}
{% if exposition.foundation_year %}
<div class="eni-founded">{% trans 'Основано в' %} <b>{{ exposition.foundation_year }}</b> {% trans 'году' %}</div>
{% endif %}
</div>
</div>
{% endif %}
<div class="conf_comments">
<h2>{% trans 'Комментарии' %}</h2>
{% for comment in comments %}
<div class="comment">
<div class="comment_author">
{{ comment.user.get_full_name }} <time><i class="fa fa-calendar"></i> {{ comment.created }}</time>
</div>
<div class="comment_text">{{ comment.text }}</div>
<a href="#" data-parent="{{ comment.pk }}" data-user="{{ comment.user.get_full_name }}" class="reply_comment"><i class="fa fa-comment"></i> <span>{% trans "Ответить на комментарий" %}</span></a>
{% for answer in comment.childs %}
<div class="comment">
<div class="comment_author">
{{ answer.user.get_full_name }} <time><i class="fa fa-calendar"></i> {{ answer.created }}</time>
</div>
<div class="comment_text">{{ answer.text }}</div>
</div>
{% endfor %}
</div>
{% endfor %}
{% if user.is_authenticated %}
<div class="сomment_form">
<form action="." method="post" id="comment_form">
{% csrf_token %}
{# {{ commentform.as_p }}#}
<h3>{% trans 'Оставьте свой отзыв:' %}</h3>
<p>
<label for="id_text">Сообщение:</label>
<textarea id="id_text" name="text" placeholder="{% trans 'Введите текст' %}"></textarea>
<button type="submit" class="button">{% trans 'Оставить отзыв' %}</button>
</p>
</form>
</div>
{% else %}
<p class="no_login">{% trans 'Если вы хотите оставить отзыв или комментарий о конференции' %}, <a class="login pw-open" href="#pw-login">{% trans 'авторизуйтесь' %}.</a></p>
{% endif %}
</div>
</div>
<div class="conf_sharing">
{% include 'client/includes/sharing_block_full.html' %}
</div>
{% include 'client/includes/banners/catalog_inner_2.html' %}
{% with themes=exposition.themes %}
{% for theme in themes %}
<li><a href="{{ object.catalog }}theme/{{ theme.url }}/">{{ theme.name }} ({{ theme.expositions_number }})</a></li>
{% endfor %}
{% endwith %}
{% if exposition.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">
{% with themes=exposition.themes %}
{% trans 'Ближайшие выставки по тематике' %} «{% for theme in themes %}{{ theme.name }}{% if not forloop.last %}, {% endif %}{% endfor %}»
{% endwith %}
</div>
<ul class="cat-list cl-exhibitions">
{% for exp in exposition.get_nearest_events %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ exp.get_permanent_url }}">
<div class="cli-pict">
{% with obj=exp %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
{% if exp.quality_label.rsva.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.exporating.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.ufi.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ exp.get_permanent_url }}">{{ exp.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ exp.main_title|safe|linebreaks }}
</div>
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=exp %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
</div>
<div class="cli-place">
<a href="{{ exposition.catalog }}country/{{ exp.country.url }}/">{{ exp.country }}</a>, <a href="{{ exposition.catalog }}city/{{ exp.city.url }}/">{{ exp.city }}</a>
{% if exp.place %}
, <a href="{{ exp.place.get_permanent_url }}">{{ exp.place }}</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ exposition.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% endif %}
{% include 'client/includes/banners/detail_inner_3.html' %}
<div class="e-cat look-also">
<div class="sect-title">{% trans 'Смотрите также:' %}</div>
<a href="{{ exposition.catalog }}city/{{ exposition.city.url }}/">{% trans "Выставки" %} {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
<a href="{{ exposition.catalog }}country/{{ exposition.country.url }}/">{% trans "Выставки" %} {% if request.LANGUAGE_CODE == 'ru' and exposition.country.inflect %}{{ exposition.country.inflect }}{% else %}{% trans 'in' %} {{ exposition.country.name }}{% endif %}</a>
{% if exposition.theme.all %}
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/country/{{ exposition.country.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.country.inflect %}{{ exposition.country.inflect }}{% else %}{% trans 'in' %} {{ exposition.country.name }}{% endif %}</a>
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/city/{{ exposition.city.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
{% endif %}
</div>
{% endblock %}
{% block content_text %}
{% endblock %}
{% block popup %}
{% include 'client/popups/advertise_member.html' with form=advertising_form %}
{% include 'client/popups/event_news_subscribe.html' %}
{% endblock %}
{% block scripts %}
{% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/page.exposition.object.js' %}"></script>
{% else %}
<script src="{% static 'client/js_min/_modules/page.exposition.object.min.js' %}"></script>
{% endif %}
<script>
EXPO.exposition.object.init({
visit:{
activeClass:"visit",
passiveClass:"unvisit",
currentHtml:'<li class="current"><a href="{{ request.user.get_permanent_url }}">{{ request.user.get_full_name }}&nbsp;{% if request.user.company %}({{ request.user.company.name }}){% endif %}</a></li>',
visitorsListId:"visitors-list",
somebodyId:"somebody",
nobodyId:"nobody"
},
advertise:{
id:"advert-member-form"
},
event_news_subscribe:{
id: "event-news-subscribe-form"
},
addCalendarText:"{% trans 'В расписание' %}",
removeCalendarText:"{% trans 'Из расписания' %}"
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js"></script>
<script>
$(window).load(function () {
$('.last_photos_slider').slick({
slidesToShow: 1,
slidesToScroll: 1,
fade: true,
asNavFor: '.last_photos_thumbs'
});
$('.last_photos_thumbs').slick({
slidesToShow: 5,
slidesToScroll: 1,
asNavFor: '.last_photos_slider',
dots: false,
variableWidth: true,
focusOnSelect: true
});
});
$(function() {
var $recommended = $('#recommended_expositions'),
$text = $('.expo_description_detail'),
$main_image = $('.exposition_main_image');
$recommended
.insertBefore($text.find('>*').eq(-2))
.show();
if ($main_image.data('background')) {
$main_image.css('background', 'url(' + $main_image.data('background') + ')');
}
})
</script>
{% endblock %}
Loading…
Cancel
Save