parent
e99f3b011e
commit
c3143027c5
23 changed files with 556 additions and 1875 deletions
@ -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' <a class="action" href="{href}">{label}</a>' \ |
||||
u' | <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 |
||||
@ -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> |
||||
@ -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> {% 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> {% trans 'Подписаться на новости' %}</a> <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="#"><</a> |
||||
<a class="next" href="#">></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 }} {% if user.company %}({{ user.company.name }}){% endif %}</a></li> |
||||
{% else %} |
||||
<li><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }} {% 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"> </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 "Выставки по тематике " %}«{{ exposition.theme.all.0.name|capfirst }}» {% 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 "Выставки по тематике " %}«{{ exposition.theme.all.0.name|capfirst }}» {% 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 }} {% 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> {% 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 }} {% if user.company %}({{ user.company.name }}){% endif %}</a></li> |
||||
{% else %} |
||||
<li><a href="{{ user.get_permanent_url }}">{{ user.get_full_name }} {% 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 "Выставки по тематике " %}«{{ exposition.theme.all.0.name|capfirst }}» {% 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 "Выставки по тематике " %}«{{ exposition.theme.all.0.name|capfirst }}» {% 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 }} {% 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…
Reference in new issue