Tomas Gavenciak
10 years ago
5 changed files with 128 additions and 2 deletions
@ -0,0 +1,97 @@ |
|||||
|
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 |
||||
|
|
||||
|
|
|
Can't render this file because it has a wrong number of fields in line 11.
|
@ -1,9 +1,12 @@ |
|||||
from django.conf.urls import patterns, url |
from django.conf.urls import patterns, url |
||||
from . import views |
from . import views, export |
||||
|
|
||||
urlpatterns = patterns('', |
urlpatterns = patterns('', |
||||
url(r'^rocnik/(?P<pk>\d+)/$', views.RocnikView.as_view(), name='seminar.rocnik'), |
url(r'^rocnik/(?P<pk>\d+)/$', views.RocnikView.as_view(), name='seminar.rocnik'), |
||||
url(r'^cislo/(?P<pk>\d+)/$', views.CisloView.as_view(), name='seminar.cislo'), |
url(r'^cislo/(?P<pk>\d+)/$', views.CisloView.as_view(), name='seminar.cislo'), |
||||
url(r'^problem/(?P<pk>\d+)/$', views.ProblemView.as_view(), name='seminar.problem'), |
url(r'^problem/(?P<pk>\d+)/$', views.ProblemView.as_view(), name='seminar.problem'), |
||||
url(r'^zadani/$', views.AktualniZadaniView, name='seminar.aktualni_zadani'), |
url(r'^zadani/$', views.AktualniZadaniView, name='seminar.aktualni_zadani'), |
||||
|
|
||||
|
url(r'^aesop-export/mam-rocnik-(?P<prvni_rok>\d+)\.csv$', export.ExportRocnikView.as_view(), name='seminar.export.rocnik'), |
||||
|
url(r'^aesop-export/index.csv$', export.ExportIndexView.as_view(), name='seminar.export.index'), |
||||
) |
) |
||||
|
Loading…
Reference in new issue