You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
514 lines
30 KiB
514 lines
30 KiB
# -*- coding: utf-8 -*-
|
|
import urllib2
|
|
from django.conf import settings
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.core.validators import validate_email, URLValidator
|
|
from file.models import FileModel
|
|
from functions.files import get_alternative_filename
|
|
from place_exposition.models import EXPOSITION_TYPE
|
|
from place_exposition.models import Hall
|
|
# bad practice of importing, but to many functions must be imported
|
|
from .utils import *
|
|
|
|
|
|
def get_bool(value):
|
|
if value:
|
|
return 1
|
|
return ''
|
|
|
|
|
|
def get_int(value):
|
|
if not value:
|
|
return ''
|
|
return value
|
|
|
|
|
|
def get_place(place):
|
|
if place:
|
|
return place.url
|
|
return ''
|
|
|
|
|
|
def get_theme(value):
|
|
if isinstance(value, Theme):
|
|
return str(value.id)
|
|
theme_ids = [str(item['id']) for item in value.all().values('id')]
|
|
return ','.join(theme_ids)
|
|
|
|
|
|
def get_tag(value):
|
|
tag_names = [item['name'] for item in value.language('ru').all().values('name')]
|
|
return ','.join(tag_names)
|
|
|
|
|
|
def get_place_type(value):
|
|
for t in EXPOSITION_TYPE:
|
|
if value == t[0]:
|
|
return t[1]
|
|
return t[0][1]
|
|
|
|
|
|
def get_periodic(value):
|
|
if value:
|
|
value = float(value)
|
|
periodic = {0: '', 1.0: u'Ежегодно', 2.0: u'2 раза в год', 3.0: u'3 раза в год',
|
|
4.0: u'4 раза в год', 5.0: u'5 раз в год', 0.5: u'Раз в 2 года',
|
|
0.33: u'Раз в 3 года', 0.25: u'Раз в 4 года'}
|
|
return periodic.get(value, '')
|
|
return ''
|
|
|
|
|
|
def get_quality(value, field):
|
|
flags = {u'UFI': 'ufi', u'РСВЯ': 'rsva', u'EXPORATING': 'exporating'}
|
|
v = flags.get(field)
|
|
if v:
|
|
result = getattr(value, v).is_set
|
|
if result:
|
|
return '1'
|
|
|
|
return ''
|
|
|
|
|
|
def to_theme_type(st):
|
|
if not st:
|
|
return 15
|
|
types = st.split(',')
|
|
|
|
flag = 0
|
|
flag = reduce(lambda x,y: x|y, (getattr(Theme.types, item) for item in types))
|
|
return flag
|
|
|
|
|
|
def to_url(url):
|
|
validate = URLValidator()
|
|
try:
|
|
validate(url)
|
|
except:
|
|
return ''
|
|
return url
|
|
|
|
|
|
def to_email(email):
|
|
try:
|
|
validate_email(email)
|
|
except:
|
|
return ''
|
|
return email
|
|
|
|
|
|
def save_file(obj, value, purpose):
|
|
if not obj.id:
|
|
return None
|
|
urls = value.split(';')
|
|
for url in urls:
|
|
|
|
file_name = url.split('/')[-1]
|
|
alt_name = get_alternative_filename(settings.MEDIA_ROOT+'imgs/', file_name)
|
|
|
|
download_to = settings.MEDIA_ROOT+'imgs/'+alt_name
|
|
|
|
try:
|
|
response = urllib2.urlopen(url, timeout=3)
|
|
except:
|
|
continue
|
|
|
|
with open(download_to,'wb') as f:
|
|
f.write(response.read())
|
|
f.close()
|
|
|
|
file_name ='imgs/'+alt_name
|
|
content_type = ContentType.objects.get_for_model(obj)
|
|
file = FileModel(file_path=file_name, file_type='JPG', purpose=purpose,
|
|
content_type=content_type, object_id=obj.id)
|
|
|
|
file.save()
|
|
|
|
|
|
def to_type(value):
|
|
for t in EXPOSITION_TYPE:
|
|
if value == t[1]:
|
|
return t[0]
|
|
return 'Exposition complex'
|
|
|
|
|
|
def to_phone(value):
|
|
if value:
|
|
if isinstance(value, float) or isinstance(value, int):
|
|
return value
|
|
else:
|
|
deduct = ('-','(',')','.',' ', '+')
|
|
for elem in deduct:
|
|
value = value.replace(elem, '')
|
|
|
|
value = to_int(value)
|
|
return value
|
|
|
|
|
|
def save_halls(obj, value):
|
|
halls = value.split(';')
|
|
res = []
|
|
for hall in halls:
|
|
if hall:
|
|
area = None
|
|
number = None
|
|
name = ''
|
|
l = hall.split(u'-')
|
|
if len(l)>1:
|
|
area = int(l[1].strip().replace(' ', ''))
|
|
l = l[0].split(u'№')
|
|
if len(l)>1:
|
|
try:
|
|
number = int(l[1].strip())
|
|
except ValueError:
|
|
pass
|
|
name = l[0].strip()
|
|
else:
|
|
name = l[0].strip()
|
|
|
|
else:
|
|
name = l[0].strip()
|
|
|
|
res.append({'area': area, 'name':name, 'number': number})
|
|
Hall.objects.filter(place_exposition=obj).delete()
|
|
for hall in res:
|
|
h = Hall(place_exposition = obj, name=hall.get('name'), number=hall.get('number'), capacity=hall.get('area'))
|
|
try:
|
|
h.save()
|
|
except Exception, e:
|
|
print('---------------hall error---------')
|
|
print e
|
|
print('---------------------------------')
|
|
|
|
|
|
def get_date(value):
|
|
try:
|
|
return value.strftime('%d.%m.%Y')
|
|
except AttributeError:
|
|
return ''
|
|
|
|
|
|
article_sett = {
|
|
u'ID':{u'field': u'id', u'func': to_int},
|
|
u'Заголовок':{u'field': u'main_title', u'func': unicode},
|
|
u'Описание':{u'field': u'description', u'func': unicode},
|
|
u'Айди автора':{u'field': u'author', u'func': to_user},
|
|
u'Создана':{u'field': u'created', u'func': to_datetime}
|
|
}
|
|
|
|
# default export settings
|
|
field_settings = [
|
|
{'name': 'id', 'verbose_name': u'ID', 'type': get_int, 'width':1500},
|
|
{'name': 'url', 'verbose_name': u'Url', 'type': unicode},
|
|
{'name': 'name', 'verbose_name': u'Название', 'type': unicode},
|
|
{'name': 'main_title', 'verbose_name': u'Краткое описание', 'type': unicode},
|
|
#{'name': 'type', 'verbose_name': u'Тип', 'type': get_place_type, 'width':8000},
|
|
{'name': 'data_begin', 'verbose_name': u'Дата начала:(YYYY-MM-DD)', 'type': unicode},
|
|
{'name': 'data_end', 'verbose_name': u'Дата окончания:(YYYY-MM-DD)', 'type': unicode},
|
|
{'name': 'country', 'verbose_name': u'Страна', 'type': unicode},
|
|
{'name': 'city', 'verbose_name': u'Город', 'type': unicode},
|
|
#{'name': 'place', 'verbose_name': u'Место проведения', 'type': unicode},
|
|
{'name': 'theme', 'verbose_name': u'ID Тематики', 'type': get_theme, 'width':8000},
|
|
{'name': 'tag', 'verbose_name': u'Теги', 'type': get_tag, 'width':8000},
|
|
{'name': 'description', 'verbose_name': u'Описание события', 'type': unicode},
|
|
{'name': 'periodic', 'verbose_name': 'Периодичность', 'type': str},
|
|
{'name': 'audience', 'verbose_name': u'Аудитория', 'type': get_audience},
|
|
{'name': 'web_page', 'verbose_name': u'Официальный веб-сайт', 'type': unicode},
|
|
{'name': 'products', 'verbose_name': u'Экспонируемые продукты', 'type': unicode},
|
|
{'name': 'time', 'verbose_name': u'Время работы', 'type': unicode},
|
|
{'name': 'logo', 'verbose_name': u'Логотип', 'type': unicode},
|
|
{'name': 'currency', 'verbose_name': u'Валюта', 'type': unicode},
|
|
{'name': 'price_day', 'verbose_name': u'Стоимость билета 1 день', 'type': unicode},
|
|
{'name': 'price_all', 'verbose_name': u'Стоимость билета все дни', 'type': unicode},
|
|
{'name': 'pre_condition', 'verbose_name': u'Условия предварительной регистрации', 'type': unicode},
|
|
{'name': 'price_day_bar', 'verbose_name': u'Стоимость на стойке 1 день', 'type': unicode},
|
|
{'name': 'price_all_bar', 'verbose_name': u'Стоимость на стойке все дни', 'type': unicode},
|
|
{'name': 'stand_condition', 'verbose_name': u'Условия регистрации на стойке', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Примечание по посещению', 'type': unicode},
|
|
{'name': 'price_catalog', 'verbose_name': u'Каталог', 'type': get_int},
|
|
{'name': 'tax', 'verbose_name': u'Налог включен', 'type': get_bool, 'width':1000},
|
|
{'name': 'foundation_year', 'verbose_name': u'Год основания', 'type': get_int},
|
|
{'name': 'visit_note', 'verbose_name': u'Посетители', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Участники', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Страны', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Площадь', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Min_Raw кв.м.', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Max_Raw кв.м.', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Min_Pack кв.м.', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Max_Pack кв.м.', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Открытая площадь', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Мин. Площадь кв.м.', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Примечание по участии', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Крайний срок подачи заявки', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'UFI', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'РСВЯ', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'EXPORATING', 'type': unicode},
|
|
{'name': 'canceled_by_administrator', 'verbose_name': u'Отменена администратором', 'type': get_bool},
|
|
{'name': 'visit_note', 'verbose_name': u'ExpoHIT', 'type': unicode},
|
|
{'name': 'address', 'verbose_name': u'Адрес', 'type': unicode},
|
|
{'name': 'email', 'verbose_name': u'Email', 'type': unicode},
|
|
{'name': 'phone', 'verbose_name': u'Телефон', 'type': get_int},
|
|
{'name': 'foundation', 'verbose_name': u'Год основания', 'type': get_int},
|
|
#{'name': 'events_number', 'verbose_name': u'Год основания', 'type': get_int},
|
|
{'name': 'staff_number', 'verbose_name': u'Год основания', 'type': get_int},
|
|
{'name': 'specialization', 'verbose_name': u'Год основания', 'type': unicode},
|
|
{'name': 'max_price', 'verbose_name': u'Максимальная цена', 'type': get_int},
|
|
{'name': 'min_price', 'verbose_name': u'Минимальная цена', 'type': get_int},
|
|
{'name': 'registration_payment', 'verbose_name': u'Регистрационный взнос', 'type': get_int},
|
|
{'name': 'min_closed_area', 'verbose_name': u'Минимальная цена закрытой НЕ оборудованной площади', 'type': get_int},
|
|
{'name': 'max_closed_area', 'verbose_name': u'Максимальная цена закрытой НЕ оборудованной площади', 'type': get_int},
|
|
{'name': 'min_closed_equipped_area', 'verbose_name': u'Минимальная цена закрытой оборудованной площади ', 'type': get_int},
|
|
{'name': 'max_closed_equipped_area', 'verbose_name': u'Максимальная цена закрытой оборудованной площади', 'type': get_int},
|
|
{'name': 'min_open_area', 'verbose_name': u'Минимальная цена закрытой площади', 'type': get_int},
|
|
{'name': 'max_open_area', 'verbose_name': u'Максимальная цена открытой площади', 'type': get_int},
|
|
{'name': 'min_area', 'verbose_name': u'Минимальная площадь', 'type': get_int},
|
|
{'name': 'max_area', 'verbose_name': u'Максимальная площадь', 'type': get_int},
|
|
{'name': 'is_published', 'verbose_name': u'Опубликована', 'type': get_bool},
|
|
]
|
|
# ----------------------EVENT SETTINGS -------------------------
|
|
|
|
event_sett = {
|
|
u'ID': {u'field': u'id', u'func': to_int},
|
|
u'Url': {u'field': u'url', u'func': unicode},
|
|
u'Название': {u'field': u'name', u'func': unicode},
|
|
u'Краткое описание': {u'field': u'main_title', u'func': unicode},
|
|
u'Дата начала:(YYYY-MM-DD)': {u'field': u'data_begin', u'func': to_date},
|
|
u'Дата окончания:(YYYY-MM-DD)': {u'field': u'data_end', u'func': to_date},
|
|
u'Страна': {u'field': u'country', u'func': to_country},
|
|
u'Город': {u'field': u'city_id', u'func': to_city, 'extra_values': 'country'},
|
|
u'Место проведения': {u'field': u'place', u'func': to_place},
|
|
u'ID Тематики': {u'field': u'theme', u'func': to_theme, u'method': True},###
|
|
u'Теги': {u'field': u'tag', u'func': to_tag, u'method': True},
|
|
u'Организатор №1': {u'field': u'org', u'func': unicode},####
|
|
#u'Организатор №2':{u'field': u'organiser', u'func': to_tag},####
|
|
u'Описание события': {u'field': u'description', u'func': unicode},
|
|
u'Основные темы': {u'field': u'main_themes', u'func': unicode},
|
|
u'Условия и скидка': {u'field': u'discount_description', u'func': unicode},
|
|
u'Периодичность': {u'field': u'periodic', u'func': to_periodic},###
|
|
u'Аудитория': {u'field': u'audience', u'func': to_audience},
|
|
u'Официальный веб-сайт': {u'field': u'web_page', u'func': to_url},
|
|
u'Линк на регистрацию': {u'field': u'link', u'func': to_url},
|
|
u'Экспонируемые продукты': {u'field': u'products', u'func': unicode},
|
|
u'Время работы': {u'field': u'time', u'func': unicode},
|
|
u'Логотип':{u'field': u'logo', u'func': save_logo, u'method': True},
|
|
u'Валюта': {u'field': u'currency', u'func': unicode},
|
|
u'Стоимость билета 1 день': {u'field': u'price_day', u'func': unicode},
|
|
u'Стоимость билета все дни': {u'field': u'price_all', u'func': unicode},
|
|
u'Условия предварительной регистрации': {u'field': u'pre_condition', u'func': unicode},
|
|
u'Стоимость на стойке 1 день': {u'field': u'price_day_bar', u'func': unicode},
|
|
u'Стоимость на стойке все дни': {u'field': u'price_all_bar', u'func': unicode},
|
|
u'Условия регистрации на стойке': {u'field': u'stand_condition', u'func': unicode},
|
|
u'Примечание по посещению': {u'field': u'visit_note', u'func': unicode},
|
|
u'Каталог': {u'field': u'price_catalog', u'func': to_int},
|
|
u'Налог включен': {u'field': u'tax', u'func': bool},
|
|
u'Год основания': {u'field': u'foundation_year', u'func': to_int},
|
|
u'Посетители': {u'field': u'visitors', u'func': to_int},
|
|
u'Участники': {u'field': u'members', u'func': to_int},
|
|
u'Страны': {u'field': u'stat_countries', u'func': unicode},
|
|
u'Площадь': {u'field': u'area', u'func': to_int},
|
|
u'Мин стоимость': {u'field': u'min_price', u'func': to_int},
|
|
u'Макс стоимость': {u'field': u'max_price', u'func': to_int},
|
|
u'Min_Raw кв.м.': {u'field': u'min_closed_area', u'func': to_int},
|
|
u'Max_Raw кв.м.': {u'field': u'max_closed_area', u'func': to_int},
|
|
u'Min_Pack кв.м.': {u'field': u'min_closed_equipped_area', u'func': to_int},
|
|
u'Max_Pack кв.м.': {u'field': u'max_closed_equipped_area', u'func': to_int},
|
|
u'Открытая площадь': {u'field': u'max_open_area', u'func': to_int},
|
|
u'Мин. Площадь кв.м.': {u'field': u'min_stand_size', u'func': to_int},
|
|
u'Регистрационный взнос': {u'field': u'registration_payment', u'func': to_int},
|
|
u'Примечание по участии': {u'field': u'participation_note', u'func': unicode},
|
|
u'Крайний срок подачи заявки': {u'field': u'application_deadline', u'func': to_date},
|
|
u'UFI': {u'field': u'quality_label', u'func': check_quality_label, u'bitfield':True, u'label': 'ufi'},
|
|
u'РСВЯ': {u'field': u'quality_label', u'func': check_quality_label, u'bitfield':True, u'label': 'rsva'},
|
|
u'EXPORATING': {u'field': u'quality_label', u'func': check_quality_label, u'bitfield':True, u'label': 'exporating'},
|
|
u'Отменена': {u'field': u'canceled', u'func': bool},
|
|
u'ExpoHIT': {u'field': u'expohit', u'func': bool},
|
|
}
|
|
|
|
event_export_sett = [
|
|
{'name': 'id', 'verbose_name': u'ID', 'type': get_int, 'width':1500},
|
|
{'name': 'url', 'verbose_name': u'Url', 'type': unicode},
|
|
{'name': 'name', 'verbose_name': u'Название', 'type': unicode},
|
|
{'name': 'main_title', 'verbose_name': u'Краткое описание', 'type': unicode},
|
|
{'name': 'data_begin', 'verbose_name': u'Дата начала:(YYYY-MM-DD)', 'type': get_date},
|
|
{'name': 'data_end', 'verbose_name': u'Дата окончания:(YYYY-MM-DD)', 'type': get_date},
|
|
{'name': 'country', 'verbose_name': u'Страна', 'type': unicode},
|
|
{'name': 'city', 'verbose_name': u'Город', 'type': unicode},
|
|
{'name': 'place', 'verbose_name': u'Место проведения', 'type': get_place},
|
|
{'name': 'theme', 'verbose_name': u'ID Тематики', 'type': get_theme, 'width':8000},
|
|
{'name': 'tag', 'verbose_name': u'Теги', 'type': get_tag, 'width':8000},
|
|
{'name': 'description', 'verbose_name': u'Описание события', 'type': unicode},
|
|
{'name': 'org', 'verbose_name': u'Организатор №1', 'type': get_int},
|
|
{'name': 'periodic', 'verbose_name': 'Периодичность', 'type': get_periodic},
|
|
{'name': 'audience', 'verbose_name': u'Аудитория', 'type': get_audience},
|
|
{'name': 'web_page', 'verbose_name': u'Официальный веб-сайт', 'type': unicode},
|
|
{'name': 'products', 'verbose_name': u'Экспонируемые продукты', 'type': unicode},
|
|
{'name': 'time', 'verbose_name': u'Время работы', 'type': unicode},
|
|
{'name': 'logo', 'verbose_name': u'Логотип', 'type': unicode},
|
|
{'name': 'currency', 'verbose_name': u'Валюта', 'type': unicode},
|
|
{'name': 'price_day', 'verbose_name': u'Стоимость билета 1 день', 'type': unicode},
|
|
{'name': 'price_all', 'verbose_name': u'Стоимость билета все дни', 'type': unicode},
|
|
{'name': 'pre_condition', 'verbose_name': u'Условия предварительной регистрации', 'type': unicode},
|
|
{'name': 'price_day_bar', 'verbose_name': u'Стоимость на стойке 1 день', 'type': unicode},
|
|
{'name': 'price_all_bar', 'verbose_name': u'Стоимость на стойке все дни', 'type': unicode},
|
|
{'name': 'stand_condition', 'verbose_name': u'Условия регистрации на стойке', 'type': unicode},
|
|
{'name': 'visit_note', 'verbose_name': u'Примечание по посещению', 'type': unicode},
|
|
{'name': 'price_catalog', 'verbose_name': u'Каталог', 'type': get_int},
|
|
{'name': 'tax', 'verbose_name': u'Налог включен', 'type': get_bool, 'width':1000},
|
|
{'name': 'foundation_year', 'verbose_name': u'Год основания', 'type': get_int},
|
|
{'name': 'visitors', 'verbose_name': u'Посетители', 'type': get_int},
|
|
{'name': 'members', 'verbose_name': u'Участники', 'type': get_int},
|
|
#{'name': 'visit_note', 'verbose_name': u'Страны', 'type': unicode}, !!! delete from import
|
|
{'name': 'area', 'verbose_name': u'Площадь', 'type': get_int},
|
|
{'name': 'min_closed_area', 'verbose_name': u'Min_Raw кв.м.', 'type': get_int},
|
|
{'name': 'max_closed_area', 'verbose_name': u'Max_Raw кв.м.', 'type': get_int},
|
|
{'name': 'min_closed_equipped_area', 'verbose_name': u'Min_Pack кв.м.', 'type': get_int},
|
|
{'name': 'max_closed_equipped_area', 'verbose_name': u'Max_Pack кв.м.', 'type': get_int},
|
|
{'name': 'max_open_area', 'verbose_name': u'Открытая площадь', 'type': get_int},
|
|
{'name': 'min_stand_size', 'verbose_name': u'Мин. Площадь кв.м.', 'type': get_int},
|
|
{'name': 'registration_payment', 'verbose_name': u'Регистрационный взнос', 'type': get_int},
|
|
{'name': 'participation_note', 'verbose_name': u'Примечание по участии', 'type': unicode},
|
|
{'name': 'application_deadline', 'verbose_name': u'Крайний срок подачи заявки', 'type': get_date},
|
|
{'name': 'quality_label', 'verbose_name': u'UFI', 'type': get_quality}, #????
|
|
{'name': 'quality_label', 'verbose_name': u'РСВЯ', 'type': get_quality},#???
|
|
{'name': 'quality_label', 'verbose_name': u'EXPORATING', 'type': get_quality}, #???
|
|
{'name': 'canceled_by_administrator', 'verbose_name': u'Отменена администратором', 'type': get_bool},
|
|
{'name': 'expohit', 'verbose_name': u'ExpoHIT', 'type': get_bool},
|
|
{'name': 'is_published', 'verbose_name': u'Опубликована', 'type': get_bool},
|
|
]
|
|
# -----------------------END EVENT SETTINGS ---------------------------------
|
|
|
|
# --------------PLACE EXPO SETTINGS-----------------------------
|
|
|
|
# import
|
|
place_exp_sett = {
|
|
u'ID': {u'field': u'id', u'func': to_int},
|
|
u'Название': {u'field': u'name', u'func': unicode},
|
|
u'Тип': {u'field': u'type', u'func': to_type},
|
|
u'Краткое описание': {u'field': u'main_title', u'func': unicode},
|
|
u'Страна': {u'field': u'country', u'func': to_country},
|
|
u'Город': {u'field': u'city_id', u'func': to_city, 'extra_values': 'country'},
|
|
u'Описание': {u'field': u'description', u'func': unicode},
|
|
u'Адрес': {u'field': u'adress', u'func': unicode},
|
|
u'Тел.': {u'field': u'phone', u'func': to_phone},
|
|
u'Факс': {u'field': u'fax', u'func': to_phone},
|
|
u'Лого': {u'field': u'logo', u'func': save_logo, u'method': True},
|
|
u'Веб-сайт': {u'field': u'web_page', u'func': unicode},
|
|
u'Email': {u'field': u'email', u'func': unicode},
|
|
u'Карта проезда': {u'field': u'map', u'func': save_file, u'method': True, u'purpose': 'map'},
|
|
u'Виртуальный тур': {u'field': u'virtual_tour', u'func': to_url},
|
|
u'Год основания': {u'field': u'foundation_year', u'func': to_int},
|
|
u'Количество мероприятий в год': {u'field': u'event_in_year', u'func': to_int},
|
|
u'Общая выставочная площадь, кв. м.': {u'field': u'total_area', u'func': to_int},
|
|
u'Закрытая выставочная площадь, кв. м.': {u'field': u'closed_area', u'func': to_int},
|
|
u'Открытая выставочная площадь, кв. м.': {u'field': u'open_area', u'func': to_int},
|
|
u'Количество павильонов': {u'field': u'total_pavilions', u'func': to_int},
|
|
u'Площадь павильона': {u'field': u'halls', u'func': save_halls, u'method': True},
|
|
u'Конференц-залы': {u'field': u'total_halls', u'func': to_int},
|
|
u'Схема территории': {u'field': u'scheme', u'func': save_file, u'method': True, u'purpose': 'scheme teritory'},#сделать
|
|
u'Банк/Банкоматы/Обмен валюты': {u'field': u'bank', u'func': bool},
|
|
u'Детская комната': {u'field': u'children_room', u'func': bool},
|
|
u'Сервис для людей с ограниченными физическими возможностями': {u'field': u'disabled_service', u'func': bool},
|
|
u'Конгресс-центр': {u'field': u'conference_centre', u'func': bool},
|
|
u'Бизнес-центр': {u'field': u'business_centre', u'func': bool},
|
|
u'On-line регистрация': {u'field': u'online_registration', u'func': bool},
|
|
u'Wi-Fi': {u'field': u'wifi', u'func': bool},
|
|
u'Кафе и рестораны': {u'field': u'cafe', u'func': bool},
|
|
u'Информационные терминалы': {u'field': u'terminals', u'func': bool},
|
|
u'Парковка': {u'field': u'parking', u'func': bool},
|
|
u'Пресс-центр': {u'field': u'press_centre', u'func': bool},
|
|
u'Мобильное приложение': {u'field': u'mobile_application', u'func': bool},
|
|
# place_conf settings
|
|
u'Мультимедийное оборудование': {u'field': u'multimedia_equipment', u'func': bool},
|
|
u'Конференц-связь': {u'field': u'conference_call', u'func': bool},
|
|
u'Оборудование для синхронного перевода': {u'field': u'translate_equipment', u'func': bool},
|
|
u'Банкетный зал': {u'field': u'banquet_hall', u'func': bool},
|
|
u'Кейтеринг': {u'field': u'catering', u'func': bool},
|
|
u'Гостиница': {u'field': u'hotel', u'func': bool},
|
|
u'Выставочный зал': {u'field': u'exposition_hall', u'func': bool},
|
|
u'Площадь выст. зала': {u'field': u'exp_hall_area', u'func': to_int},
|
|
u'Общая вместимость': {u'field': u'total_capacity', u'func': to_int},
|
|
u'Количество залов': {u'field': u'amount_halls', u'func': bool},
|
|
}
|
|
# export
|
|
place_settings=[
|
|
{'name': 'id', 'verbose_name': u'ID', 'type': get_int, 'width':1500},
|
|
{'name': 'url', 'verbose_name': u'Url', 'type': unicode},
|
|
{'name': 'name', 'verbose_name': u'Название', 'type': unicode},
|
|
{'name': 'type', 'verbose_name': u'Тип', 'type': get_place_type},##########
|
|
{'name': 'main_title', 'verbose_name': u'Краткое описание', 'type': unicode},
|
|
{'name': 'country', 'verbose_name': u'Страна', 'type': unicode},
|
|
{'name': 'city', 'verbose_name': u'Город', 'type': unicode},
|
|
{'name': 'adress', 'verbose_name': u'Адресс', 'type': unicode},
|
|
{'name': 'phone', 'verbose_name': u'Тел.', 'type': get_int},
|
|
{'name': 'fax', 'verbose_name': u'Факс', 'type': get_int},
|
|
{'name': 'logo', 'verbose_name': u'Логотип', 'type': unicode},
|
|
{'name': 'web_page', 'verbose_name': u'Веб-сайт', 'type': unicode},
|
|
{'name': 'email', 'verbose_name': u'Email', 'type': unicode},
|
|
{'name': 'virtual_tour', 'verbose_name': u'Виртуальный тур', 'type': unicode},
|
|
{'name': 'foundation_year', 'verbose_name': u'Год основания', 'type': get_int},
|
|
{'name': 'event_in_year', 'verbose_name': u'Количество мероприятий в год', 'type': get_int},
|
|
{'name': 'total_area', 'verbose_name': u'Общая выставочная площадь, кв. м.', 'type': get_int},
|
|
{'name': 'closed_area', 'verbose_name': u'Закрытая выставочная площадь, кв. м.', 'type': get_int},
|
|
{'name': 'open_area', 'verbose_name': u'Открытая выставочная площадь, кв. м.', 'type': get_int},
|
|
{'name': 'total_pavilions', 'verbose_name': u'Количество павильонов', 'type': get_int},
|
|
{'name': 'total_halls', 'verbose_name': u'Конференц-залы', 'type': get_int},
|
|
{'name': 'total_capacity', 'verbose_name': u'Общая вместимость', 'type': get_int},
|
|
{'name': 'exposition_hall', 'verbose_name': u'Выставочный зал', 'type': get_bool},
|
|
{'name': 'exp_hall_area', 'verbose_name': u'Площадь выст. зала', 'type': get_int},
|
|
{'name': 'amount_halls', 'verbose_name': u'Количество залов', 'type': get_int},
|
|
{'name': 'bank', 'verbose_name': u'Банк/Банкоматы/Обмен валюты', 'type': get_bool},
|
|
{'name': 'children_room', 'verbose_name': u'Детская комната', 'type': get_bool},
|
|
{'name': 'disabled_service', 'verbose_name': u'Сервис для людей с ограниченными физическими возможностями', 'type': get_bool},
|
|
{'name': 'conference_centre', 'verbose_name': u'Конгресс-центр', 'type': get_bool},
|
|
{'name': 'business_centre', 'verbose_name': u'Бизнес-центр', 'type': get_bool},
|
|
{'name': 'online_registration', 'verbose_name': u'On-line регистрация', 'type': get_bool},
|
|
{'name': 'wifi', 'verbose_name': u'Wi-Fi', 'type': get_bool},
|
|
{'name': 'cafe', 'verbose_name': u'Кафе и рестораны', 'type': get_bool},
|
|
{'name': 'terminals', 'verbose_name': u'Информационные терминалы', 'type': get_bool},
|
|
{'name': 'parking', 'verbose_name': u'Парковка', 'type': get_bool},
|
|
{'name': 'press_centre', 'verbose_name': u'Пресс-центр', 'type': get_bool},
|
|
{'name': 'mobile_application', 'verbose_name': u'Мобильное приложение', 'type': get_bool},
|
|
{'name': 'multimedia_equipment', 'verbose_name': u'Мультимедийное оборудование', 'type': get_bool},
|
|
{'name': 'conference_call', 'verbose_name': u'Конференц-связь', 'type': get_bool},
|
|
{'name': 'translate_equipment', 'verbose_name': u'Оборудование для синхронного перевода', 'type': get_bool},
|
|
{'name': 'banquet_hall', 'verbose_name': u'Банкетный зал', 'type': get_bool},
|
|
{'name': 'catering', 'verbose_name': u'Кейтеринг', 'type': get_bool},
|
|
{'name': 'hotel', 'verbose_name': u'Гостиница', 'type': get_bool},
|
|
|
|
|
|
]
|
|
# -----------------END PLACE EXPO SETTINGS------------------------------
|
|
# default import settings
|
|
import_settings={
|
|
'name': {'func': unicode},
|
|
'url': {'func': unicode},
|
|
'data_begin': {'func': to_date},
|
|
'data_end': {'func': to_date},
|
|
'main_title': {'func': unicode},
|
|
'description': {'func': unicode},
|
|
'audience': {'func': to_audience},
|
|
'country': {'func': to_country},
|
|
'city': {'func': to_city, 'extra_values': 'country'},
|
|
'theme': {'func': to_theme},
|
|
'tag': {'func': to_tag, 'extra_values': 'theme'},
|
|
'periodic': {'func': unicode},
|
|
'web_page': {'func': unicode},
|
|
'time': {'func': unicode},
|
|
'products': {'func': unicode},
|
|
'foundation_year': {'func': to_int},
|
|
'tax': {'func': bool},
|
|
'currency': {'func': unicode},
|
|
'max_price': {'func': to_int},
|
|
'min_price': {'func': to_int},
|
|
'registration_payment': {'func': to_int},
|
|
'min_closed_area': {'func': to_int},
|
|
'max_closed_area': {'func': to_int},
|
|
'min_closed_equipped_area': {'func': to_int},
|
|
'max_closed)equipped_area': {'func': to_int},
|
|
'min_open_area': {'func': to_int},
|
|
'max_open_area': {'func': to_int},
|
|
'min_area': {'func': to_int},
|
|
'max_area': {'func': to_int},
|
|
'is_published': {'func': bool},
|
|
'canceled_by_administrator': {'func': bool},
|
|
'types': {'func': to_theme_type}
|
|
} |