diff --git a/seminar/export.py b/seminar/export.py index 0143101e..3e4372fe 100644 --- a/seminar/export.py +++ b/seminar/export.py @@ -10,96 +10,93 @@ from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni from .ovvpfile import OvvpFile class ExportIndexView(generic.View): - def get(self, request): + def get(self, request): + ls = [] + for r in Rocnik.objects.filter(exportovat = True): + url = reverse('seminar_export_rocnik', kwargs={'prvni_rok': r.prvni_rok}) + ls.append(url.split('/')[-1]) + for s in Soustredeni.objects.filter(exportovat = True): + url = reverse('seminar_export_sous', kwargs={'datum_zacatku': s.datum_zacatku.isoformat()}) + ls.append(url.split('/')[-1]) - ls = [] - for r in Rocnik.objects.filter(exportovat = True): - url = reverse('seminar_export_rocnik', kwargs={'prvni_rok': r.prvni_rok}) - ls.append(url.split('/')[-1]) - for s in Soustredeni.objects.filter(exportovat = True): - url = reverse('seminar_export_sous', kwargs={'datum_zacatku': s.datum_zacatku.isoformat()}) - ls.append(url.split('/')[-1]) - - return HttpResponse('\n'.join(ls) + '\n', content_type='text/plain; charset=utf-8') + return HttpResponse('\n'.join(ls) + '\n', content_type='text/plain; charset=utf-8') def default_ovvpfile(event, rocnik): - of = OvvpFile() - of.headers['version'] = '1' - of.headers['event'] = event - of.headers['year'] = force_text(rocnik.prvni_rok) - of.headers['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") - of.headers['id-scope'] = 'mam' - of.headers['id-generation'] = '1' - return of + of = OvvpFile() + of.headers['version'] = '1' + of.headers['event'] = event + of.headers['year'] = force_text(rocnik.prvni_rok) + of.headers['date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + of.headers['id-scope'] = 'mam' + of.headers['id-generation'] = '1' + return of class ExportSousView(generic.View): - def get(self, request, datum_zacatku=None): - try: - dz = django.utils.dateparse.parse_date(datum_zacatku) - except: - dz = None - if dz is None: - raise django.http.Http404() - - s = get_object_or_404(Soustredeni, datum_zacatku=dz, exportovat=True) - - akce = {Soustredeni.TYP_JARNI: 'MaM.sous.jaro', - Soustredeni.TYP_PODZIMNI: 'MaM.sous.podzim', - Soustredeni.TYP_VIKEND: 'MaM.vikend', - }[s.typ] - - of = default_ovvpfile(akce, s.rocnik) - of.headers['x-event-begin'] = s.datum_zacatku.isoformat() - of.headers['x-event-end'] = s.datum_konce.isoformat() - of.headers['x-event-location'] = s.misto - of.headers['comment'] = u'MaM-Web export ucastniku soustredeni v {x-event-location} od {x-event-begin} do {x-event-end}'.format(**of.headers) - of.columns = ['id', 'name', 'surname', 'gender', 'email', 'end-year', 'school', 'school-name'] - - for u in s.ucastnici.all(): - of.rows.append(u.export_row()) - - return of.to_HttpResponse() - - + def get(self, request, datum_zacatku=None): + try: + dz = django.utils.dateparse.parse_date(datum_zacatku) + except: + dz = None + if dz is None: + raise django.http.Http404() + + s = get_object_or_404(Soustredeni, datum_zacatku=dz, exportovat=True) + + akce = {Soustredeni.TYP_JARNI: 'MaM.sous.jaro', + Soustredeni.TYP_PODZIMNI: 'MaM.sous.podzim', + Soustredeni.TYP_VIKEND: 'MaM.vikend', + }[s.typ] + + of = default_ovvpfile(akce, s.rocnik) + of.headers['x-event-begin'] = s.datum_zacatku.isoformat() + of.headers['x-event-end'] = s.datum_konce.isoformat() + of.headers['x-event-location'] = s.misto + of.headers['comment'] = u'MaM-Web export ucastniku soustredeni v {x-event-location} od {x-event-begin} do {x-event-end}'.format(**of.headers) + of.columns = ['id', 'name', 'surname', 'gender', 'email', 'end-year', 'school', 'school-name'] + + for u in s.ucastnici.all(): + of.rows.append(u.export_row()) + + return of.to_HttpResponse() + +# POZOR! Předělání na nový model neotestováno v reálu (ale zase jen drobné změny) class ExportRocnikView(generic.View): - def get(self, request, prvni_rok=None): - try: - pr = int(prvni_rok) - except: - pr = None - if pr is None: - raise django.http.Http404() - - rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True) - cislo = rocnik.posledni_zverejnena_vysledkovka_cislo() - vysledky = VysledkyKCisluZaRocnik.objects.filter(cislo = cislo).select_related("resitel").order_by('-body').all() - - of = default_ovvpfile('MaM.rocnik', rocnik) - of.headers['comment'] = u'MaM-Web export aktivnich resitelu rocniku {rocnik} do cisla {cislo}'.format( - rocnik=rocnik, cislo=cislo) - of.columns = ['id', 'name', 'surname', 'gender', 'born', 'email', 'end-year', - 'street', 'town', 'postcode', 'country', 'spam-flag', 'spam-date', - 'school', 'school-name', 'points', 'rank',] - - posledni_body = 100000 - posledni_poradi = 0 - for vi in range(len(vysledky)): - - v = vysledky[vi] - rd = v.resitel.export_row() - - if posledni_body > v.body: - posledni_body = v.body - posledni_poradi = vi + 1 - rd['rank'] = posledni_poradi - rd['points'] = v.body - - of.rows.append(rd) - - return of.to_HttpResponse() - - + def get(self, request, prvni_rok=None): + try: + pr = int(prvni_rok) + except: + pr = None + if pr is None: + raise django.http.Http404() + + rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True) + cislo = rocnik.posledni_zverejnena_vysledkovka_cislo() + resitele = views.aktivniResitele(cislo.rocnik.rocnik, cislo.poradi, True) + slovnik_body = secti_body_za_rocnik(cislo, resitele) + _, setrizeni_resitele, setrizene_body = setrid_resitele_a_body(slovnik_body) + + of = default_ovvpfile('MaM.rocnik', rocnik) + of.headers['comment'] = u'MaM-Web export aktivnich resitelu rocniku {rocnik} do cisla {cislo}'.format(rocnik=rocnik, cislo=cislo) + of.columns = ['id', 'name', 'surname', 'gender', 'born', 'email', 'end-year', + 'street', 'town', 'postcode', 'country', 'spam-flag', 'spam-date', + 'school', 'school-name', 'points', 'rank',] + + # počítání pořadí řešitelů + posledni_body = 100000 + posledni_poradi = 0 + for i in range(len(setrizeni_resitele)): + rd = setrizeni_resitele[i].export_row() + + if posledni_body > body[i]: + posledni_body = body[i] + posledni_poradi = i + 1 + rd['rank'] = posledni_poradi + rd['points'] = body[i] + + of.rows.append(rd) + + return of.to_HttpResponse()