Web M&M
https://mam.matfyz.cz
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
3.5 KiB
98 lines
3.5 KiB
10 years ago
|
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'] = v.resitel.skola.nazev
|
||
|
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
|
||
|
|
||
|
|