Merge branch 'stage5' into stage6

ticket 1610: Этап 6 - Переделать представление статей
remotes/origin/stage6
Alexander Burdeinyi 9 years ago
commit f8626ddcc2
  1. 8
      article/admin.py
  2. 1
      article/forms.py
  3. 692
      article/migrations/0005_auto__add_field_author_photo.py
  4. 24
      article/models.py
  5. 2
      article/translation.py
  6. 2
      company/urls.py
  7. 5
      company/views.py
  8. 2
      expobanner/utils.py
  9. 31
      functions/model_mixin.py
  10. 2
      settings/old_urls.py
  11. 72
      settings/templatetags/tempalte_tags.py
  12. 137
      static/client/css/main.css
  13. 2
      static/client/css_min/main.min.css
  14. 6
      static/client/js/_modules/page.profile.js
  15. 2
      static/client/js_min/_modules/page.profile.min.js
  16. 75
      templates/client/article/article.html
  17. 4
      templates/client/blank.html
  18. 9
      templates/client/includes/banners/top_head_banner.html
  19. 155
      templates/client/includes/header.html

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse
from django.db import models
from django.core.context_processors import csrf
from django.conf import settings
from django.contrib import admin
@ -10,6 +11,8 @@ from django.views.generic import DeleteView
from django.utils.translation import ugettext_lazy as _
from modeltranslation.admin import TabbedTranslationAdmin
from ckeditor.widgets import CKEditorWidget
from sorl.thumbnail.admin.current import AdminImageWidget
#models and forms
from .forms import ArticleForm, ArticleDeleteForm, NewsForm
@ -27,6 +30,10 @@ from functions.admin import DefaultAdmin
class AuthorAdmin(DefaultAdmin, TabbedTranslationAdmin):
list_display = ['fullname', 'email']
formfield_overrides = {
models.TextField: {'widget': CKEditorWidget},
models.ImageField: {'widget': AdminImageWidget},
}
admin.site.register(Author, AuthorAdmin)
@ -184,6 +191,7 @@ class BlogView(FormView):
article = self.obj
data = {}
data['slug'] = article.slug
data['author'] = article.author_s
data['theme'] = [item.id for item in article.theme.all()]
if article.exposition:
data['exposition'] = article.exposition.id

@ -113,6 +113,7 @@ class BlogForm(_BlogForm):
article.draft = self.cleaned_data['draft']
article.author_s = self.cleaned_data['author']
article.save()
return article

@ -0,0 +1,692 @@
# -*- 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 field 'Author.photo'
db.add_column(u'article_author', 'photo',
self.gf('django.db.models.fields.files.ImageField')(max_length=100, null=True, blank=True),
keep_default=False)
# Adding field 'Author.about'
db.add_column(u'article_author', 'about',
self.gf('django.db.models.fields.TextField')(default='', blank=True),
keep_default=False)
# Adding field 'Author.about_ru'
db.add_column(u'article_author', 'about_ru',
self.gf('django.db.models.fields.TextField')(null=True, blank=True),
keep_default=False)
# Adding field 'Author.about_en'
db.add_column(u'article_author', 'about_en',
self.gf('django.db.models.fields.TextField')(null=True, blank=True),
keep_default=False)
def backwards(self, orm):
# Deleting field 'Author.photo'
db.delete_column(u'article_author', 'photo')
# Deleting field 'Author.about'
db.delete_column(u'article_author', 'about')
# Deleting field 'Author.about_ru'
db.delete_column(u'article_author', 'about_ru')
# Deleting field 'Author.about_en'
db.delete_column(u'article_author', 'about_en')
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'}),
'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'article.article': {
'Meta': {'ordering': "['-publish_date']", 'unique_together': '()', 'object_name': 'Article', 'index_together': '()'},
'allow_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'articles'", 'on_delete': 'models.PROTECT', 'to': u"orm['accounts.User']"}),
'author_s': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'articles'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['article.Author']"}),
'conference': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['conference.Conference']", 'null': 'True', 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'draft': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'exposition': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['exposition.Exposition']", 'null': 'True', 'blank': 'True'}),
'gen_description': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'in_sitemap': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'logo': (u'sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'main_page': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
'main_page_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'old_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
'publish_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'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', [], {'to': u"orm['theme.Theme']", 'symmetrical': 'False'}),
'type': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1', 'db_index': 'True'})
},
u'article.articletranslation': {
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'ArticleTranslation', 'db_table': "u'article_article_translation'", 'index_together': '()'},
'description': ('django.db.models.fields.TextField', [], {}),
'descriptions': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'keywords': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
'main_title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['article.Article']"}),
'preview': ('django.db.models.fields.TextField', [], {}),
'short_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'article.author': {
'Meta': {'object_name': 'Author'},
'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'about_en': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'about_ru': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
'fb': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
'fullname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'fullname_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'fullname_ru': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'instagram': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
'photo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
'position': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'position_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'position_ru': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'vk': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': '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'conference.conference': {
'Meta': {'unique_together': '()', 'object_name': 'Conference', 'index_together': '()'},
'audience': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'bad_url': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'canceled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'canceled_by_administrator': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference_city'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'company': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference_companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['company.Company']"}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conference_country'", 'on_delete': 'models.PROTECT', 'to': u"orm['country.Country']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'currency': ('functions.custom_fields.EnumField', [], {'default': "'RUB'", 'values': "('RUB', 'USD', 'EUR', 'RMB', 'GBP', 'AED', 'SGD', 'TRY', 'CZK', 'CHF', 'SEK', 'LKR', 'UAH', 'IDR', 'PLN', 'JPY')"}),
'data_begin': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
'data_end': ('django.db.models.fields.DateField', [], {}),
'discount': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'expohit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'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': 'False', 'db_index': 'True'}),
'link': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'main': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.MainPage']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'main_page': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
'max_price': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'members': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'members_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'members_fc': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'min_price': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'moved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'org': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'organiser': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference_organisers'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['organiser.Organiser']"}),
'paid_new': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Paid']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'periodic': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'periodic_once': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}),
'place': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'conference_place'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['place_conference.PlaceConference']"}),
'place_alt': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'price_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'price_choice_eur': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'price_eur': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'price_rub': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'programm_link': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'}),
'quality_label': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True'}),
'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'speakers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['conference.Speaker']", 'null': 'True', 'blank': 'True'}),
'tag': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference_tags'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Tag']"}),
'tax': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'conference_themes'", 'symmetrical': 'False', 'to': u"orm['theme.Theme']"}),
'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'conference_users'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['accounts.User']"}),
'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'visitors': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'visitors_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'conference.speaker': {
'Meta': {'object_name': 'Speaker'},
'company': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'company_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'company_ru': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'fullname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'fullname_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'fullname_ru': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'photo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
'position': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'position_en': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'position_ru': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', '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(2016, 11, 25, 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'}),
'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.mainpage': {
'Meta': {'ordering': "['-public']", 'object_name': 'MainPage'},
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'link': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Banner']"}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'position': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2', 'null': 'True', 'blank': 'True'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'})
},
u'expobanner.paid': {
'Meta': {'ordering': "['-public']", 'object_name': 'Paid'},
'catalog': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_catalog'", 'to': u"orm['expobanner.Banner']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'kind': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1', 'db_index': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'official': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_official'", 'to': u"orm['expobanner.Banner']"}),
'organiser': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'participation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_participation'", 'null': 'True', 'to': u"orm['expobanner.Banner']"}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'tickets': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_tickets'", 'to': u"orm['expobanner.Banner']"})
},
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(2016, 11, 25, 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'exposition.exposition': {
'Meta': {'unique_together': '()', 'object_name': 'Exposition', 'index_together': '()'},
'application_deadline': ('django.db.models.fields.DateField', [], {'null': 'True'}),
'area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'audience': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'bad_url': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'canceled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'canceled_by_administrator': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'exposition_city'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'company': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['company.Company']"}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'exposition_country'", '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': "'exposition_creator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"}),
'currency': ('functions.custom_fields.EnumField', [], {'default': "'RUB'", 'values': "('RUB', 'USD', 'EUR', 'RMB', 'GBP', 'AED', 'SGD', 'TRY', 'CZK', 'CHF', 'SEK', 'LKR', 'UAH', 'IDR', 'PLN', 'JPY')"}),
'data_begin': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
'data_end': ('django.db.models.fields.DateField', [], {}),
'discount': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'expohit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'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': 'False', 'db_index': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'main': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.MainPage']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'main_page': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
'max_closed_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'max_closed_equipped_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'max_open_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'members': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'members_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'min_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'min_closed_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'min_closed_equipped_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'min_open_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'min_stand_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'moved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'org': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'organiser': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_organisers'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['organiser.Organiser']"}),
'paid_new': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Paid']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'periodic': ('django.db.models.fields.FloatField', [], {'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'}),
'place': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'exposition_place'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['place_exposition.PlaceExposition']"}),
'place_alt': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
'price_catalog': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'price_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'price_choice_eur': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'price_eur': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'price_rub': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'quality_label': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'registration_link': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'}),
'registration_payment': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'tag': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_tags'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Tag']"}),
'tax': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'exposition_themes'", 'symmetrical': 'False', 'to': u"orm['theme.Theme']"}),
'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_users'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['accounts.User']"}),
'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'visitors': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'visitors_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
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'note.note': {
'Meta': {'object_name': 'Note'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']", 'null': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
'text': ('django.db.models.fields.TextField', [], {}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"})
},
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 = ['article']

@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
from itertools import chain
from django.db import models
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext_lazy as _
@ -20,7 +22,7 @@ class Author(models.Model):
class Meta:
verbose_name = _(u'Автор')
verbose_name_plural = _(u'Авторы')
photo = models.ImageField(_(u'Фото'), upload_to='authors', blank=True, null=True)
fullname = models.CharField(_(u'Полное имя автора'), max_length=255)
position = models.CharField(_(u'Должность'), max_length=255, null=True, blank=True)
email = models.EmailField(_(u'Емейл'), null=True, blank=True)
@ -28,6 +30,7 @@ class Author(models.Model):
vk = models.URLField(_(u'Vk'), null=True, blank=True)
linkedin = models.URLField(_(u'LinkedIn'), null=True, blank=True)
instagram = models.URLField(_(u'Instagram'), null=True, blank=True)
about = models.TextField(_(u'Об авторе'), blank=True)
def __unicode__(self):
return unicode(self.fullname)
@ -251,6 +254,7 @@ class Article(TranslatableModel):
returns list of articles with same type and themes
:return:
"""
themes = [item['id'] for item in self.theme.all().values('id')]
return list(Article.objects.language()
.exclude(id=self.id)
@ -258,5 +262,23 @@ class Article(TranslatableModel):
.distinct()
.order_by('-publish_date')[:3])
def get_similar(self):
if getattr(self, '_similar', None) is None:
model = self.__class__
result = []
tags = self.tag.all().values_list('pk', flat=True)
themes = self.theme.all().values_list('pk', flat=True)
exclude_pks = set([self.pk])
qs = model.objects.language() \
.filter(type=self.type, publish_date__isnull=False).order_by('-publish_date')
tags_sim = qs.filter(tag__in=tags).exclude(pk__in=exclude_pks)[:4]
exclude_pks.update([x.pk for x in tags_sim])
themes_sim = qs.filter(theme__in=themes).exclude(pk__in=exclude_pks)[:4]
exclude_pks.update([x.pk for x in themes_sim])
last_sim = qs.exclude(pk__in=exclude_pks)[:4]
result = list(chain(tags_sim, themes_sim, last_sim)[:4])
self._similar = result
return self._similar
post_save.connect(post_save_handler, sender=Article)

@ -5,5 +5,5 @@ from .models import Author
class AuthorTranslationOptions(TranslationOptions):
fields = ('fullname', 'position')
fields = ('fullname', 'position', 'about')
translator.register(Author, AuthorTranslationOptions)

@ -18,7 +18,7 @@ urlpatterns = patterns('',
url(r'members/tag/(?P<slug>.*)/page/(?P<page>\d+)/$', MemberTagList.as_view(), {'meta_id':70}),
url(r'members/tag/(?P<slug>.*)/$', MemberTagList.as_view(), {'meta_id':70}),
url(r'members/page/(?P<page>\d+)/$', MemberList.as_view(), {'meta_id':67}),
url(r'members/(?P<slug>.*)/$', MemberDetail.as_view(), {'meta_id':68}),
url(r'members/(?P<slug>.*)/$', MemberDetail.as_view(), {'meta_id':68}, name='company-detail'),
url(r'members/$', MemberList.as_view(), {'meta_id':67}),
#

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
import json
from django.core.urlresolvers import reverse
from django.http import HttpResponse
from django.conf import settings
from django.views.generic import DetailView
@ -108,8 +110,9 @@ def create_company(request):
response = {'success': False}
form = CreateCompanyForm(request.POST)
if form.is_valid():
form.save(request.user)
company = form.save(request.user)
response['success'] = True
response['redirect_url'] = reverse('company-detail', args=[company.url])
return HttpResponse(json.dumps(response), content_type='application/json')
else:
response['errors'] = form.errors

@ -100,7 +100,7 @@ def get_banner_by_params(banners_list, urls, params, request):
banner_urls = set(banner_urls)
common_urls = set(urls).intersection(banner_urls)
print(banner, common_urls, banner_urls, urls)
if common_urls:
url_banners.append(banner)
continue

@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
import copy
import calendar as python_calendar
from itertools import chain
from pytils.dt import ru_strftime
import datetime
from dateutil.relativedelta import relativedelta
@ -122,27 +124,18 @@ class EventMixin(object):
month = now + relativedelta(months=1)
month2 = now + relativedelta(months=2)
exclude_pks = set([self.pk])
m0 = m1 = m2 = False
events_m2 = []
events_m = []
events = []
for params in [{'tag__in': tags}, {'theme__in': themes}]:
qs = model.objects.language().filter(**params).order_by('data_begin')
events_m2 = qs.filter(data_begin__gte=month2).exclude(pk__in=exclude_pks)
if not m2 and events_m2.exists():
result.extend(events_m2[:1])
exclude_pks.update([x.pk for x in result])
m2 = True
events_m = qs.filter(data_begin__gte=month).exclude(pk__in=exclude_pks)
if not m1 and events_m.exists():
offset = 2 - len(result)
result.extend(events_m[:offset])
exclude_pks.update([x.pk for x in result])
m1 = True
events = qs.filter(data_begin__gte=now).exclude(pk__in=exclude_pks)
if not m0 and events.exists():
offset = 3 - len(result)
result.extend(events[:offset])
exclude_pks.update([x.pk for x in result])
m0 = True
result.sort(key=lambda x: x.data_begin)
events_m2.extend(qs.filter(data_begin__gte=month2).exclude(pk__in=exclude_pks)[:3])
exclude_pks.update([x.pk for x in events_m2])
events_m.extend(qs.filter(data_begin__gte=month).exclude(pk__in=exclude_pks)[:3])
exclude_pks.update([x.pk for x in events_m])
events.extend(qs.filter(data_begin__gte=now).exclude(pk__in=exclude_pks)[:3])
exclude_pks.update([x.pk for x in events])
result = list(sorted((chain(zip(*[x for x in [events_m2, events_m, events] if x]))[:3]), key=lambda x: x.data_begin))
self._nearest_events = result
return self._nearest_events

@ -29,7 +29,7 @@ urlpatterns = patterns('',
# company
url(r'^company/(?P<company>.*)$', old_redirect, {'redirect_url': '/members/{company}/'}),
url(r'^company/(?P<company>(?!create-company).*)$', old_redirect, {'redirect_url': '/members/{company}/'}),
# articles and news
url(r'^articles.php$', old_redirect, {'redirect_url': '/blogs/'}),
url(r'^news.php$', old_redirect, {'redirect_url': '/news/'}),

@ -3,10 +3,10 @@ import datetime
from django import template
from django.utils.translation import ugettext as _
register = template.Library()
from expobanner.models import BannerGroup, URL
from expobanner.utils import get_banner_by_params, get_client_ip, get_referer_view
register = template.Library()
class Date(template.Node):
@ -94,6 +94,72 @@ def set_var(parser, token):
raise template.TemplateSyntaxError("'set' tag must be of the form: {% set <var_name> = <var_value> %}")
return SetVarNode(parts[1], parts[3])
@register.inclusion_tag('client/includes/banners/top_head_banner.html', takes_context=True)
def get_top_banner(context):
# fill parameters dict
request = context.get('request')
params = {'theme': context.get('themes', []),
'tag': context.get('tag', []),
'country': context.get('country', []),
'city': context.get('city', []),
'ip': get_client_ip(request)}
good_urls = []
urls = URL.cached.all()
url = get_referer_view(request, default='/')
for u in urls:
if u.regex:
try:
url_re = re.compile(u.url)
except:
continue
if url_re.findall(url):
good_urls.append(u)
elif url == u.url:
good_urls.append(u)
group_banners = BannerGroup.cached.group_banners()
result = {}
cookie = None
places = ['top_page_banner']
for group, banners in group_banners.iteritems():
if group not in places:
continue
banner = get_banner_by_params(banners, good_urls, params, request)
# import pdb; pdb.set_trace() # on this page there is no such group
if banner:
if banner.html:
text = banner.text
img = ''
alt = ''
is_img = False
else:
text = ''
try:
img = banner.img.url
except ValueError:
continue
alt = banner.alt
is_img = True
result = {'id': group,
'url': banner.get_click_link(),
'is_html': banner.html,
'is_flash': banner.flash,
'is_img': is_img,
'is_popup': banner.popup,
'img': img,
'alt': alt,
'text': text
}
if banner.popup:
cookie = banner.cookie
# add view log
banner.log(request, 1)
return result
register.tag('set', set_var)
register.tag('get_date', get_date)
register.tag('get_date_reverse', get_date_reverse)

@ -277,7 +277,7 @@ a.l-button {
}
.page-wrap>header .logo {
width: 220px;
padding: 38px 0 0;
padding: 5px 0 0;
float: left;
margin: 0 -100% 0 -220px;
-moz-box-sizing: border-box;
@ -388,9 +388,21 @@ a.l-button.ico:before {
.header-body .header-top ul {
float: left
}
.header-body .header-top .lang-switch {
width: 50%;
color: #a2a2a2
.lang-switch {
/*width: 50%;*/
color: #a2a2a2;
position: absolute;
top: 0;
right: 0;
}
.lang-switch li{
display: inline-block;
text-transform: uppercase;
margin-left: 5px;
}
.header-body .hb-wrap .lang-switch a{
color: #464646;
text-decoration: underline;
}
.header-body .header-top.coordinators .lang-switch {
width: auto
@ -419,51 +431,56 @@ a.l-button.ico:before {
width: auto;
margin-right: 0
}
.header-body .header-top .authorisation-links {
.authorisation-links {
float: right;
font-weight: 500;
text-decoration: none
text-decoration: none;
padding-top: 20px;
}
.header-body .header-top .authorisation-links a {
margin: 0 -6px 0 16px
.authorisation-links a {
margin: 0 -6px 0 16px;
font-size: 14px;
text-transform: uppercase;
}
.header-body .header-top .authorisation-links a:first-child {
.authorisation-links a:first-child {
margin-left: 0
}
.header-body .header-top .authorisation-links a.register {
.authorisation-links a.register {
color: #000
}
.header-body .header-top .authorisation-links a.register:hover {
.authorisation-links a.register:hover {
color: #f60
}
.header-body .header-top .authorisation-links a.register:before {
.authorisation-links a.register:before {
background-position: -12px 0;
height: 13px;
margin-top: -2px
}
.header-body .header-top .authorisation-links a.register:hover:before {
.authorisation-links a.register:hover:before {
background-position: -24px 0
}
.header-body .header-top .authorisation-links a.login:before {
.authorisation-links a.login:before {
background-position: -36px 0;
width: 9px;
height: 12px;
margin-top: -2px
}
.header-body .header-top .authorisation-links a.login:hover:before {
.authorisation-links a.login:hover:before {
background-position: -75px -145px
}
.cabinet-links {
float: right;
padding-right: 35px;
width: 360px;
min-width: 360px;
-moz-box-sizing: border-box;
box-sizing: border-box
box-sizing: border-box;
margin-top: 20px;
}
.coordinators .cabinet-links {
width: auto
}
.cabinet-links .cl-body {
padding-top: 10px;
width: 100%;
float: left;
background: #f60;
@ -472,18 +489,13 @@ a.l-button.ico:before {
line-height: 20px;
font-weight: 700;
text-transform: uppercase;
padding-left: 22px;
-webkit-border-bottom-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-moz-border-radius-bottomright: 4px;
-moz-border-radius-bottomleft: 4px;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
padding-left: 10px;
border-radius: 4px;
-moz-box-sizing: border-box;
box-sizing: border-box;
height: 44px;
margin-top: -10px;
margin-bottom: -4px
/*margin-bottom: -4px*/
}
.mp-top .recent-expo .re-date,
.mp-top .recent-expo .re-title {
@ -493,16 +505,18 @@ a.l-button.ico:before {
.cabinet-links .cl-body>div,
.cabinet-links .cl-body>ul {
display: block;
border-left: 1px solid #fff;
float: left;
height: 30px;
margin-top: 14px;
padding-left: 2px;
padding-right: 2px
border-right: 1px solid #fff;
/*float: left;*/
float: right;
padding: 0 5px;
/*height: 30px;*/
/*margin-top: 14px;*/
/*padding-left: 2px;*/
/*padding-right: 2px*/
}
.cabinet-links .cl-body .clb-messages {
min-width: 40px;
padding-left: 3px
/*min-width: 40px;*/
/*padding: 0 5px*/
}
.cabinet-links .cl-body>ul {
padding: 0 0 12px
@ -511,7 +525,7 @@ a.l-button.ico:before {
display: block;
padding: 0 2px 12px;
margin-bottom: -10px;
border-left: 1px solid #fff;
border-right: 1px solid #fff;
float: left
}
.cabinet-links .cl-body>:first-child,
@ -519,13 +533,14 @@ a.l-button.ico:before {
border-left: none
}
.cabinet-links .cl-body>div.clb-settings {
width: 32px;
float: right
/*width: 32px;*/
/*float: right*/
border-right: 0;
}
.cabinet-links .cl-body>div.clb-docs {
width: 57px;
padding-left: 6px;
float: left
/*width: 70px;*/
/*padding: 0 6px;*/
/*float: left*/
}
.cabinet-links .cl-body>div.clb-docs a.cl-btn {
margin-left: -4px;
@ -535,13 +550,27 @@ a.l-button.ico:before {
color: #fff;
position: relative;
display: inline-block;
height: 30px;
line-height: 30px;
padding: 0 7px;
margin: -6px 0;
/*height: 30px;*/
/*line-height: 30px;*/
/*padding: 0 7px;*/
/*margin: -6px 0;*/
line-height: 25px;
border: 1px solid transparent;
border-radius: 4px
}
.cabinet-links .clb-profile a{
padding-right: 5px;
}
.cabinet-links .cl-body a i{
font-size: 14px;
vertical-align: middle;
width: 25px;
text-align: center;
}
.cabinet-links .cl-body .fa-at {margin-top: -2px;}
.cabinet-links .cl-body a:hover {
border-color: #fff
}
@ -664,13 +693,15 @@ nav ul {
vertical-align: middle
}
.header-body .hb-wrap {
padding: 22px 470px 22px 0
padding: 22px 0 22px 0;
position: relative;
}
.serv-links {
float: left;
width: 100%
width: 40%;
/*width: 100%*/
}
.header-body .hb-wrap ul {
.header-body .hb-wrap .serv-links ul {
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 49.9%;
@ -678,6 +709,11 @@ nav ul {
float: left;
padding-right: 10px
}
.header-body .hb-wrap ul.soc-media-buttons{
width: auto;
padding-top: 20px;
float: left;
}
.header-body .hb-wrap ul li {
margin-top: 3px
}
@ -12705,7 +12741,6 @@ button.gray:hover {
margin-right: 8px;
margin-top: -8px
}
.thank-registering {
font-size: 16px
}
@ -13688,3 +13723,11 @@ blockquote{
.last_photos_thumbs img{
margin: 0 10px;
}
.top_page_banner{
display: block;
width: 1200px;
height: 130px;
margin: 10px auto;
background-color: #00A6C7;
}

File diff suppressed because one or more lines are too long

@ -413,7 +413,11 @@ if (EXPO.profile){
*/
this.afterSubmitHandler = function (data) {
if (data.success){
location.reload();
if (data.redirect_url) {
window.location = data.redirect_url;
} else {
location.reload();
}
}else{

File diff suppressed because one or more lines are too long

@ -94,61 +94,50 @@
<div class="article_author">
<div class="author">
{# для thumbnail '148x148' crop="center" #}
<img src="{% static 'img/article_author.png' %}" alt="">
<h4>Евгения Мануковская</h4>
<i>руководитель Expomap</i>
{% thumbnail object.author_s.photo '148x148' crop="center" as im %}
<img src="{{ im.url }}" alt="">
{% endthumbnail %}
<h4>{{ object.author_s.fullname }}</h4>
<i>{{ object.author_s.position|default:'' }}</i>
<ul>
<li><i class="fa fa-envelope"></i> <a href="mailto:manykovskaj@gmail.com">manykovskaj@gmail.com</a></li>
{% if object.author_s.email %}
<li><i class="fa fa-envelope"></i> <a href="mailto:{{ object.author_s.email }}">{{ object.author_s.email }}</a></li>
{% endif %}
<li>
<a href="#"><i class="fa fa-rss-square"></i></a>
<a href="#"><i class="fa fa-facebook-square"></i></a>
<a href="#"><i class="fa fa-linkedin-square"></i></a>
{# <a href="#"><i class="fa fa-rss-square"></i></a>#}
{% if object.author_s.fb %}
<a href="{{ object.author_s.fb }}"><i class="fa fa-facebook-square"></i></a>
{% endif %}
{% if object.author_s.linkedin %}
<a href="{{ object.author_s.linkedin }}"><i class="fa fa-linkedin-square"></i></a>
{% endif %}
</li>
</ul>
</div>
<div class="author_about">
<p>Сайт рыбатекст поможет дизайнеру, верстальщику, вебмастеру сгенерировать несколько абзацев более менее осмысленного текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более привлекательным и живым для визуально-слухового восприятия.</p>
<p>По своей сути рыбатекст является альтернативой традиционному lorem ipsum, который вызывает у некторых клиентов недоумение при попытках прочитать рыбу текст. В отличии от lorem ipsum, текст рыба на русском языке наполнит любой макет непонятным смыслом и придаст неповторимый колорит советских времен.</p>
{{ object.author_s.about|safe }}
</div>
</div>
<div class="recommended_articles">
<h2>{% trans 'Рекомендуемые статьи' %}</h2>
<div class="articles">
<div class="article">
{# thumbnail '217x148' crop="center" #}
<img src="{% static 'img/temp_article.jpg' %}" alt="">
<a href="#">Освоить системы аналитики системы аналитики</a>
<time><i class="fa fa-calendar"></i> 13 апреля 2016</time>
<p>Сайт рыбатекст поможет вебмастеру сгенерировать несколько абзацев более менее</p>
</div>
<div class="article">
{# thumbnail '217x148' crop="center" #}
<img src="{% static 'img/temp_article.jpg' %}" alt="">
<a href="#">Освоить системы аналитики системы аналитики</a>
<time><i class="fa fa-calendar"></i> 13 апреля 2016</time>
<p>Сайт рыбатекст поможет вебмастеру сгенерировать несколько абзацев более менее</p>
</div>
<div class="article">
{# thumbnail '217x148' crop="center" #}
<img src="{% static 'img/temp_article.jpg' %}" alt="">
<a href="#">Освоить системы аналитики системы аналитики</a>
<time><i class="fa fa-calendar"></i> 13 апреля 2016</time>
<p>Сайт рыбатекст поможет вебмастеру сгенерировать несколько абзацев более менее</p>
</div>
<div class="article">
{# thumbnail '217x148' crop="center" #}
<img src="{% static 'img/temp_article.jpg' %}" alt="">
<a href="#">Освоить системы аналитики системы аналитики</a>
<time><i class="fa fa-calendar"></i> 13 апреля 2016</time>
<p>Сайт рыбатекст поможет вебмастеру сгенерировать несколько абзацев более менее</p>
{% if object.get_similar %}
<div class="recommended_articles">
<h2>{% trans 'Рекомендуемые статьи' %}</h2>
<div class="articles">
{% for sim in object.get_similar %}
<div class="article">
{# thumbnail '217x148' crop="center" #}
{% thumbnail sim.logo '217x148' crop="center" as im %}
<img src="{{ im.url }}" alt="">
{% endthumbnail %}
<a href="{{ sim.get_permanent_url }}">{{ sim.main_title }}</a>
<time><i class="fa fa-calendar"></i> {{ sim.publish_date|date:"d E Y" }}</time>
<p>{{ sim.preview }}</p>
</div>
{% endfor %}
</div>
</div>
</div>
{% endif %}
<div class="article_comments">
<h2>{% trans 'Комментарии' %}</h2>

@ -1,6 +1,7 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
{% load tempalte_tags %}
{% get_current_language as LANGUAGE_CODE %}
{% comment %}
@ -153,6 +154,9 @@ This template include basic anf main styles and js files,
<!-- Английский вариант текста для p.chromeframe -->
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
{% endcomment %}
{% get_top_banner %}
<div class="page-wrap">
{% block header %}
{% include 'client/includes/header.html' %}

@ -0,0 +1,9 @@
<div id="top_page_banner">
{% if is_img %}
<a href="{{ url }}" class="top_page_banner">
<img src="{{ img }}" alt="">
</a>
{% elif is_html %}
{{ text|safe }}
{% endif %}
</div>

@ -10,59 +10,71 @@
<div class="header-body mcl">
<div class="header-top clearfix">
<div class="ht-main">
<ul class="lang-switch">
{% get_current_language as LANGUAGE_CODE %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<li>
{% if LANGUAGE_CODE == language.code %}
{{ language.code }}
{# <div class="header-top clearfix">#}
{# <div class="ht-main">#}
{##}
{# <ul class="lang-switch">#}
{# {% get_current_language as LANGUAGE_CODE %}#}
{# {% get_language_info_list for LANGUAGES as languages %}#}
{# {% for language in languages %}#}
{# <li>#}
{# {% if LANGUAGE_CODE == language.code %}#}
{# {{ language.code }}#}
{# {% else %}#}
{# {% if language.code == 'ru' %}#}
{# <a href="{{ request.get_full_path|slice:'3:' }}">#}
{# {% else %}#}
{# <a href="/{{ language.code }}{{ request.get_full_path }}">#}
{# {% endif %}#}
{# {{ language.code }}</a>#}
{# {% endif %}#}
{##}
{# </li>#}
{# {% endfor %}#}
{# </ul>#}
{# </div>#}
{# </div>#}
<div class="hb-wrap clearfix">
<ul class="lang-switch">
{% get_current_language as LANGUAGE_CODE %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<li>
{% if LANGUAGE_CODE == language.code %}
{{ language.code }}
{% else %}
{% if language.code == 'ru' %}
<a href="{{ request.get_full_path|slice:'3:' }}">
{% else %}
{% if language.code == 'ru' %}
<a href="{{ request.get_full_path|slice:'3:' }}">
{% else %}
<a href="/{{ language.code }}{{ request.get_full_path }}">
{% endif %}
{{ language.code }}</a>
<a href="/{{ language.code }}{{ request.get_full_path }}">
{% endif %}
{{ language.code }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% comment %}
<ul class="lang-switch">
<div class="serv-links">
<ul>
<li><a href="{{ expo_catalog }}city/moscow/">{% trans 'Выставки в Москве' %}</a></li>
<li><a href="{{ expo_catalog }}city/saint-petersburg/">{% trans 'Выставки в Петербурге' %}</a></li>
<li><a href="{{ expo_catalog }}country/germany/">{% trans 'Выставки в Германии' %}</a></li>
</ul>
{% for lang in LANGUAGES %}
<ul>
<li><a href="{{ expo_catalog }}city/">{% trans 'Выставки по городам' %}</a></li>
<li><a href="{{ expo_catalog }}country/">{% trans 'Выставки по странам' %}</a></li>
<li><a href="{{ expo_catalog }}theme/">{% trans 'Выставки по тематикам' %}</a></li>
</ul>
<form style="float:left;" name="setLang{{ lang.1}}" action="/i18n/setlang/" method="POST">{% csrf_token %}
<li>
<input type="hidden" name="language" value="{{ lang.0 }}" />
{% ifequal LANGUAGE_CODE lang.0 %}
{{ lang.0 }}
{% else %}
<a href="#" onclick="document.setLang{{ lang.1 }}.submit();return false;">{{ lang.0 }}</a>
{% endifequal %}
</li>
</form>
</div>
{% endfor %}
{% if user.is_staff %}
<li><a href="/admin/">admin</a></li>
{% endif %}
</ul>
{% endcomment %}
</div>
{# {% include 'client/includes/banners/header.html' %}#}
<div class="ht-side">
<div class="ht-side">
<ul class="soc-media-buttons">
{% comment %}
<!-- task EXPO-145-->
<li><a href="http://expomap.ru/rss3.php/" target="_blank"><img src="{% static 'client/img/soc-medias/sm-icon-rss.png' %} " title="RSS" alt="RSS" /></a></li>
{% endcomment %}
<li><a href="https://instagram.com/expomap/" target="_blank"><img src="{% static 'client/img/soc-medias/sm-icon-inst.png" title="Instagram" alt="Instagram' %} " /></a></li>
<li><a href="https://www.youtube.com/user/expomaptv" target="_blank"><img src="{% static 'client/img/soc-medias/sm-icon-youtube.png" title="Youtube" alt="Youtube' %} " /></a></li>
<li><a href="https://www.facebook.com/Expomap" target="_blank"><img src="{% static 'client/img/soc-medias/sm-icon-fb.png" title="Facebook" alt="Facebook' %} " /></a></li>
@ -70,27 +82,43 @@
<li><a href="http://vk.com/expomap" target="_blank"><img src="{% static 'client/img/soc-medias/sm-icon-vk.png" title="В контакте" alt="В контакте' %} " /></a></li>
<li><a href="https://twitter.com/expomap_ru" target="_blank"><img src="{% static 'client/img/soc-medias/sm-icon-twit.png" title="Twitter" alt="Twitter' %} " /></a></li>
</ul>
{% if user.is_authenticated %}
<div class="cabinet-links">
<div class="cl-body clearfix">
<div class="clb-profile"><a class="icon-user" href="{{ request.user.get_permanent_url }}">{% trans 'личный кабинет' %}</a></div>
<div class="clb-docs">
<a class="cl-btn icon-cal" href="{% url 'account_calendar' %}">{% trans 'календарь' %}</a>
<a class="cl-btn icon-doc" href="/profile/feed/">{% trans 'документы' %}</a>
</div>
<div class="clb-settings">
{# <a class="cl-btn icon-gear" href="/profile/settings/">{% trans 'настройки' %}</a>#}
<a class="" href="/profile/settings/"><i class="fa fa-cog"></i></a>
</div>
<div class="clb-messages">
<a class="icon-msg" style="float: left;" href="/profile/messages/">{% if messages_inbox_count %} {{ messages_inbox_count }} {% endif %}</a>
<a href="{% url 'accounts-mailing_settings' %}" style="font-size: 18px" target="_blank">@</a>
{# <a class="icon-msg" style="float: left;" href="/profile/messages/">{% if messages_inbox_count %} {{ messages_inbox_count }} {% endif %}</a>#}
{# <a href="{% url 'accounts-mailing_settings' %}" style="font-size: 18px" target="_blank">@</a>#}
<a style="float: left;" href="/profile/messages/"><i class="fa fa-envelope-o"></i>{% if messages_inbox_count %} {{ messages_inbox_count }} {% endif %}</a>
{# <a href="{% url 'accounts-mailing_settings' %}" style="font-size: 18px" target="_blank"><i class="fa fa-at"></i></a>#}
</div>
<div class="clb-settings">
<a class="cl-btn icon-gear" href="/profile/settings/">{% trans 'настройки' %}</a>
<div class="clb-docs">
{# <a class="cl-btn icon-cal" href="{% url 'account_calendar' %}">{% trans 'календарь' %}</a>#}
{# <a class="cl-btn icon-doc" href="/profile/feed/">{% trans 'документы' %}</a>#}
<a class="" href="{% url 'account_calendar' %}"><i class="fa fa-calendar"></i></a>
<a class="" href="/profile/feed/"><i class="fa fa-file-text-o"></i></a>
</div>
<div class="clb-profile">
{# <a class="icon-user" href="{{ request.user.get_permanent_url }}">{% trans 'личный кабинет' %}</a>#}
<a href="{{ request.user.get_permanent_url }}"><i class="fa fa-user"></i> {% trans 'личный кабинет' %}</a>
</div>
</div>
<div class="logout"><a href="/logout/">{% trans 'Выход' %}</a></div>
</div>
{% else %}
<div class="authorisation-links">
<a href="http://partner.expomap.ru/" target="_blank" class="l-button"><i class="fa fa-plus-circle"></i> {% trans 'Добавить событие' %}</a>
<a class="l-button ico register pw-open" href="#pw-reg">{% trans 'Регистрация' %}</a>
<a class="l-button ico login pw-open" href="#pw-login">{% trans 'вход' %}</a>
</div>
@ -99,27 +127,6 @@
</div>
<div class="hb-wrap clearfix">
<div class="serv-links">
<ul>
<li><a href="{{ expo_catalog }}city/moscow/">{% trans 'Выставки в Москве' %}</a></li>
<li><a href="{{ expo_catalog }}city/saint-petersburg/">{% trans 'Выставки в Петербурге' %}</a></li>
<li><a href="{{ expo_catalog }}country/germany/">{% trans 'Выставки в Германии' %}</a></li>
</ul>
<ul>
<li><a href="{{ expo_catalog }}city/">{% trans 'Выставки по городам' %}</a></li>
<li><a href="{{ expo_catalog }}country/">{% trans 'Выставки по странам' %}</a></li>
<li><a href="{{ expo_catalog }}theme/">{% trans 'Выставки по тематикам' %}</a></li>
</ul>
</div>
{% include 'client/includes/banners/header.html' %}
</div>
</div>
</div>
</header>

Loading…
Cancel
Save