From 7c94bf4ef6cab6ba0a444931cf1c6898f0e3b47a Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Tue, 3 May 2016 14:48:31 +0300 Subject: [PATCH 1/3] current --- article/forms.py | 8 ++-- article/models.py | 3 +- .../admin/article/article_admin_list.html | 22 ++++----- templates/admin/article/blog_form.html | 21 ++++----- theme/admin.py | 45 ++++++++++++------- 5 files changed, 58 insertions(+), 41 deletions(-) diff --git a/article/forms.py b/article/forms.py index e476d26b..ccf65d08 100644 --- a/article/forms.py +++ b/article/forms.py @@ -46,7 +46,7 @@ class BlogForm(forms.Form): self.fields['descriptions_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) - def save(self, author, article=None): + def save(self, author, article=None, commit=True): data = self.cleaned_data # create new Article object or get exists if not article: @@ -55,7 +55,7 @@ class BlogForm(forms.Form): article.type = self.type if not getattr(article, 'slug', None): - article.slug = data['slug'] + article.slug = data['slug'] if data['logo']: article.logo = data['logo'] @@ -77,8 +77,8 @@ class BlogForm(forms.Form): #for item in data['tag']: # article.tag.add(item) - article.save() - + if commit == True: + article.save() return article def clean_tag(self): diff --git a/article/models.py b/article/models.py index 352d2f08..2be01f4a 100644 --- a/article/models.py +++ b/article/models.py @@ -59,6 +59,7 @@ class Article(TranslatableModel): "set a custom description."), default=False) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) + draft = models.BooleanField(_(u'Черновик'), default=False, db_index=True) #translated fields translations = TranslatedFields( @@ -234,4 +235,4 @@ class Article(TranslatableModel): .order_by('-publish_date')[:3]) -post_save.connect(post_save_handler, sender=Article) \ No newline at end of file +post_save.connect(post_save_handler, sender=Article) diff --git a/templates/admin/article/article_admin_list.html b/templates/admin/article/article_admin_list.html index ad2a85a4..a0d9f5f1 100644 --- a/templates/admin/article/article_admin_list.html +++ b/templates/admin/article/article_admin_list.html @@ -1,20 +1,22 @@ {% extends 'base.html' %} +{% load i18n %} + {% block body %}
-

Список статей

+

{% trans "Список статей" %}

@@ -63,4 +65,4 @@
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/admin/article/blog_form.html b/templates/admin/article/blog_form.html index 1b41a403..239463bc 100644 --- a/templates/admin/article/blog_form.html +++ b/templates/admin/article/blog_form.html @@ -1,5 +1,6 @@ {% extends 'base.html' %} {% load static %} +{% load i18n %} {# Displays article form #} {% block scripts %} @@ -34,11 +35,11 @@ {{ form.errors }}
{% csrf_token %}
- {% if article %} Изменить {% else %} Добавить {% endif %}статью{% if article %}(на сайте){% endif %} + {% if article %} {% trans "Изменить" %} {% else %} {% trans "Добавить" %} {% endif %}{% trans "статью" %}{% if article %}({% trans "на сайте" %}){% endif %}
-

Основная информация

+

{% trans "Основная информация" %}

@@ -124,14 +125,14 @@
-

Файлы

+

{% trans "Файлы" %}

{% if article %} {# button that shows modal window with file form #} - Добавить файл + {% trans "Добавить файл" %} {% else %} -

Файлы можно добавлять только после введения основных данных

+

{% trans "Файлы можно добавлять только после введения основных данных" %}

{% endif %} {# this div shows list of files and refreshes when new file added #}
@@ -139,10 +140,10 @@ - id - Файл - Имя - Назначение + {% trans "id" %} + {% trans "Файл" %} + {% trans "Имя" %} + {% trans "Назначение" %} @@ -205,4 +206,4 @@ $(document).ready(function(){ }); -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/theme/admin.py b/theme/admin.py index d2288161..d481feed 100644 --- a/theme/admin.py +++ b/theme/admin.py @@ -1,17 +1,34 @@ -# -*- coding: utf-8 -*- -from django.shortcuts import render_to_response -from django.http import HttpResponseRedirect, HttpResponse -from django.core.context_processors import csrf +#custom views +import json + from django.conf import settings -from django.views.generic import CreateView, UpdateView, DeleteView from django.contrib.auth.decorators import login_required +from django.core.context_processors import csrf +from django.core.urlresolvers import reverse_lazy +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render_to_response +from django.views.generic import CreateView, DeleteView, UpdateView +# -*- coding: utf-8 -*- #forms and models -from forms import ThemeForm, TagForm, ThemeDeleteForm, TagDeleteForm, TagFilterForm, ThemeFilterForm -from models import Theme, Tag, ThemeBlog -#custom views -from functions.custom_views import objects_list, add_object, delete_object, ListView -from functions.views_help import get_referer +from forms import ( + TagDeleteForm, + TagFilterForm, + TagForm, + ThemeDeleteForm, + ThemeFilterForm, + ThemeForm +) from functions.admin_views import AdminListView +from functions.custom_views import ( + ListView, + add_object, + delete_object, + objects_list +) +from functions.views_help import get_referer + +from .forms import ThemeBlogForm +from .models import Tag, Theme, ThemeBlog def theme_all(request): @@ -131,8 +148,6 @@ def tag_change(request, tag_id=None): return render_to_response('tag_add.html', args) -from django.http import HttpResponse -import json def search_tag(request): theme = request.GET['theme'] @@ -149,6 +164,7 @@ def search_tag(request): return HttpResponse(json.dumps(tags), content_type='application/json') + def search2(request): term = request.GET['term'] if not term: @@ -171,9 +187,6 @@ class TagListView(AdminListView): model = Tag -from functions.custom_views import ListView -from django.core.urlresolvers import reverse_lazy -from .forms import ThemeBlogForm class ThemeBlogListView(ListView): @@ -234,4 +247,4 @@ class ThemeBlogCreateView(CreateView): template_name = "admin/theme/theme_blog_new.html" model = ThemeBlog form_class = ThemeBlogForm - success_url = reverse_lazy("theme_blog_all") \ No newline at end of file + success_url = reverse_lazy("theme_blog_all") From 4cfb81fa5d36098b32bc99a8736ae9550f30d9d5 Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Wed, 4 May 2016 13:56:09 +0300 Subject: [PATCH 2/3] =?UTF-8?q?1322:=20=D0=AD=D1=82=D0=B0=D0=BF=20?= =?UTF-8?q?=E2=84=963=20-=20=D0=A1=D1=82=D0=B0=D1=82=D1=8C=D0=B8=20part=20?= =?UTF-8?q?2,=203=20done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- article/admin.py | 8 +- article/forms.py | 18 +- article/managers.py | 7 +- article/migrations/0001_initial.py | 668 ++++++++++++++++++ .../0002_auto__add_field_article_draft.py | 593 ++++++++++++++++ article/migrations/__init__.py | 0 article/models.py | 2 +- article/views.py | 6 +- .../admin/article/article_admin_list.html | 6 +- templates/admin/article/blog_form.html | 20 + templates/client/article/article.html | 4 +- 11 files changed, 1317 insertions(+), 15 deletions(-) create mode 100644 article/migrations/0001_initial.py create mode 100644 article/migrations/0002_auto__add_field_article_draft.py create mode 100644 article/migrations/__init__.py diff --git a/article/admin.py b/article/admin.py index 0ee17583..70698ca5 100644 --- a/article/admin.py +++ b/article/admin.py @@ -135,7 +135,7 @@ class BlogList(ListView): paginate_by = settings.ADMIN_PAGINATION def get_queryset(self): - return self.model.objects.blogs() + return self.model.objects.blogs_all() def get_context_data(self, **kwargs): context = super(BlogList, self).get_context_data(**kwargs) @@ -179,9 +179,9 @@ class BlogView(FormView): data['exposition'] = article.exposition.id if article.conference: data['conference'] = article.conference.id - + data['draft'] = article.draft data['publish_date'] = article.publish_date - a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) + # a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) data['tag'] = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) for code, name in settings.LANGUAGES: @@ -248,4 +248,4 @@ class BlogCreate(CreateView): model = Blog form_class = BlogForm template_name = 'admin/blog/blog_add.html' -""" \ No newline at end of file +""" diff --git a/article/forms.py b/article/forms.py index ccf65d08..9fc5304c 100644 --- a/article/forms.py +++ b/article/forms.py @@ -14,7 +14,7 @@ from exposition.models import Exposition from conference.models import Conference -class BlogForm(forms.Form): +class _BlogForm(forms.Form): type = Article.blog theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=ThemeBlog.objects.all(), required=False, widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) @@ -27,7 +27,7 @@ class BlogForm(forms.Form): """ create dynamical translated fields fields """ - super(BlogForm, self).__init__(*args, **kwargs) + super(_BlogForm, self).__init__(*args, **kwargs) #creates translated forms example: name_ru, name_en # len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs if len(settings.LANGUAGES) in range(10): @@ -95,7 +95,17 @@ class BlogForm(forms.Form): return [] -class NewsForm(BlogForm): +class BlogForm(_BlogForm): + draft = forms.BooleanField(label=_(u'Черновик'), required=False, localize=True) + + def save(self, author, article=None, commit=True): + article = super(BlogForm, self).save(author, article=article, commit=False) + article.draft = self.cleaned_data['draft'] + article.save() + + + +class NewsForm(_BlogForm): type = Article.news exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput(), required=False) conference = forms.CharField(label=u'Конференция', widget=forms.HiddenInput(), required=False) @@ -103,7 +113,7 @@ class NewsForm(BlogForm): widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) def save(self, author, article=None): - article = super(NewsForm, self).save(author, article) + article = super(NewsForm, self).save(author, article, commit=False) exposition = self.cleaned_data.get('exposition') conference = self.cleaned_data.get('conference') theme = self.cleaned_data.get('theme') diff --git a/article/managers.py b/article/managers.py index 108d8b10..d1f77f1a 100644 --- a/article/managers.py +++ b/article/managers.py @@ -19,13 +19,16 @@ class ArticleManager(TranslationManager): model = self.model return self.language().filter(type=model.news) - def blogs(self): + def blogs_all(self): """ return queryset of blogs """ model = self.model return self.language().filter(type=model.blog) + def blogs(self): + return self.blogs_all().filter(draft=False) + def main_page_news(self, cached=True): lang = translation.get_language() key = 'main_page_news_%s' % lang @@ -46,4 +49,4 @@ class ArticleManager(TranslationManager): else: blogs = list(self.blogs().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date')[:3]) cache.set(key, blogs, self.cache_time) - return blogs \ No newline at end of file + return blogs diff --git a/article/migrations/0001_initial.py b/article/migrations/0001_initial.py new file mode 100644 index 00000000..906dfc53 --- /dev/null +++ b/article/migrations/0001_initial.py @@ -0,0 +1,668 @@ +# -*- 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 'ArticleTranslation' + db.create_table(u'article_article_translation', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('main_title', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('preview', self.gf('django.db.models.fields.TextField')()), + ('description', self.gf('django.db.models.fields.TextField')()), + ('title', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('descriptions', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('keywords', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), + ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['article.Article'])), + )) + db.send_create_signal(u'article', ['ArticleTranslation']) + + # Adding unique constraint on 'ArticleTranslation', fields ['language_code', 'master'] + db.create_unique(u'article_article_translation', ['language_code', 'master_id']) + + # Adding model 'Article' + db.create_table(u'article_article', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255)), + ('old_id', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)), + ('logo', self.gf(u'sorl.thumbnail.fields.ImageField')(max_length=100, blank=True)), + ('author', self.gf('django.db.models.fields.related.ForeignKey')(related_name='articles', on_delete=models.PROTECT, to=orm['accounts.User'])), + ('exposition', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['exposition.Exposition'], null=True, blank=True)), + ('conference', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['conference.Conference'], null=True, blank=True)), + ('type', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1, db_index=True)), + ('allow_comments', self.gf('django.db.models.fields.BooleanField')(default=True)), + ('publish_date', self.gf('django.db.models.fields.DateTimeField')(db_index=True, null=True, blank=True)), + ('expiry_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), + ('in_sitemap', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('main_page', self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True)), + ('main_page_time', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), + ('gen_description', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), + ('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)), + )) + db.send_create_signal(u'article', ['Article']) + + # Adding M2M table for field theme on 'Article' + m2m_table_name = db.shorten_name(u'article_article_theme') + db.create_table(m2m_table_name, ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('article', models.ForeignKey(orm[u'article.article'], null=False)), + ('theme', models.ForeignKey(orm[u'theme.theme'], null=False)) + )) + db.create_unique(m2m_table_name, ['article_id', 'theme_id']) + + # Adding M2M table for field blog_theme on 'Article' + m2m_table_name = db.shorten_name(u'article_article_blog_theme') + db.create_table(m2m_table_name, ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('article', models.ForeignKey(orm[u'article.article'], null=False)), + ('themeblog', models.ForeignKey(orm[u'theme.themeblog'], null=False)) + )) + db.create_unique(m2m_table_name, ['article_id', 'themeblog_id']) + + # Adding M2M table for field tag on 'Article' + m2m_table_name = db.shorten_name(u'article_article_tag') + db.create_table(m2m_table_name, ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('article', models.ForeignKey(orm[u'article.article'], null=False)), + ('tag', models.ForeignKey(orm[u'theme.tag'], null=False)) + )) + db.create_unique(m2m_table_name, ['article_id', 'tag_id']) + + + def backwards(self, orm): + # Removing unique constraint on 'ArticleTranslation', fields ['language_code', 'master'] + db.delete_unique(u'article_article_translation', ['language_code', 'master_id']) + + # Deleting model 'ArticleTranslation' + db.delete_table(u'article_article_translation') + + # Deleting model 'Article' + db.delete_table(u'article_article') + + # Removing M2M table for field theme on 'Article' + db.delete_table(db.shorten_name(u'article_article_theme')) + + # Removing M2M table for field blog_theme on 'Article' + db.delete_table(db.shorten_name(u'article_article_blog_theme')) + + # Removing M2M table for field tag on 'Article' + db.delete_table(db.shorten_name(u'article_article_tag')) + + + 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']"}), + 'blog_theme': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['theme.ThemeBlog']", 'symmetrical': 'False'}), + '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'}), + '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', [], {}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', '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'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'}), + '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', [], {}), + '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'}), + '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'}), + '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']"}), + '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': "'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'}), + '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'}), + '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']"}), + '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'}), + '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'}), + 'flash': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2016, 5, 3, 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.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'}), + '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'", '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'}, + '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, 5, 3, 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'}) + }, + 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'}), + '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', [], {}), + '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'}), + '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'}), + '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'}), + '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'}), + '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'}), + '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'}), + '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': ('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'theme.themeblog': { + 'Meta': {'unique_together': '()', 'object_name': 'ThemeBlog', 'index_together': '()'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + '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'] \ No newline at end of file diff --git a/article/migrations/0002_auto__add_field_article_draft.py b/article/migrations/0002_auto__add_field_article_draft.py new file mode 100644 index 00000000..3f741343 --- /dev/null +++ b/article/migrations/0002_auto__add_field_article_draft.py @@ -0,0 +1,593 @@ +# -*- 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 'Article.draft' + db.add_column(u'article_article', 'draft', + self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Article.draft' + db.delete_column(u'article_article', 'draft') + + + 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']"}), + 'blog_theme': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['theme.ThemeBlog']", 'symmetrical': 'False'}), + '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', [], {}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', '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'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'}), + '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', [], {}), + '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'}), + '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'}), + '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']"}), + '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': "'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'}), + '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'}), + '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']"}), + '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'}), + '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'}), + 'flash': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2016, 5, 3, 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.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'}), + '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'", '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'}, + '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, 5, 3, 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'}) + }, + 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'}), + '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', [], {}), + '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'}), + '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'}), + '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'}), + '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'}), + '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'}), + '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'}), + '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': ('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'theme.themeblog': { + 'Meta': {'unique_together': '()', 'object_name': 'ThemeBlog', 'index_together': '()'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + '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'] \ No newline at end of file diff --git a/article/migrations/__init__.py b/article/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/article/models.py b/article/models.py index 2be01f4a..bf6d7079 100644 --- a/article/models.py +++ b/article/models.py @@ -59,7 +59,7 @@ class Article(TranslatableModel): "set a custom description."), default=False) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) - draft = models.BooleanField(_(u'Черновик'), default=False, db_index=True) + draft = models.BooleanField(_(u'Черновик'), default=False, blank=True, db_index=True) #translated fields translations = TranslatedFields( diff --git a/article/views.py b/article/views.py index 8ff8da5f..bea635c3 100644 --- a/article/views.py +++ b/article/views.py @@ -121,6 +121,10 @@ class BlogDetail(MetadataMixin, DetailView): slug_field = 'slug' template_name = 'client/article/article.html' + def get_queryset(self): + qs = super(BlogDetail, self).get_queryset() + return qs.filter(draft=False) + class NewsTagCatalog(MetadataMixin, ListView): """ @@ -221,4 +225,4 @@ class BlogsFilterCatalog(MetadataMixin, ListView): context['year'] = self.year context['month'] = self.month context['catalog_url'] = self.catalog_url - return context \ No newline at end of file + return context diff --git a/templates/admin/article/article_admin_list.html b/templates/admin/article/article_admin_list.html index a0d9f5f1..285aeb12 100644 --- a/templates/admin/article/article_admin_list.html +++ b/templates/admin/article/article_admin_list.html @@ -25,7 +25,11 @@ {{ item.main_title }} - {% ifnotequal item.author None %}{{ item.author }} {% endifnotequal %} + {% ifnotequal item.author None %}{{ item.author }} {% endifnotequal %} + {% if item.draft %} +
{% trans "Черновик" %} + {% endif %} + {% trans "Изменить" %} diff --git a/templates/admin/article/blog_form.html b/templates/admin/article/blog_form.html index 239463bc..ff38291d 100644 --- a/templates/admin/article/blog_form.html +++ b/templates/admin/article/blog_form.html @@ -155,6 +155,26 @@
+ {% if form.exposition %} +
+ +
+ {{ form.exposition }} + {{ form.exposition.errors }} +
+
+ {% endif %} + + {% if form.draft %} +
+ +
+ {{ form.draft }} + {{ form.draft.errors }} +
+
+ {% endif %} +
diff --git a/templates/client/article/article.html b/templates/client/article/article.html index 1cdd26d9..9b6050e9 100644 --- a/templates/client/article/article.html +++ b/templates/client/article/article.html @@ -30,7 +30,7 @@
- {% trans 'Источник' %}: {{ object.author }} + {# {% trans 'Источник' %}: {{ object.author }} #} {% if object.tag.all.exists %}
{% include 'includes/article_tags.html' with obj=object %} @@ -63,4 +63,4 @@
{% endif %} {% endwith %} -{% endblock %} \ No newline at end of file +{% endblock %} From 656d943d283427cf95eb9d0d18a6c0e82b3c5d18 Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Wed, 4 May 2016 17:23:42 +0300 Subject: [PATCH 3/3] =?UTF-8?q?1322:=20=D0=AD=D1=82=D0=B0=D0=BF=20?= =?UTF-8?q?=E2=84=963=20-=20=D0=A1=D1=82=D0=B0=D1=82=D1=8C=D0=B8=20part=20?= =?UTF-8?q?2,3,4=20done=20part=201/2=20done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- article/managers.py | 2 +- exposition/forms.py | 7 +- templates/admin/theme/theme_add.html | 11 +- theme/admin.py | 2 +- theme/forms.py | 25 +-- theme/migrations/0001_initial.py | 177 ++++++++++++++++++ ...auto__add_field_theme_blogtheme_linking.py | 82 ++++++++ theme/migrations/__init__.py | 0 theme/models.py | 35 ++-- 9 files changed, 304 insertions(+), 37 deletions(-) create mode 100644 theme/migrations/0001_initial.py create mode 100644 theme/migrations/0002_auto__add_field_theme_blogtheme_linking.py create mode 100644 theme/migrations/__init__.py diff --git a/article/managers.py b/article/managers.py index d1f77f1a..c1be6975 100644 --- a/article/managers.py +++ b/article/managers.py @@ -47,6 +47,6 @@ class ArticleManager(TranslationManager): cached_blogs = cache.get(key) return cached_blogs else: - blogs = list(self.blogs().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date')[:3]) + blogs = list(self.blogs().filter(publish_date__isnull=False).order_by('-publish_date')[:3]) cache.set(key, blogs, self.cache_time) return blogs diff --git a/exposition/forms.py b/exposition/forms.py index f64f8411..687a0393 100644 --- a/exposition/forms.py +++ b/exposition/forms.py @@ -49,8 +49,9 @@ class ExpositionCreateForm(forms.Form): #company = forms.MultipleChoiceField(label=u'Компании', required=False, # choices=[(item.id, item.name) for item in Company.objects.language().all()] ) country = forms.ChoiceField(label=u'Страна', choices=[(c.id, c.name) for c in Country.objects.all()]) - theme = forms.MultipleChoiceField(label='Тематики', - choices=[(item.id, item.name) for item in Theme.objects.language().all()]) + theme = forms.MultipleChoiceField( + label='Тематики', + choices=[(item.id, item.name) for item in Theme.objects.language().filter(types=Theme.types.exposition)]) place = forms.ChoiceField(label=u'Место проведения', required=False, choices=places) place_alt = forms.CharField(required=False, label=u'Альтернативное место') @@ -617,4 +618,4 @@ class ExpositionFilterForm(AdminFilterForm): if month: qs = qs.filter(data_begin__month=month) - return qs \ No newline at end of file + return qs diff --git a/templates/admin/theme/theme_add.html b/templates/admin/theme/theme_add.html index 6b4bbfb8..1131164b 100644 --- a/templates/admin/theme/theme_add.html +++ b/templates/admin/theme/theme_add.html @@ -35,6 +35,15 @@ {{ form.types.errors }}
+ {# blogtheme_linking #} +
+ +
+ {{ form.blogtheme_linking }} + {{ form.blogtheme_linking.errors }} +

{{ form.blogtheme_linking.help_text }}

+
+
{# main_title #} {% with field='main_title' form=form languages=languages %} {% include 'admin/forms/multilang.html' %} @@ -67,4 +76,4 @@
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/theme/admin.py b/theme/admin.py index d481feed..30d7886a 100644 --- a/theme/admin.py +++ b/theme/admin.py @@ -86,7 +86,7 @@ def theme_change(request, theme_id=None): data = {} #bitfeild data['types'] = [item for item, bool in theme.types if bool==True] - + data['blogtheme_linking'] = theme.blogtheme_linking #data from translated fields diff --git a/theme/forms.py b/theme/forms.py index 7571a784..1c9e2831 100644 --- a/theme/forms.py +++ b/theme/forms.py @@ -1,22 +1,24 @@ # -*- coding: utf-8 -*- -from django import forms -from models import Tag, Theme - -from bitfield.types import BitHandler from bitfield import BitField from bitfield.forms import BitFieldCheckboxSelectMultiple, BitFormField - -from django.conf import settings +from bitfield.types import BitHandler from ckeditor.widgets import CKEditorWidget -from functions.translate import fill_with_signal +from django import forms +from django.conf import settings from functions.admin_forms import AdminFilterForm from functions.form_check import translit_with_separator +from functions.translate import fill_with_signal +from hvad.forms import TranslatableModelForm - +from .models import Tag, Theme, ThemeBlog class ThemeForm(forms.Form): types = forms.MultipleChoiceField(label='Тип', required=False, choices=Theme.FLAGS, widget=forms.CheckboxSelectMultiple()) + blogtheme_linking = forms.ModelChoiceField( + label=u'тема для блога', queryset=ThemeBlog.objects.all(), cache_choices=True, required=False, + help_text=u'''Выберите тему для блога, которая будет заменена на текущую тему.''' + u''' После миграции данных это поле будет удалено, а у всех статей у которых указана выбранная тема, будет заменена на текущую.''') def __init__(self, *args, **kwargs): super(ThemeForm, self).__init__(*args, **kwargs) @@ -58,8 +60,10 @@ class ThemeForm(forms.Form): #generates bitfield flag = reduce(lambda x,y: x|y, (getattr(Theme.types, item) for item in data['types'])) theme.types = flag + theme.blogtheme_linking = data['blogtheme_linking'] - #theme.save() + if theme.pk and theme.url: + theme.save() fill_with_signal(Theme, theme, data) if not theme.url: @@ -145,9 +149,6 @@ class ThemeFilterForm(AdminFilterForm): class TagFilterForm(AdminFilterForm): model = Tag -from hvad.forms import TranslatableModelForm -from .models import ThemeBlog - class _ThemeBlogForm(TranslatableModelForm): class Meta: diff --git a/theme/migrations/0001_initial.py b/theme/migrations/0001_initial.py new file mode 100644 index 00000000..d54170c2 --- /dev/null +++ b/theme/migrations/0001_initial.py @@ -0,0 +1,177 @@ +# -*- 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 'ThemeTranslation' + db.create_table(u'theme_theme_translation', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('main_title', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('description', self.gf('django.db.models.fields.TextField')(blank=True)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('descriptions', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('keywords', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), + ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['theme.Theme'])), + )) + db.send_create_signal(u'theme', ['ThemeTranslation']) + + # Adding unique constraint on 'ThemeTranslation', fields ['language_code', 'master'] + db.create_unique(u'theme_theme_translation', ['language_code', 'master_id']) + + # Adding model 'Theme' + db.create_table(u'theme_theme', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('url', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255)), + ('old_url', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255)), + ('types', self.gf('django.db.models.fields.BigIntegerField')(default=None)), + ('main_page', self.gf('django.db.models.fields.PositiveIntegerField')(default=0, db_index=True)), + ('inflect', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal(u'theme', ['Theme']) + + # Adding model 'ThemeBlogTranslation' + db.create_table(u'theme_themeblog_translation', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('main_title', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + ('description', self.gf('django.db.models.fields.TextField')(blank=True)), + ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), + ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['theme.ThemeBlog'])), + )) + db.send_create_signal(u'theme', ['ThemeBlogTranslation']) + + # Adding unique constraint on 'ThemeBlogTranslation', fields ['language_code', 'master'] + db.create_unique(u'theme_themeblog_translation', ['language_code', 'master_id']) + + # Adding model 'ThemeBlog' + db.create_table(u'theme_themeblog', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('url', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255)), + ('inflect', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal(u'theme', ['ThemeBlog']) + + # Adding model 'TagTranslation' + db.create_table(u'theme_tag_translation', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=100)), + ('main_title', self.gf('django.db.models.fields.CharField')(max_length=100)), + ('description', self.gf('django.db.models.fields.TextField')(blank=True)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=250, blank=True)), + ('descriptions', self.gf('django.db.models.fields.CharField')(max_length=250, blank=True)), + ('keywords', self.gf('django.db.models.fields.CharField')(max_length=250, blank=True)), + ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), + ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['theme.Tag'])), + )) + db.send_create_signal(u'theme', ['TagTranslation']) + + # Adding unique constraint on 'TagTranslation', fields ['language_code', 'master'] + db.create_unique(u'theme_tag_translation', ['language_code', 'master_id']) + + # Adding model 'Tag' + db.create_table(u'theme_tag', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('url', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255)), + ('old_url', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=255)), + ('theme', self.gf('django.db.models.fields.related.ForeignKey')(related_name='tags', on_delete=models.PROTECT, to=orm['theme.Theme'])), + ('inflect', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), + )) + db.send_create_signal(u'theme', ['Tag']) + + + def backwards(self, orm): + # Removing unique constraint on 'TagTranslation', fields ['language_code', 'master'] + db.delete_unique(u'theme_tag_translation', ['language_code', 'master_id']) + + # Removing unique constraint on 'ThemeBlogTranslation', fields ['language_code', 'master'] + db.delete_unique(u'theme_themeblog_translation', ['language_code', 'master_id']) + + # Removing unique constraint on 'ThemeTranslation', fields ['language_code', 'master'] + db.delete_unique(u'theme_theme_translation', ['language_code', 'master_id']) + + # Deleting model 'ThemeTranslation' + db.delete_table(u'theme_theme_translation') + + # Deleting model 'Theme' + db.delete_table(u'theme_theme') + + # Deleting model 'ThemeBlogTranslation' + db.delete_table(u'theme_themeblog_translation') + + # Deleting model 'ThemeBlog' + db.delete_table(u'theme_themeblog') + + # Deleting model 'TagTranslation' + db.delete_table(u'theme_tag_translation') + + # Deleting model 'Tag' + db.delete_table(u'theme_tag') + + + models = { + 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.tagtranslation': { + 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'TagTranslation', 'db_table': "u'theme_tag_translation'", 'index_together': '()'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'descriptions': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keywords': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}), + 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'main_title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['theme.Tag']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}) + }, + 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': ('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'theme.themeblog': { + 'Meta': {'unique_together': '()', 'object_name': 'ThemeBlog', 'index_together': '()'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}) + }, + u'theme.themeblogtranslation': { + 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'ThemeBlogTranslation', 'db_table': "u'theme_themeblog_translation'", 'index_together': '()'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'main_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['theme.ThemeBlog']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + u'theme.themetranslation': { + 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'ThemeTranslation', 'db_table': "u'theme_theme_translation'", 'index_together': '()'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + '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['theme.Theme']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + } + } + + complete_apps = ['theme'] \ No newline at end of file diff --git a/theme/migrations/0002_auto__add_field_theme_blogtheme_linking.py b/theme/migrations/0002_auto__add_field_theme_blogtheme_linking.py new file mode 100644 index 00000000..c754bc55 --- /dev/null +++ b/theme/migrations/0002_auto__add_field_theme_blogtheme_linking.py @@ -0,0 +1,82 @@ +# -*- 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 'Theme.blogtheme_linking' + db.add_column(u'theme_theme', 'blogtheme_linking', + self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['theme.ThemeBlog'], null=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Theme.blogtheme_linking' + db.delete_column(u'theme_theme', 'blogtheme_linking_id') + + + models = { + 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.tagtranslation': { + 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'TagTranslation', 'db_table': "u'theme_tag_translation'", 'index_together': '()'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'descriptions': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keywords': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}), + 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'main_title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['theme.Tag']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}) + }, + u'theme.theme': { + 'Meta': {'unique_together': '()', 'object_name': 'Theme', 'index_together': '()'}, + 'blogtheme_linking': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['theme.ThemeBlog']", 'null': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'main_page': ('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'theme.themeblog': { + 'Meta': {'unique_together': '()', 'object_name': 'ThemeBlog', 'index_together': '()'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}) + }, + u'theme.themeblogtranslation': { + 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'ThemeBlogTranslation', 'db_table': "u'theme_themeblog_translation'", 'index_together': '()'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), + 'main_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['theme.ThemeBlog']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + u'theme.themetranslation': { + 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'ThemeTranslation', 'db_table': "u'theme_theme_translation'", 'index_together': '()'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + '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['theme.Theme']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}) + } + } + + complete_apps = ['theme'] \ No newline at end of file diff --git a/theme/migrations/__init__.py b/theme/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/theme/models.py b/theme/models.py index 7a8e85c1..04e1a986 100644 --- a/theme/models.py +++ b/theme/models.py @@ -1,17 +1,23 @@ # -*- coding: utf-8 -*- -import datetime import copy -from django.db import models +import datetime +import random +import string + +from bitfield import BitField +from conference.models import Conference +from django.db import IntegrityError, models +from django.db.models.signals import post_save, pre_save from django.utils import translation from django.utils.translation import ugettext as _ -from hvad.models import TranslatableModel, TranslatedFields, TranslationManager -from bitfield import BitField from exposition.models import Exposition -from conference.models import Conference -from seminar.models import Seminar -from webinar.models import Webinar +from functions.form_check import translit_with_separator from functions.models_methods import ExpoManager +from functions.signal_handlers import post_save_handler +from hvad.models import TranslatableModel, TranslatedFields, TranslationManager from manager import TagActiveManager, ThemeActiveManager +from seminar.models import Seminar +from webinar.models import Webinar class Theme(TranslatableModel): @@ -32,10 +38,13 @@ class Theme(TranslatableModel): ('conference', 'Конференция'), ('seminar', 'Семинар'), ('webinar', 'Вебинар'), + ('article', 'Статья'), ) url = models.SlugField(unique=True, max_length=255) old_url = models.SlugField(unique=True, max_length=255) types = BitField([k for k, v in FLAGS]) + blogtheme_linking = models.ForeignKey('ThemeBlog', verbose_name=u'тема для блога', null=True, default=None, + help_text=u'Выберите тему для блога, которая будет заменена на текущую тему') #translated fields translations = TranslatedFields( name = models.CharField(max_length=255), @@ -156,7 +165,6 @@ class ThemeBlog(TranslatableModel): return ' '.join(self.get_all_names()) -from django.db import IntegrityError class Tag(TranslatableModel): """ Create Tag model @@ -243,15 +251,6 @@ class Tag(TranslatableModel): return parent - - - -from django.db.models.signals import post_save, pre_save -from functions.signal_handlers import post_save_handler -from functions.form_check import translit_with_separator -import random, string - - def pre_save_handler(sender, **kwargs): obj = kwargs['instance'] @@ -277,5 +276,3 @@ post_save.connect(post_save_handler, sender=Tag) #----------------------- - -