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.
 
 
 
 
 
 

118 lines
4.3 KiB

# -*- coding: utf-8 -*-
from country.models import Country
from city.models import City
from place_exposition.models import PlaceExposition
from place_conference.models import PlaceConference
from django.views.generic import CreateView, DeleteView, UpdateView, DetailView
from functions.custom_views import ListView
from django.core.urlresolvers import reverse_lazy
from functions.views_help import split_params
from django.utils.translation import ugettext as _
from forms import PageForm
from models import Page
class NewPage(CreateView):
form_class= PageForm
template_name = 'new_page.html'
success_url = '/admin/page/all/'
class PageList(ListView):
paginate_by = 10
template_name = 'page_admin_list.html'
model = Page
order = 'created'
from django.http import HttpResponseRedirect
import datetime
class EditPage(UpdateView):
model = Page
template_name = 'c_admin/page/new_page.html'
form_class = PageForm
slug_url_kwarg = 'url'
slug_field = 'url'
def get_context_data(self, **kwargs):
context = super(EditPage,self).get_context_data(**kwargs)
context['request'] = self.request
return context
def get_success_url(self):
return reverse_lazy('page_list')
class DeletePage(DeleteView):
template_name = 'c_admin/page/page_confirm_delete.html'
model = Page
success_url = reverse_lazy('page_list')
slug_field = 'url'
slug_url_kwarg = 'url'
class PageDetailed(DetailView):
model = Page
template_name = 'c_admin/page/page_template_view.html'
slug_field = 'url'
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
from django.conf import settings
def download_workbook(request):
lang = get_language()
data = request.GET
if data:
if data.get('filter') == u'future':
qs = request.user.calendar.get_events()
qs = [event for event in qs if event.data_begin > datetime.date.today()]
else:
qs = []
for i,obj in enumerate(data):
if data.get('data[%i][name]' % i) == 'expo':
qs.append(Exposition.objects.language(lang).get(id=data['data[%i][value]'%i]))
elif data.get('data[%i][name]' % i) == 'conf':
qs.append(Conference.objects.language(lang).get(id=data['data[%i][value]'%i]))
if not qs:
return HttpResponseRedirect("/profile/calendar/?message=empty")
earliest_event = qs[0].data_begin
for i, obj in enumerate(qs, start=1):
if obj.data_begin < earliest_event:
earliest_event = obj.data_begin
setattr(obj, 'number', i)
setattr(obj, 'dates', u'%s %s %s - %s %s %s'%(obj.data_begin.strftime('%d'),
settings.MONTHES[obj.data_begin.strftime("%b").lower()]['name'],
obj.data_begin.strftime('%Y'), obj.data_end.strftime('%d'),
settings.MONTHES[obj.data_end.strftime("%b").lower()]['name'],
obj.data_end.strftime('%Y'))
)
setattr(obj, 'full_place', u'%s, %s, %s' % (obj.country, obj.city, getattr(obj.place, 'name', '')))
try:
setattr(obj, 'link', u'http://www.expomap.ru%s'%obj.get_absolute_url())
except:
setattr(obj, 'link', u'http://www.expomap.ru%s'%obj.get_permanent_url())
columns = (
'number',
'name',
'dates',
'main_title',
'full_place',
'participation_note',
'link')
workbook = queryset_to_workbook(qs, columns, earliest_event)
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="My calendar for %s.xls"' % earliest_event.strftime("%B %Y")
workbook.save(response)
return response
else:
return HttpResponseRedirect("/profile/calendar/")