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.
 
 
 
 
 
 

98 lines
4.9 KiB

# -*- coding: utf-8 -*-
import xlwt
import datetime
def get_bool(value):
if value:
return 1
return 0
def get_int(value):
if not value:
return ''
return value
def get_audience(value):
if not value:
return 'Не выбрано'
elif value == 'experts':
return 'Специалисты'
elif value == 'experts and consumers':
return 'Специалисты и потребители'
elif value == 'general public':
return 'Широкая публика'
field_settings = [
{'name': 'id', 'verbose_name': 'id', 'type': get_int, 'width':1500},
{'name': 'url', 'verbose_name': 'url', 'type': str},
{'name': 'name', 'verbose_name': 'Имя', 'type': str, 'width':8000,},
{'name': 'data_begin', 'verbose_name': 'Дата начала', 'type': str},
{'name': 'data_end', 'verbose_name': 'Дата окончания', 'type': str},
{'name': 'main_title', 'verbose_name': 'Краткое описание', 'type': str},
{'name': 'description', 'verbose_name': 'Описание', 'type': str},
{'name': 'audience', 'verbose_name': 'Аудитория', type: get_audience},
{'name': 'country', 'verbose_name': 'Страна', 'type': str},
{'name': 'city', 'verbose_name': 'Город', 'type': str},
{'name': 'periodic', 'verbose_name': 'Периодичность', 'type': str},
{'name': 'web_page', 'verbose_name': 'Веб страница', 'type': str},
{'name': 'time', 'verbose_name': 'Время проведения', 'type': str},
{'name': 'products', 'verbose_name': 'Экспонируемые продукты', 'type': str},
{'name': 'foundation_year', 'verbose_name': 'Год основания', 'type': get_int},
{'name': 'tax', 'verbose_name': 'Налог включен', 'type': get_bool, 'width':1000},
{'name': 'currency', 'verbose_name': 'Валюта', 'type': str},
{'name': 'max_price', 'verbose_name': 'Максимальная цена', 'type': get_int},
{'name': 'min_price', 'verbose_name': 'Минимальная цена', 'type': get_int},
{'name': 'registration_payment', 'verbose_name': 'Регистрационный взнос', 'type': get_int},
{'name': 'min_closed_area', 'verbose_name': 'Минимальная цена закрытой НЕ оборудованной площади', 'type': get_int},
{'name': 'max_closed_area', 'verbose_name': 'Максимальная цена закрытой НЕ оборудованной площади', 'type': get_int},
{'name': 'min_closed_equipped_area', 'verbose_name': 'Минимальная цена закрытой оборудованной площади ', 'type': get_int},
{'name': 'max_closed_equipped_area', 'verbose_name': 'Максимальная цена закрытой оборудованной площади', 'type': get_int},
{'name': 'min_open_area', 'verbose_name': 'Минимальная цена закрытой площади', 'type': get_int},
{'name': 'max_open_area', 'verbose_name': 'Максимальная цена открытой площади', 'type': get_int},
{'name': 'min_area', 'verbose_name': 'Минимальная площадь', 'type': get_int},
{'name': 'max_area', 'verbose_name': 'Максимальная площадь', 'type': get_int},
{'name': 'is_published', 'verbose_name': 'Опубликована', 'type': get_bool, 'width':1000},
{'name': 'canceled_by_administrator', 'verbose_name': 'Отменена администратором', 'type': get_bool, 'width':1000}
]
def get_cell(field_name, value):
return {'tax': get_bool(value), 'foundation_year': get_int(value), 'max_closed_area': get_int(value),
'min_closed_equipped_area': get_int(value), 'registration_payment': get_int(value),
'max_closed_equipped_area': get_int(value), 'max_open_area': get_int(value), 'min_closed_area': get_int(value),
'min_area': get_int(value), 'canceled_by_administrator': get_bool(value), 'is_published': get_bool(value),
'min_open_area': get_int(value), 'audience': get_audience(value)
}.get(field_name, str(value))
#---------------------------------------
#---------------------------------------
def get_cell_style(field_name):
font = xlwt.Font()
# Create the Font
font.name = 'Times New Roman'
default_style = xlwt.XFStyle()
# Create the Style
default_style.font = font
return {
}.get(field_name, default_style)
#------------------------------------------
#------------------------------------------
sorted_names = [u'id', 'name', 'data_begin', 'data_end', 'main_title', 'description', 'country', 'city']
cols_width = {'id': 1500, 'name':8000}
#field_setting.get('width', 20)
def sort_by_names(val):
try:
# put element on the index of sorted names
return sorted_names.index(val)
except ValueError:
# put element on the end
return len(sorted_names)