# -*- 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/")