import datetime from django.shortcuts import get_object_or_404, render from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from django.views import generic from .models import Problem, Cislo, Reseni, VysledkyKCislu, Nastaveni, Rocnik class ExportIndexView(generic.base.TemplateView): template_name = 'seminar/export_index.csv' content_type = 'text/plain; charset=utf-8' def get_context_data(self, **kwargs): context = super(ExportIndexView, self).get_context_data(**kwargs) context['exports'] = [] for r in Rocnik.objects.all(): if r.verejna_cisla(): url = reverse('seminar_export_rocnik', kwargs={'prvni_rok': r.prvni_rok}) context['exports'].append(url.split('/')[-1]) return context class ExportRocnikView(generic.DetailView): slug_field = 'prvni_rok' slug_url_kwarg = 'prvni_rok' model = Rocnik template_name = 'seminar/export_rocnik.csv' content_type = 'text/plain; charset=utf-8' def get_context_data(self, **kwargs): context = super(ExportRocnikView, self).get_context_data(**kwargs) rocnik = context['rocnik'] cislo = rocnik.posledni_verejne_cislo() sloupce = ['id', 'name', 'surname', 'gender', 'born', 'email', 'end-year', 'street', 'town', 'postcode', 'country', 'spam-flag', 'spam-date', 'school', 'school-name', 'points', 'rank',] radky = [] vysledky = VysledkyKCislu.objects.filter(cislo = cislo).select_related("resitel").all() posledni_body = 100000 posledni_poradi = 0 for vi in range(len(vysledky)): v = vysledky[vi] rd = {} rd['name'] = v.resitel.jmeno rd['surname'] = v.resitel.prijmeni rd['id'] = v.resitel.id rd['gender'] = 'M' if v.resitel.pohlavi_muz else 'F' if v.resitel.datum_narozeni: rd['born'] = v.resitel.datum_narozeni.strftime("%Y-%m-%d") else: rd['born'] = '' rd['email'] = v.resitel.email rd['end-year'] = v.resitel.rok_maturity # TODO(gavento): Adresa skoly, kdyz preferuje zasilani tam? rd['street'] = v.resitel.ulice rd['town'] = v.resitel.mesto rd['postcode'] = v.resitel.psc rd['country'] = v.resitel.stat if v.resitel.datum_souhlasu_zasilani: rd['spam-flag'] = 'Y' rd['spam-date'] = v.resitel.datum_souhlasu_zasilani.strftime("%Y-%m-%d") else: rd['spam-flag'] = '' rd['spam-date'] = '' if v.resitel.skola: rd['school'] = v.resitel.skola.aesop_id rd['school-name'] = str(v.resitel.skola) else: rd['school'] = '' rd['school-name'] = 'Skola neni znama' if posledni_body > v.body_celkem: posledni_body = v.body_celkem posledni_poradi = vi + 1 rd['rank'] = posledni_poradi rd['points'] = v.body_celkem r = [] for c in sloupce: r.append(rd.pop(c)) assert len(rd) == 0 radky.append(r) context['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") context['cislo'] = cislo context['sloupce'] = sloupce context['radky'] = radky return context