some changes in xls calendar export

remotes/origin/1203
Ivan Kovalkovskyi 11 years ago
parent e6b13e0f67
commit d81ea6a432
  1. 17
      core/utils.py
  2. 35
      core/views.py

@ -2,10 +2,6 @@
import xlwt
import datetime
from exposition.models import Exposition
from conference.models import Conference
from django.core.exceptions import ObjectDoesNotExist
HEADER_STYLE = xlwt.easyxf('font: bold on')
@ -42,11 +38,13 @@ def get_column_cell(obj, name):
return ', '.join(unicode(x).strip() for x in attr.all())
return attr
def queryset_to_workbook(queryset, columns, header_style=None, default_style=None, cell_style_map=None):
workbook = xlwt.Workbook()
report_date = datetime.date.today()
sheet_name = 'Export {0}'.format(report_date.strftime('%Y-%m-%d'))
sheet_name = u'My calendar {0}'.format(report_date.strftime('%Y-%m-%d'))
sheet = workbook.add_sheet(sheet_name)
sheet.insert_bitmap('')
if not header_style:
header_style = HEADER_STYLE
@ -57,14 +55,13 @@ def queryset_to_workbook(queryset, columns, header_style=None, default_style=Non
obj = queryset[0]
for y, column in enumerate(columns):
header_list=[u'Название события',u'Страна',u'Город',u'Место проведения', u'Дата начала', u'Дата окончания']
sheet.write(0, y, header_list[y], header_style)
for i, column in enumerate(columns):
header_list=[u'#', u'Название события',u'Даты',u'Краткое описание',u'Место проведения', u'Заметка', u'Ссылка на событие']
sheet.write(0, i, header_list[i], header_style)
for x, obj in enumerate(queryset, start=1):
for y, column in enumerate(columns):
value = get_column_cell(obj, column)
value = getattr(obj, column)
style = default_style
for value_type, cell_style in cell_style_map:
if isinstance(value, value_type):

@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response
from country.models import Country
from city.models import City
from place_exposition.models import PlaceExposition
@ -253,34 +252,42 @@ class PageDetailed(DetailView):
slug_url_kwarg = 'url'
# ------------ XLS Export ----------------
from django.http import HttpResponse
from django.utils.translation import get_language
from .utils import queryset_to_workbook
from exposition.models import Exposition
from conference.models import Conference
def download_workbook(request):
data = [(36539, 'expo'),(36602, 'expo'), (3033, 'conf'), (3053, 'conf')]
lang = get_language()
data = [(36539, 'expo'),(36602, 'expo')]#, (3033, 'conf'), (3053, 'conf')]
qs = []
for obj in data:
if obj[1] == 'expo':
qs.append(Exposition.objects.get(id=obj[0]))
if obj[1] == 'conf':
qs.append(Conference.objects.get(id=obj[0]))
qs.append(Exposition.objects.language(lang).get(id=obj[0]))
elif obj[1] == 'conf':
qs.append(Conference.objects.language(lang).get(id=obj[0]))
for i, obj in enumerate(qs, start=1):
setattr(obj, 'number', i)
setattr(obj, 'dates', u'%s - %s'%(obj.data_begin.strftime('%d %B %Y'),obj.data_end.strftime('%d %B %Y')))
setattr(obj, 'full_place', u'%s, %s, %s' % (obj.country, obj.city, getattr(obj.place, 'name', '')))
setattr(obj, 'link', u'expomap.ru%s'%obj.get_absolute_url())
columns = (
'number',
'name',
'country.name',
'city.name',
'place.name',
'data_begin',
'data_end')
'dates',
'main_title',
'full_place',
'participation_note',
'link')
workbook = queryset_to_workbook(qs, columns)
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="export.xls"'
response['Content-Disposition'] = 'attachment; filename="My calendar.xls"'
workbook.save(response)
return response

Loading…
Cancel
Save