|
diff --git a/emencia/django/newsletter/views/tracking.py b/emencia/django/newsletter/views/tracking.py
index 60cb62da..a371d1ee 100644
--- a/emencia/django/newsletter/views/tracking.py
+++ b/emencia/django/newsletter/views/tracking.py
@@ -27,9 +27,20 @@ def view_newsletter_tracking(request, slug, uidb36, token, format):
"""Track the opening of the newsletter by requesting a blank img"""
newsletter = get_object_or_404(Newsletter, slug=slug)
contact = untokenize(uidb36, token)
- ContactMailingStatus.objects.create(newsletter=newsletter,
- contact=contact,
- status=ContactMailingStatus.OPENED)
+ params = dict(newsletter=newsletter,
+ contact=contact,
+ status=ContactMailingStatus.OPENED)
+ if newsletter.ab_testing:
+ try:
+ ab_state = ContactMailingStatus.objects.filter(
+ newsletter=newsletter,
+ contact=contact,
+ status__in=(ContactMailingStatus.SENT_TEST, ContactMailingStatus.SENT),
+ ).order_by('-creation_date')[0].ab
+ params.update({'ab': ab_state})
+ except:
+ pass
+ ContactMailingStatus.objects.create(**params)
return HttpResponse(base64.b64decode(TRACKING_IMAGE),
mimetype='image/%s' % format)
@@ -39,10 +50,22 @@ def view_newsletter_tracking_link(request, slug, uidb36, token, link_id):
newsletter = get_object_or_404(Newsletter, slug=slug)
contact = untokenize(uidb36, token)
link = get_object_or_404(Link, pk=link_id)
- ContactMailingStatus.objects.create(newsletter=newsletter,
- contact=contact,
- status=ContactMailingStatus.LINK_OPENED,
- link=link)
+ params = dict(newsletter=newsletter,
+ contact=contact,
+ status=ContactMailingStatus.LINK_OPENED,
+ link=link)
+ if newsletter.ab_testing:
+ try:
+ ab_state = ContactMailingStatus.objects.filter(
+ newsletter=newsletter,
+ contact=contact,
+ status__in=(ContactMailingStatus.SENT_TEST, ContactMailingStatus.SENT),
+ ).order_by('-creation_date')[0].ab
+ params.update({'ab': ab_state})
+ except:
+ pass
+
+ ContactMailingStatus.objects.create(**params)
if not USE_UTM_TAGS:
return HttpResponseRedirect(link.url)
diff --git a/events/common.py b/events/common.py
index e9daf93a..b4cb2f66 100644
--- a/events/common.py
+++ b/events/common.py
@@ -41,6 +41,13 @@ price_mapping = OrderedDict([
('N20', {'min': 20000, 'max': None, 'value': 4, 'label': _(u'более 20000 руб.')}),
])
+price_mapping_eur = OrderedDict([
+ ('N5', {'min': 1, 'max': 100, 'value': 1, 'label': _(u'до 100 евро')}),
+ ('N510', {'min': 100, 'max': 200, 'value': 2, 'label': _(u'100-200 евро')}),
+ ('N1020', {'min': 200, 'max': 400, 'value': 3, 'label': _(u'200-400 евро')}),
+ ('N20', {'min': 400, 'max': None, 'value': 4, 'label': _(u'более 400 евро')}),
+])
+
def get_choices_kwargs(mapping):
kwargs = OrderedDict()
for key, val in mapping.iteritems():
@@ -50,6 +57,7 @@ def get_choices_kwargs(mapping):
MEMBERS = EnumChoices(**get_choices_kwargs(members_mapping))
VISITORS = EnumChoices(**get_choices_kwargs(visitors_mapping))
PRICE = EnumChoices(**get_choices_kwargs(price_mapping))
+PRICE_EUR = EnumChoices(**get_choices_kwargs(price_mapping_eur))
TYPES = EnumChoices(
EXPO=(1, _(u'Выставки')),
CONF=(2, _(_(u'Конференции'))),
@@ -166,3 +174,10 @@ class GetCourse(object):
return 0
amount, converted = self.convert(char_code, amount)
return amount if amount else 0
+
+ def convert_to_eur_or_null(self, amount):
+ '''only from RUB
+ '''
+ if amount is None:
+ return 0
+ return int(round(amount / self.courses['EUR']))
diff --git a/events/forms.py b/events/forms.py
index f2826dbf..c6ae7eb9 100644
--- a/events/forms.py
+++ b/events/forms.py
@@ -38,8 +38,8 @@ from conference.models import Conference
from theme.models import Theme, Tag
from country.models import Country
from city.models import City
-from events.common import MEMBERS, VISITORS, PRICE, TYPES
-from events.common import members_mapping, visitors_mapping, price_mapping
+from events.common import MEMBERS, VISITORS, PRICE, PRICE_EUR, TYPES
+from events.common import members_mapping, visitors_mapping, price_mapping, price_mapping_eur
from events.common import ExtraWhere, OR, AND
@@ -156,12 +156,14 @@ fields_mapping = {
'members': 'members_choice',
'visitors': 'visitors_choice',
'price': 'price_choice',
+ 'price_eur': 'price_choice_eur',
}
values_mapping = {
'members_choice': members_mapping,
'visitors_choice': visitors_mapping,
'price_choice': price_mapping,
+ 'price_choice_eur': price_mapping_eur,
}
@@ -244,6 +246,12 @@ class FilterForm(forms.Form):
required=False, widget=FilterCheckboxSelectMultiple(),
# help_text=_(u'За 1 м2 необорудованной площади')
)
+ price_eur = FilterTypedMultipleChoiceField(
+ label=_(u'Стоимость'), coerce=int,
+ choices=PRICE_EUR,
+ required=False, widget=FilterCheckboxSelectMultiple(),
+ help_text=_(u'За 1 м2 необорудованной площади')
+ )
members = FilterTypedMultipleChoiceField(
label=_(u'Участники'), coerce=int,
choices=MEMBERS,
@@ -272,6 +280,11 @@ class FilterForm(forms.Form):
self.fill_default_choices_from_cache()
self.fields['month'].choices = self.month_choices()
+ @property
+ def is_exposition(self):
+ types = self.cleaned_data.get('event_type', [])
+ return not types or TYPES.EXPO in types
+
def fill_default_choices_from_cache(self):
timeout = timedelta(hours=1).seconds
for field in ['theme', 'tag', 'country', 'city']:
@@ -359,23 +372,28 @@ class FilterForm(forms.Form):
# print(new_values, self.data)
return new_values
- def clean_rating(self):
- types = self.cleaned_data.get('event_type')
- if TYPES.CONF in types and not TYPES.EXPO in types:
- self.fields['rating'].widget.input_type = 'hidden'
- self.fields['rating'].widget.is_hidden = True
- # self.fields['rating'].widget = forms.HiddenInput()
+ def check_hidden(self, field):
+ if not self.is_exposition:
+ self.fields[field].widget.input_type = 'hidden'
+ self.fields[field].widget.is_hidden = True
return []
- return self.cleaned_data.get('rating')
+ return self.cleaned_data.get(field)
+
+ def clean_rating(self):
+ return self.check_hidden('rating')
def clean_visitors(self):
- types = self.cleaned_data.get('event_type')
- if TYPES.CONF in types and not TYPES.EXPO in types:
- self.fields['visitors'].widget.input_type = 'hidden'
- self.fields['visitors'].widget.is_hidden = True
- # self.fields['visitors'].widget = forms.HiddenInput()
+ return self.check_hidden('visitors')
+
+ def clean_price_eur(self):
+ return self.check_hidden('price_eur')
+
+ def clean_price(self):
+ if self.is_exposition:
+ self.fields['price'].widget.input_type = 'hidden'
+ self.fields['price'].widget.is_hidden = True
return []
- return self.cleaned_data.get('visitors')
+ return self.cleaned_data.get('price')
def _post_clean(self):
# нужно для того, чтобы год зашел в поле month
@@ -404,15 +422,15 @@ class FilterForm(forms.Form):
self._models.append(Conference)
if not self._models:
self._models = [Exposition, Conference]
- if self.cleaned_data.get('query') or self.cleaned_data.get('where_query'):
- exclude_models = []
- for model in self._models:
- values = self.filter(load_all=False, models=[model]).values_list('pk', flat=True)
- if values:
- setattr(self, 'query_{model}_ids'.format(model=model.__name__), map(int, values))
- else:
- exclude_models.append(model)
- self._models = list(filter(lambda x: x not in exclude_models, self._models))
+ if self.cleaned_data.get('query') or self.cleaned_data.get('where_query'):
+ exclude_models = []
+ for model in self._models:
+ values = self.filter(load_all=False, models=[model]).values_list('pk', flat=True)
+ if values:
+ setattr(self, 'query_{model}_ids'.format(model=model.__name__), map(int, values))
+ else:
+ exclude_models.append(model)
+ self._models = list(filter(lambda x: x not in exclude_models, self._models))
return self._models
@property
@@ -440,7 +458,12 @@ class FilterForm(forms.Form):
if d.get('visitors'):
self._local_fields.append('visitors')
self._lookup_kwargs['visitors_choice__in'] = d.get('visitors')
- if d.get('price'):
+
+ # стоимость
+ if self.is_exposition and d.get('price_eur'):
+ self._local_fields.append('price_eur')
+ self._lookup_kwargs['price_choice_eur__in'] = d.get('price_eur')
+ elif not self.is_exposition and d.get('price'):
self._local_fields.append('price')
self._lookup_kwargs['price_choice__in'] = d.get('price')
return self._lookup_kwargs
@@ -511,8 +534,10 @@ class FilterForm(forms.Form):
self.fields[field].choice_cache = None
# print(self.fields[field].queryset.query)
- for field in ['members', 'visitors', 'price']:
+ for field in ['members', 'visitors']:
self.fields[field].choices = self.make_local_field_count(field) or self.fields[field].choices
+ price_field = 'price' if not self.is_exposition else 'price_eur'
+ self.fields[price_field].choices = self.make_local_field_count(price_field) or self.fields[price_field].choices
self.fields['month'].choices = self.make_date_begin_counts()
self.fields['rating'].choices = self.make_rating_counts()
diff --git a/events/management/commands/get_courses.py b/events/management/commands/get_courses.py
index 58392901..5a97c4bc 100644
--- a/events/management/commands/get_courses.py
+++ b/events/management/commands/get_courses.py
@@ -15,10 +15,12 @@ class Command(NoArgsCommand):
with transaction.commit_manually():
for x in Exposition.objects.all().only('currency', 'min_closed_area'):
x.price_rub = converter.convert_or_null(x.currency, x.min_closed_area)
- x.save(update_fields=['price_rub'])
+ x.price_eur = converter.convert_to_eur_or_null(x.price_rub)
+ x.save(update_fields=['price_rub', 'price_eur'])
for x in Conference.objects.all().only('currency', 'min_price'):
x.price_rub = converter.convert_or_null(x.currency, x.min_price)
- x.save(update_fields=['price_rub'])
+ x.price_eur = converter.convert_to_eur_or_null(x.price_rub)
+ x.save(update_fields=['price_rub', 'price_eur'])
transaction.commit()
# , Conference]:
# model.objects.
diff --git a/events/management/commands/update_events_filter_fields.py b/events/management/commands/update_events_filter_fields.py
index de81dd73..17a94d3c 100644
--- a/events/management/commands/update_events_filter_fields.py
+++ b/events/management/commands/update_events_filter_fields.py
@@ -6,7 +6,7 @@ from django.db import transaction
from exposition.models import Exposition
from conference.models import Conference
-from events.common import members_mapping, visitors_mapping, price_mapping
+from events.common import members_mapping, visitors_mapping, price_mapping, price_mapping_eur
from events.common import GetCourse
converter = GetCourse(nocache=True)
@@ -17,10 +17,12 @@ class Command(NoArgsCommand):
with transaction.commit_manually():
for x in Exposition.objects.all().only('currency', 'min_closed_area'):
x.price_rub = converter.convert_or_null(x.currency, x.min_closed_area)
- x.save(update_fields=['price_rub'])
+ x.price_eur = converter.convert_to_eur_or_null(x.price_rub)
+ x.save(update_fields=['price_rub', 'price_eur'])
for x in Conference.objects.all().only('currency', 'min_price'):
x.price_rub = converter.convert_or_null(x.currency, x.min_price)
- x.save(update_fields=['price_rub'])
+ x.price_eur = converter.convert_to_eur_or_null(x.price_rub)
+ x.save(update_fields=['price_rub', 'price_eur'])
transaction.commit()
fields_updater_mapping = {
@@ -40,6 +42,11 @@ class Command(NoArgsCommand):
'to': 'price_choice',
'mapping': price_mapping
},
+ {
+ 'from': 'price_eur',
+ 'to': 'price_choice_eur',
+ 'mapping': price_mapping_eur
+ },
],
Conference: [
{
@@ -57,6 +64,11 @@ class Command(NoArgsCommand):
'to': 'price_choice',
'mapping': price_mapping
},
+ {
+ 'from': 'price_eur',
+ 'to': 'price_choice_eur',
+ 'mapping': price_mapping_eur
+ },
]
}
diff --git a/expobanner/forms.py b/expobanner/forms.py
index eb929e5c..e446645b 100644
--- a/expobanner/forms.py
+++ b/expobanner/forms.py
@@ -338,7 +338,7 @@ class TopMixinForm(forms.ModelForm, FieldsetMixin):
class TopCreateForm(TopMixinForm):
verbose = _(u'Создать выставку в топе')
exposition = forms.CharField(label=_(u'Выставка'), widget=forms.HiddenInput())
- country = forms.MultipleChoiceField(label=_(u'Страна'), choices=[('', ' ')] + [(c.id, c.name) for c in Country.objects.all()], required=False)
+ country = forms.MultipleChoiceField(label=_(u'Страна'), choices=[('', ' ')] + [(c.id, c.name) for c in Country.objects.language().all()], required=False)
theme = forms.MultipleChoiceField(label=_(u'Тематика'), required=False,
choices=[('', ' ')] + [(item.id, item.name) for item in Theme.objects.language().all()])
#excluded_cities = forms.CharField(label=u'Город', widget=forms.HiddenInput(), required=False)
diff --git a/exposition/forms.py b/exposition/forms.py
index 6491def5..9b267a10 100644
--- a/exposition/forms.py
+++ b/exposition/forms.py
@@ -48,7 +48,7 @@ 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()])
+ country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.language().all()])
theme = forms.MultipleChoiceField(
label=_(u'Тематики'),
choices=[(item.id, item.name) for item in Theme.objects.language().filter(types=Theme.types.exposition)])
@@ -591,7 +591,7 @@ monthes = [('', ''),
class ExpositionFilterForm(EventsAdminFilterFormMixin, AdminFilterForm):
model = Exposition
- country = forms.MultipleChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()],
+ country = forms.MultipleChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.language().all()],
required=False)
#city = forms.CharField(label=u'Город', widget=forms.HiddenInput(), required=False)
year = forms.CharField(label=_(u'Год'), required=False)
diff --git a/exposition/migrations/0006_auto__add_field_exposition_price_choice_eur__add_field_exposition_pric.py b/exposition/migrations/0006_auto__add_field_exposition_price_choice_eur__add_field_exposition_pric.py
new file mode 100644
index 00000000..e7e7008d
--- /dev/null
+++ b/exposition/migrations/0006_auto__add_field_exposition_price_choice_eur__add_field_exposition_pric.py
@@ -0,0 +1,615 @@
+# -*- 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 'Exposition.price_choice_eur'
+ db.add_column(u'exposition_exposition', 'price_choice_eur',
+ self.gf('django.db.models.fields.PositiveSmallIntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Exposition.price_eur'
+ db.add_column(u'exposition_exposition', 'price_eur',
+ self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'Exposition.price_choice_eur'
+ db.delete_column(u'exposition_exposition', 'price_choice_eur')
+
+ # Deleting field 'Exposition.price_eur'
+ db.delete_column(u'exposition_exposition', 'price_eur')
+
+
+ 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'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'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ u'country.area': {
+ 'Meta': {'ordering': "['translations__name']", 'unique_together': '()', 'object_name': 'Area', 'index_together': '()'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'country.country': {
+ 'Meta': {'ordering': "['translations__name']", 'unique_together': '()', 'object_name': 'Country', 'index_together': '()'},
+ 'area': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Area']"}),
+ 'big_cities': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'cities'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['city.City']"}),
+ 'capital': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'capital'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
+ 'country_code': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'currency': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['directories.Currency']", 'null': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'language': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['directories.Language']", 'null': 'True', 'blank': 'True'}),
+ 'latitude': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
+ 'longitude': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'old_url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '55'}),
+ 'phone_code': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'population': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
+ 'teritory': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'time_delivery': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'timezone': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ u'directories.currency': {
+ 'Meta': {'unique_together': '()', 'object_name': 'Currency', 'index_together': '()'},
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '3'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'directories.iata': {
+ 'Meta': {'object_name': 'Iata'},
+ 'airport': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ u'directories.language': {
+ 'Meta': {'unique_together': '()', 'object_name': 'Language', 'index_together': '()'},
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'language': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ u'expobanner.banner': {
+ 'Meta': {'ordering': "['sort']", 'object_name': 'Banner'},
+ 'alt': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'cookie': ('django.db.models.fields.CharField', [], {'default': "'expo_b_default_popup'", 'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'country': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['country.Country']", 'null': 'True', 'blank': 'True'}),
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'customer': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Customer']", 'null': 'True', 'blank': 'True'}),
+ 'flash': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2016, 8, 29, 0, 0)'}),
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'banners'", 'null': 'True', 'to': u"orm['expobanner.BannerGroup']"}),
+ 'html': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'img': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'link': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'often': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
+ 'paid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'popup': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'sort': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '500'}),
+ 'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'to': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+ 'urls': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'url_banners'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['expobanner.URL']"})
+ },
+ u'expobanner.bannergroup': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'BannerGroup'},
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
+ 'speed': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '2000'}),
+ 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'})
+ },
+ u'expobanner.customer': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Customer'},
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+ },
+ u'expobanner.mainpage': {
+ 'Meta': {'ordering': "['-public']", 'object_name': 'MainPage'},
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'link': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Banner']"}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'position': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2', 'null': 'True', 'blank': 'True'}),
+ 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'})
+ },
+ u'expobanner.paid': {
+ 'Meta': {'ordering': "['-public']", 'object_name': 'Paid'},
+ 'catalog': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_catalog'", 'to': u"orm['expobanner.Banner']"}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'kind': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1', 'db_index': 'True'}),
+ 'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'official': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_official'", 'to': u"orm['expobanner.Banner']"}),
+ 'organiser': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'participation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_participation'", 'null': 'True', 'to': u"orm['expobanner.Banner']"}),
+ 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tickets': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'paid_tickets'", 'to': u"orm['expobanner.Banner']"})
+ },
+ u'expobanner.top': {
+ 'Meta': {'ordering': "['position']", 'object_name': 'Top'},
+ '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, 8, 29, 0, 0)'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'link': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Banner']"}),
+ 'months': ('functions.custom_fields.MonthMultiSelectField', [], {'default': 'None', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'position': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2', 'null': 'True', 'blank': 'True'}),
+ 'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
+ 'to': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'years': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
+ },
+ u'expobanner.url': {
+ 'Meta': {'ordering': "['-created_at']", 'object_name': 'URL'},
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'regex': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'site_urls'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['sites.Site']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+ 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '2048'})
+ },
+ u'exposition.exposition': {
+ 'Meta': {'unique_together': '()', 'object_name': 'Exposition', 'index_together': '()'},
+ 'application_deadline': ('django.db.models.fields.DateField', [], {'null': 'True'}),
+ 'area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'audience': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
+ 'bad_url': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'canceled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'canceled_by_administrator': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'exposition_city'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
+ 'company': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['company.Company']"}),
+ 'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'exposition_country'", 'on_delete': 'models.PROTECT', 'to': u"orm['country.Country']"}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'exposition_creator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['accounts.User']"}),
+ 'currency': ('functions.custom_fields.EnumField', [], {'default': "'RUB'", 'values': "('RUB', 'USD', 'EUR', 'RMB', 'GBP', 'AED', 'SGD', 'TRY', 'CZK', 'CHF', 'SEK', 'LKR', 'UAH', 'IDR', 'PLN', 'JPY')"}),
+ 'data_begin': ('django.db.models.fields.DateField', [], {'db_index': 'True'}),
+ 'data_end': ('django.db.models.fields.DateField', [], {}),
+ 'discount': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'expohit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'foundation_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'main': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.MainPage']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'main_page': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
+ 'max_closed_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'max_closed_equipped_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'max_open_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'members': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'members_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'min_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'min_closed_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'min_closed_equipped_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'min_open_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'min_stand_size': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'moved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
+ 'org': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'organiser': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_organisers'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['organiser.Organiser']"}),
+ 'paid_new': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Paid']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'periodic': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'photogallery': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['photologue.Gallery']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'place': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'exposition_place'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['place_exposition.PlaceExposition']"}),
+ 'place_alt': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'price_catalog': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'price_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'price_choice_eur': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'price_eur': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'price_rub': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'quality_label': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
+ 'rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'registration_link': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'}),
+ 'registration_payment': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
+ 'tag': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_tags'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Tag']"}),
+ 'tax': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'theme': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'exposition_themes'", 'symmetrical': 'False', 'to': u"orm['theme.Theme']"}),
+ 'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
+ 'users': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'exposition_users'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['accounts.User']"}),
+ 'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'visitors': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'visitors_choice': ('django.db.models.fields.PositiveSmallIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ u'exposition.expositiontranslation': {
+ 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'ExpositionTranslation', 'db_table': "u'exposition_exposition_translation'", 'index_together': '()'},
+ 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'descriptions': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'discount_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'keywords': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ 'main_title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['exposition.Exposition']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'participation_note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'pre_condition': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'price_all': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'price_all_bar': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'price_day': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'price_day_bar': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'products': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'stand_condition': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'stat_countries': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'time': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'visit_note': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ u'exposition.statistic': {
+ 'Meta': {'unique_together': '()', 'object_name': 'Statistic', 'index_together': '()'},
+ 'area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'countries_number': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'exposition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'statistic'", 'to': u"orm['exposition.Exposition']"}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'members': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'visitors': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.PositiveIntegerField', [], {})
+ },
+ u'exposition.statistictranslation': {
+ 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'StatisticTranslation', 'db_table': "u'exposition_statistic_translation'", 'index_together': '()'},
+ 'countries': ('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'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['exposition.Statistic']"})
+ },
+ u'exposition.timetable': {
+ 'Meta': {'unique_together': '()', 'object_name': 'TimeTable', 'index_together': '()'},
+ 'begin': ('django.db.models.fields.DateTimeField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'end': ('django.db.models.fields.DateTimeField', [], {}),
+ 'exposition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'business_program'", 'to': u"orm['exposition.Exposition']"}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'timetable_organiser': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['organiser.Organiser']", 'null': 'True', 'blank': 'True'})
+ },
+ u'exposition.timetabletranslation': {
+ 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'TimeTableTranslation', 'db_table': "u'exposition_timetable_translation'", 'index_together': '()'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['exposition.TimeTable']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'place': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'programe': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'speaker': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+ },
+ u'exposition.tmptimetable': {
+ 'Meta': {'unique_together': '()', 'object_name': 'TmpTimeTable', 'index_together': '()'},
+ 'begin': ('django.db.models.fields.DateTimeField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'end': ('django.db.models.fields.DateTimeField', [], {}),
+ 'exposition': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['exposition.Exposition']", 'null': 'True', 'blank': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'timetable_organiser': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['organiser.Organiser']", 'null': 'True', 'blank': 'True'})
+ },
+ u'exposition.tmptimetabletranslation': {
+ 'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'TmpTimeTableTranslation', 'db_table': "u'exposition_tmptimetable_translation'", 'index_together': '()'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['exposition.TmpTimeTable']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'place': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+ 'programe': ('django.db.models.fields.TextField', [], {}),
+ 'speaker': ('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_conf': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
+ 'main_page_expo': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
+ 'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
+ 'types': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
+ 'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ u'translator.translator': {
+ 'Meta': {'unique_together': '()', 'object_name': 'Translator', 'index_together': '()'},
+ 'birth': ('django.db.models.fields.DateField', [], {}),
+ 'car': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'gender': ('functions.custom_fields.EnumField', [], {'default': "'male'", 'values': "('male', 'female')"}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ }
+ }
+
+ complete_apps = ['exposition']
\ No newline at end of file
diff --git a/exposition/models.py b/exposition/models.py
index 26842476..20dad7f5 100644
--- a/exposition/models.py
+++ b/exposition/models.py
@@ -21,7 +21,7 @@ from import_xls.model_utils import ExpoImportManager
from manager import ClientManager
from organiser.models import Organiser
from service.models import Service
-from events.common import MEMBERS, VISITORS, PRICE
+from events.common import MEMBERS, VISITORS, PRICE, PRICE_EUR
AUDIENCE1 = ((None,_(u'Не выбрано')),
@@ -173,6 +173,9 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
price_choice = models.PositiveSmallIntegerField(
_(u'Минимальная цена'), choices=PRICE, blank=True, null=True, db_index=True)
price_rub = models.PositiveIntegerField(verbose_name=_(u'Рублевая цена'), blank=True, null=True)
+ price_choice_eur = models.PositiveSmallIntegerField(
+ _(u'Минимальная цена'), choices=PRICE_EUR, blank=True, null=True, db_index=True)
+ price_eur = models.PositiveIntegerField(verbose_name=_(u'Цена в евро'), blank=True, null=True)
#set manager of this model(fisrt manager is default)
objects = ExpoManager()
diff --git a/exposition/search_indexes.py b/exposition/search_indexes.py
index 1e9dbd29..2db15ce5 100644
--- a/exposition/search_indexes.py
+++ b/exposition/search_indexes.py
@@ -28,6 +28,7 @@ class ExpositionIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin):
members_choice = indexes.IntegerField()
visitors_choice = indexes.IntegerField()
price_choice = indexes.IntegerField()
+ price_choice_eur = indexes.IntegerField(model_attr='price_choice_eur')
expohit = indexes.BooleanField(model_attr='expohit')
rating = indexes.MultiValueField()
diff --git a/meta/models.py b/meta/models.py
index 2b58f938..b985ac19 100644
--- a/meta/models.py
+++ b/meta/models.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import copy
+import re
from django.db import models
from django.db.models.signals import post_save
@@ -51,6 +52,8 @@ def get_tag_inflect(obj, key):
'tag_name': getattr(obj, 'name', '')}
return result
+description_sentence_r = re.compile('(?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id
+
+
+ text
+
+
+
+
+
diff --git a/schema_new.xml b/schema_new.xml
index 5f140474..a9e06694 100644
--- a/schema_new.xml
+++ b/schema_new.xml
@@ -181,6 +181,8 @@
+
+
diff --git a/support/dev/settings.py b/support/dev/settings.py
index d82496c5..0279ca10 100644
--- a/support/dev/settings.py
+++ b/support/dev/settings.py
@@ -473,7 +473,7 @@ except ImportError:
from django.core.paginator import Paginator
DEFAULT_PAGINATOR = Paginator
ADMIN_PAGINATION = 20
-CLIENT_PAGINATION = 15
+CLIENT_PAGINATION = 25
TEMPLATE_DEBUG = DEBUG
NO_LOGO = '/static/client/img/no-logo.png'
diff --git a/support/prod/settings.py b/support/prod/settings.py
index 7ff7eede..7cffd26f 100644
--- a/support/prod/settings.py
+++ b/support/prod/settings.py
@@ -473,7 +473,7 @@ except ImportError:
from django.core.paginator import Paginator
DEFAULT_PAGINATOR = Paginator
ADMIN_PAGINATION = 20
-CLIENT_PAGINATION = 15
+CLIENT_PAGINATION = 25
TEMPLATE_DEBUG = DEBUG
NO_LOGO = '/static/client/img/no-logo.png'
diff --git a/templates/client/includes/meta.html b/templates/client/includes/meta.html
index 04845304..cfcbc5f7 100644
--- a/templates/client/includes/meta.html
+++ b/templates/client/includes/meta.html
@@ -3,12 +3,12 @@
{% if seo_text %}
- {% if seo_text.description %}{% meta 'description' seo_text.description %}{% endif %}
{% if seo_text.page_title %}{{ seo_text.page_title }}{% endif %}
+ {% if seo_text.description %}{% meta 'description' seo_text.description %}{% endif %}
{% elif meta %}
+ {% if meta.title %}{{ meta.title }}{% endif %}
{% if meta.description %}{% meta 'description' meta.description %}{% endif %}
{% if meta.keywords %}{% meta_list 'keywords' meta.keywords %}{% endif %}
- {% if meta.title %}{{ meta.title }}{% endif %}
{% if meta.use_og %}
{% if meta.title %}{% og_prop 'title' meta.title %}{% endif %}
{% if meta.url %}{% og_prop 'url' meta.url %}{% endif %}
diff --git a/translator/forms.py b/translator/forms.py
index fe2d35af..b2858679 100644
--- a/translator/forms.py
+++ b/translator/forms.py
@@ -101,7 +101,7 @@ class TranslatorUserForm(forms.ModelForm):
class TranslatorUserProfileForm(forms.ModelForm):
city = forms.CharField(label=_(u'Город'), required=False,
widget=forms.HiddenInput(attrs={'class': 'select2'}))
- country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.all()], required=False,
+ country = forms.ChoiceField(label=_(u'Страна'), choices=[(c.id, c.name) for c in Country.objects.language().all()], required=False,
widget=forms.Select(attrs={'class': 'select2'}))
def __init__(self, *args, **kwargs):
super(TranslatorUserProfileForm, self).__init__(*args, **kwargs)
|