From 73a594512c826bb03e4db0762e9808bedcbe9765 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 20:00:45 +0200 Subject: [PATCH 01/12] Fix bugu u exportu: end-year = 'None' --- seminar/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seminar/models.py b/seminar/models.py index 83531f21..fc8e3456 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -195,7 +195,7 @@ class Resitel(SeminarModelBase): 'gender': 'M' if self.pohlavi_muz else 'F', 'born': self.datum_narozeni.isoformat() if self.datum_narozeni else '', 'email': self.email, - 'end-year': self.rok_maturity, + 'end-year': self.rok_maturity or '', # TODO(gavento): Adresa skoly, kdyz preferuje zasilani tam? 'street': self.ulice, From be3cd4b28363a3145dfbc15e648a55796f36ee1f Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 20:12:29 +0200 Subject: [PATCH 02/12] Pridana polozka pro typ soustredeni/akce --- seminar/admin.py | 4 ++-- seminar/migrations/0026_soustredeni_typ.py | 20 ++++++++++++++++++++ seminar/models.py | 10 ++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 seminar/migrations/0026_soustredeni_typ.py diff --git a/seminar/admin.py b/seminar/admin.py index de4c800d..e6242447 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -319,10 +319,10 @@ class SoustredeniAdminForm(forms.ModelForm): class SoustredeniAdmin(reversion.VersionAdmin): form = SoustredeniAdminForm fieldsets = [ - (None, {'fields': ['rocnik', 'misto', 'verejne_db', 'text']}), + (None, {'fields': ['rocnik', 'misto', 'typ', 'verejne_db', 'text']}), (u'Data', {'fields': ['datum_zacatku', 'datum_konce']}), ] - list_display = ['rocnik', 'misto', 'datum_zacatku', 'verejne'] + list_display = ['rocnik', 'misto', 'datum_zacatku', 'typ', 'verejne'] inlines = [Soustredeni_UcastniciInline] list_filter = ['rocnik'] view_on_site = Soustredeni.verejne_url diff --git a/seminar/migrations/0026_soustredeni_typ.py b/seminar/migrations/0026_soustredeni_typ.py new file mode 100644 index 00000000..46d3416f --- /dev/null +++ b/seminar/migrations/0026_soustredeni_typ.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0025_zmena_cesty_nahravani_obrazku'), + ] + + operations = [ + migrations.AddField( + model_name='soustredeni', + name='typ', + field=models.CharField(default=b'podzimni', max_length=16, verbose_name='typ akce', choices=[(b'jarni', 'Jarn\xed soust\u0159ed\u011bn\xed'), (b'podzimni', 'Podzimn\xed soust\u0159ed\u011bn\xed'), (b'sraz', 'Nepravideln\xfd sraz')]), + preserve_default=True, + ), + ] diff --git a/seminar/models.py b/seminar/models.py index fc8e3456..2880d197 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -565,6 +565,16 @@ class Soustredeni(SeminarModelBase): text = models.TextField(u'text k soustředění (HTML)', blank=True, default='') + TYP_JARNI = 'jarni' + TYP_PODZIMNI = 'podzimni' + TYP_SRAZ = 'sraz' + TYP_CHOICES = [ + (TYP_JARNI, u'Jarní soustředění'), + (TYP_PODZIMNI, u'Podzimní soustředění'), + (TYP_SRAZ, u'Nepravidelný sraz'), + ] + typ = models.CharField(u'typ akce', max_length=16, choices=TYP_CHOICES, blank=False, default=TYP_PODZIMNI) + def __str__(self): return force_unicode(u'%s (%s)' % (self.misto, self.datum_zacatku)) From 1797f25c45729a8762cd62b6ea96a0a83ac12e87 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 20:39:46 +0200 Subject: [PATCH 04/12] Minor fix: odstranen ladici print --- seminar/migrations/0022_decimal_body.py | 1 - 1 file changed, 1 deletion(-) diff --git a/seminar/migrations/0022_decimal_body.py b/seminar/migrations/0022_decimal_body.py index 0fb0c427..ff92fcde 100644 --- a/seminar/migrations/0022_decimal_body.py +++ b/seminar/migrations/0022_decimal_body.py @@ -5,7 +5,6 @@ import importlib from django.db import models, migrations migration_0022 = importlib.import_module('seminar.migrations.0002_add_body_views') -print dir(migration_0022) class Migration(migrations.Migration): From 2f79f3e0eba24e08421e58ed82c7649b62aba13d Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 20:42:50 +0200 Subject: [PATCH 05/12] DB flagy pro export a typ soustredeni --- seminar/admin.py | 13 ++++---- .../migrations/0027_export_flag_a_typ_akce.py | 32 +++++++++++++++++++ seminar/models.py | 10 ++++-- 3 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 seminar/migrations/0027_export_flag_a_typ_akce.py diff --git a/seminar/admin.py b/seminar/admin.py index e6242447..63c174ac 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -180,8 +180,7 @@ class CisloAdmin(reversion.VersionAdmin): (None, {'fields': ['cislo', 'rocnik', 'verejne_db', 'verejna_vysledkovka', 'poznamka']}), (u'Data', {'fields': ['datum_vydani', 'datum_deadline']}), ] - list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne'] - list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejna_vysledkovka'] + list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne', 'verejna_vysledkovka'] list_filter = ['rocnik'] view_on_site = Cislo.verejne_url def get_queryset(self, request): @@ -194,9 +193,9 @@ admin.site.register(Cislo, CisloAdmin) class RocnikAdmin(reversion.VersionAdmin): fieldsets = [ - (None, {'fields': ['rocnik', 'prvni_rok']}), + (None, {'fields': ['rocnik', 'prvni_rok', 'exportovat']}), ] - list_display = ['rocnik', 'prvni_rok', 'verejne'] + list_display = ['rocnik', 'prvni_rok', 'exportovat', 'verejne'] inlines = [CisloInline] view_on_site = Rocnik.verejne_url @@ -319,12 +318,12 @@ class SoustredeniAdminForm(forms.ModelForm): class SoustredeniAdmin(reversion.VersionAdmin): form = SoustredeniAdminForm fieldsets = [ - (None, {'fields': ['rocnik', 'misto', 'typ', 'verejne_db', 'text']}), + (None, {'fields': ['rocnik', 'misto', 'typ', 'verejne_db', 'exportovat', 'text']}), (u'Data', {'fields': ['datum_zacatku', 'datum_konce']}), ] - list_display = ['rocnik', 'misto', 'datum_zacatku', 'typ', 'verejne'] + list_display = ['rocnik', 'misto', 'datum_zacatku', 'typ', 'exportovat', 'verejne'] inlines = [Soustredeni_UcastniciInline] - list_filter = ['rocnik'] + list_filter = ['typ', 'rocnik'] view_on_site = Soustredeni.verejne_url actions = [zverejnit_soustredeni, skryt_soustredeni, ] diff --git a/seminar/migrations/0027_export_flag_a_typ_akce.py b/seminar/migrations/0027_export_flag_a_typ_akce.py new file mode 100644 index 00000000..254657cb --- /dev/null +++ b/seminar/migrations/0027_export_flag_a_typ_akce.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0026_soustredeni_typ'), + ] + + operations = [ + migrations.AddField( + model_name='rocnik', + name='exportovat', + field=models.BooleanField(default=False, help_text='Exportuje se jen podle tohoto flagu (ne ve\u0159ejnosti), a to jen \u010d\xedsla s ve\u0159ejnou v\xfdsledkovkou', verbose_name='export do AESOPa', db_column=b'exportovat'), + preserve_default=True, + ), + migrations.AddField( + model_name='soustredeni', + name='exportovat', + field=models.BooleanField(default=False, help_text='Exportuje se jen podle tohoto flagu (ne ve\u0159ejnosti)', verbose_name='export do AESOPa', db_column=b'exportovat'), + preserve_default=True, + ), + migrations.AlterField( + model_name='soustredeni', + name='typ', + field=models.CharField(default=b'podzimni', max_length=16, verbose_name='typ akce', choices=[(b'jarni', 'Jarn\xed soust\u0159ed\u011bn\xed'), (b'podzimni', 'Podzimn\xed soust\u0159ed\u011bn\xed'), (b'vikend', 'V\xedkendov\xfd sraz')]), + preserve_default=True, + ), + ] diff --git a/seminar/models.py b/seminar/models.py index 2880d197..b0bffb11 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -254,6 +254,9 @@ class Rocnik(SeminarModelBase): rocnik = models.IntegerField(u'číslo ročníku', db_index=True, unique=True) + exportovat = models.BooleanField(u'export do AESOPa', db_column='exportovat', default=False, + help_text=u'Exportuje se jen podle tohoto flagu (ne veřejnosti), a to jen čísla s veřejnou výsledkovkou') + def __str__(self): return force_unicode(u'%s (%d/%d)' % (self.rocnik, self.prvni_rok, self.prvni_rok+1)) @@ -567,14 +570,17 @@ class Soustredeni(SeminarModelBase): TYP_JARNI = 'jarni' TYP_PODZIMNI = 'podzimni' - TYP_SRAZ = 'sraz' + TYP_VIKEND = 'vikend' TYP_CHOICES = [ (TYP_JARNI, u'Jarní soustředění'), (TYP_PODZIMNI, u'Podzimní soustředění'), - (TYP_SRAZ, u'Nepravidelný sraz'), + (TYP_VIKEND, u'Víkendový sraz'), ] typ = models.CharField(u'typ akce', max_length=16, choices=TYP_CHOICES, blank=False, default=TYP_PODZIMNI) + exportovat = models.BooleanField(u'export do AESOPa', db_column='exportovat', default=False, + help_text=u'Exportuje se jen podle tohoto flagu (ne veřejnosti)') + def __str__(self): return force_unicode(u'%s (%s)' % (self.misto, self.datum_zacatku)) From 7bd2945dc3fcf0ea79f1553105a8444e1390d7d1 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 20:52:56 +0200 Subject: [PATCH 06/12] Exporty podle flagu 'exportovat' a oprava AESOP id akce --- seminar/export.py | 27 +++++++++++++++------------ seminar/models.py | 9 +++++++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/seminar/export.py b/seminar/export.py index 3d422614..bc8a72f3 100644 --- a/seminar/export.py +++ b/seminar/export.py @@ -12,14 +12,12 @@ class ExportIndexView(generic.View): def get(self, request): ls = [] - for r in Rocnik.objects.all(): - if r.verejna_cisla(): - url = reverse('seminar_export_rocnik', kwargs={'prvni_rok': r.prvni_rok}) - ls.append(url.split('/')[-1]) - for s in Soustredeni.objects.all(): - if s.ucastnici.count() >= 1 and s.verejne: - url = reverse('seminar_export_sous', kwargs={'datum_zacatku': s.datum_zacatku.isoformat()}) - ls.append(url.split('/')[-1]) + 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') @@ -45,9 +43,14 @@ class ExportSousView(generic.View): if dz is None: raise django.http.Http404() - s = get_object_or_404(Soustredeni, datum_zacatku=dz) + s = get_object_or_404(Soustredeni, datum_zacatku=dz, exportovat=True) - of = default_ovvpfile('MaM.sous', s.rocnik) + 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 @@ -70,8 +73,8 @@ class ExportRocnikView(generic.View): if pr is None: raise django.http.Http404() - rocnik = get_object_or_404(Rocnik, prvni_rok=pr) - cislo = rocnik.posledni_verejne_cislo() + rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True) + cislo = rocnik.posledni_zverejnena_vysledkovka_cislo() vysledky = VysledkyKCislu.objects.filter(cislo = cislo).select_related("resitel").order_by('-body_celkem').all() of = default_ovvpfile('MaM.rocnik', rocnik) diff --git a/seminar/models.py b/seminar/models.py index b0bffb11..44ecb828 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -276,6 +276,15 @@ class Rocnik(SeminarModelBase): vc = self.verejna_cisla() return vc[-1] if vc else None + def verejne_vysledkovky_cisla(self): + vc = list(self.cisla.filter(verejna_vysledkovka=True)) + vc.sort(key=lambda c: c.cislo) + return vc + + def posledni_zverejnena_vysledkovka_cislo(self): + vc = self.verejne_vysledkovky_cisla() + return vc[-1] if vc else None + def druhy_rok(self): return self.prvni_rok + 1 From 0a49ace38cc4be5ed4261beb9ea6cf44ce7a94a9 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 21:32:44 +0200 Subject: [PATCH 07/12] Snadne vyrabitko admin akci (viz Soustredeni admin) --- seminar/admin.py | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/seminar/admin.py b/seminar/admin.py index 63c174ac..5db102d7 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- + from django.contrib import admin from django import forms from django.forms import widgets @@ -12,6 +13,23 @@ from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, Prilo import autocomplete_light +def make_set_action(atribut, hodnota, nazev): + u""" + Pomocnik pro rychle vytvareni hromadnych admin akci ktere jen nastavuji + atribut (dany jako string) na danou hodnotu. + nazev je krátký popis akce pro admin rozhraní.""" + def action_f(modeladmin, request, queryset): + for obj in queryset: + assert atribut in obj.__dict__ + obj.__setattr__(atribut, hodnota) + obj.save() + action_f.short_description = nazev + # Trik: je potřeba, aby se funkce různě (ale libovolně) jmenovaly, + # jinak je Django v seznamu akcí splácne do jedné + action_f.__name__ = 'action_f_%d_%d_%d' % (id(atribut), id(hodnota), id(nazev), ) + return action_f + + ### Globální nastavení admin.site.register(Nastaveni, SingletonModelAdmin) @@ -297,18 +315,6 @@ create_modeladmin(ProblemZadanyAdmin, Problem, 'ProblemZadany', verbose_name=u'P ### Soustredeni -def zverejnit_soustredeni(modeladmin, request, queryset): - for soustredeni in queryset: - soustredeni.verejne_db = True - soustredeni.save() -zverejnit_soustredeni.short_description = 'Zveřejnit soustředění' - -def skryt_soustredeni(modeladmin, request, queryset): - for soustredeni in queryset: - soustredeni.verejne_db = False - soustredeni.save() -skryt_soustredeni.short_description = 'Skrýt soustředění (Zneveřjnit)' - class SoustredeniAdminForm(forms.ModelForm): text = forms.CharField(widget=CKEditorWidget(), required=False, **field_labels(Soustredeni, 'text')) class Meta: @@ -325,7 +331,12 @@ class SoustredeniAdmin(reversion.VersionAdmin): inlines = [Soustredeni_UcastniciInline] list_filter = ['typ', 'rocnik'] view_on_site = Soustredeni.verejne_url - actions = [zverejnit_soustredeni, skryt_soustredeni, ] + actions = [ + make_set_action('verejne_db', True, u'Zveřejnit soustředění'), + make_set_action('verejne_db', False, u'Skrýt (zneveřejnit) soustředění'), + make_set_action('exportovat', True, u'Nastavit pro AESOP export'), + make_set_action('exportovat', False, u'Skrýt pro AESOP export'), + ] admin.site.register(Soustredeni, SoustredeniAdmin) From 1498a461a04fc2966c941e6309910d2f76e69c53 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 21:57:23 +0200 Subject: [PATCH 08/12] Dalsi hromadne akce --- seminar/admin.py | 11 +++++++++++ seminar/models.py | 1 + 2 files changed, 12 insertions(+) diff --git a/seminar/admin.py b/seminar/admin.py index 5db102d7..8e189cbf 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -201,6 +201,13 @@ class CisloAdmin(reversion.VersionAdmin): list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne', 'verejna_vysledkovka'] list_filter = ['rocnik'] view_on_site = Cislo.verejne_url + actions = [ + make_set_action('verejne_db', True, u'Zveřejnit číslo'), + make_set_action('verejne_db', False, u'Skrýt (zneveřejnit) číslo'), + make_set_action('verejna_vysledkovka', True, u'Zveřejnit výsledkovku'), + make_set_action('verejna_vysledkovka', False, u'Skrýt (zneveřejnit) výsledkovku'), + ] + def get_queryset(self, request): qs = super(CisloAdmin, self).get_queryset(request) return qs.select_related('rocnik') @@ -216,6 +223,10 @@ class RocnikAdmin(reversion.VersionAdmin): list_display = ['rocnik', 'prvni_rok', 'exportovat', 'verejne'] inlines = [CisloInline] view_on_site = Rocnik.verejne_url + actions = [ + make_set_action('exportovat', True, u'Nastavit pro AESOP export'), + make_set_action('exportovat', False, u'Skrýt pro AESOP export'), + ] admin.site.register(Rocnik, RocnikAdmin) diff --git a/seminar/models.py b/seminar/models.py index 44ecb828..a11c9393 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -266,6 +266,7 @@ class Rocnik(SeminarModelBase): def verejne(self): return len(self.verejna_cisla()) > 0 verejne.boolean = True + verejne.short_description = u'Veřejný (jen dle čísel)' def verejna_cisla(self): vc = [c for c in self.cisla.all() if c.verejne()] From 99bb7da0962d2214305998d470435cd147f41de6 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 22:22:32 +0200 Subject: [PATCH 09/12] Posilani chyb emailem (zatim jen gaventovi) --- mamweb/settings_prod.py | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/mamweb/settings_prod.py b/mamweb/settings_prod.py index 78c400ef..fd7a5206 100644 --- a/mamweb/settings_prod.py +++ b/mamweb/settings_prod.py @@ -33,19 +33,23 @@ DATABASES = { import os -LOGGING = { - 'version': 1, - 'disable_existing_loggers': True, - 'handlers': { - 'console': { - 'class': 'logging.StreamHandler', - }, - }, - 'loggers': { - 'django': { - 'handlers': ['console'], - 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), - }, - }, -} +SERVER_EMAIL = 'prod-errors@mam.mff.cuni.cz' +ADMINS = ['gavento@ucw.cz', ] + +# LOGGING = { +# 'version': 1, +# 'disable_existing_loggers': True, +# 'handlers': { +# 'console': { +# 'class': 'logging.StreamHandler', +# }, +# }, +# 'loggers': { +# 'django': { +# 'handlers': ['console'], +# 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), +# }, +# }, +# } + From 35d9f0ccd17f860a02b53b2f5edcc08d5bc9bf00 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 22:50:36 +0200 Subject: [PATCH 10/12] Oprava nastaveni posilani chybovych mailu --- mamweb/settings_prod.py | 7 +++++-- seminar/models.py | 7 +++++-- seminar/templates/seminar/archiv/cislo_vysledkovka.tex | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mamweb/settings_prod.py b/mamweb/settings_prod.py index fd7a5206..74897882 100644 --- a/mamweb/settings_prod.py +++ b/mamweb/settings_prod.py @@ -33,8 +33,11 @@ DATABASES = { import os -SERVER_EMAIL = 'prod-errors@mam.mff.cuni.cz' -ADMINS = ['gavento@ucw.cz', ] +SERVER_EMAIL = 'mamweb-prod-errors@mam.mff.cuni.cz' +ADMINS = [ + ('Tomas Gavenciak', 'gavento@ucw.cz'), + ] + # LOGGING = { # 'version': 1, diff --git a/seminar/models.py b/seminar/models.py index a11c9393..cdbd7f89 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -211,7 +211,10 @@ class Resitel(SeminarModelBase): } def rocnik(self, datum): - "Vypise skolni rocnik resitele pro zadane datum typu datetime." + """Vypise skolni rocnik resitele pro zadane datum typu datetime. + Vraci None pro neznamy rocnik.""" + if self.rok_maturity is None: + return None rozdil = self.rok_maturity - datum.year if datum.month < 9: return 4 - rozdil @@ -221,7 +224,7 @@ class Resitel(SeminarModelBase): def titul(self, celkove_body): "Vrati titul podle zadaneho poctu bodu." if celkove_body < 10: - return None + return '' elif celkove_body < 20: return 'Bc.' elif celkove_body < 50: diff --git a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex index 6da4e44f..e39e0c2c 100644 --- a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex +++ b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex @@ -24,7 +24,7 @@ {% if rv.resitel.titul %} \titul{ {{ rv.resitel.titul }} } {% endif %} - {{ rv.resitel.plne_jmeno }} & {{ rv.resitel.rocnik}} & {{ rv.body_minule }} + {{ rv.resitel.plne_jmeno }} & {{ rv.resitel.rocnik |default:"" }} & {{ rv.body_minule }} {% for b in rv.body %} {{ b }} & {% endfor %} From 3c1db858951c28e7e28bdb499d535f4f988c2a7b Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Thu, 23 Jul 2015 22:51:17 +0200 Subject: [PATCH 11/12] Uprava pocitani rocniku resitele (z rocniku misto data) --- seminar/models.py | 18 +++++++++--------- seminar/views.py | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/seminar/models.py b/seminar/models.py index cdbd7f89..c93ac71d 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -210,16 +210,16 @@ class Resitel(SeminarModelBase): 'school-name': str(self.skola) if self.skola else 'Skola neni znama', } - def rocnik(self, datum): - """Vypise skolni rocnik resitele pro zadane datum typu datetime. - Vraci None pro neznamy rocnik.""" + def rocnik(self, rocnik): + """Vrati skolni rocnik resitele pro zadany Rocnik. + Vraci '' pro neznamy rok maturity resitele, Z* pro ekvivalent ZŠ.""" if self.rok_maturity is None: - return None - rozdil = self.rok_maturity - datum.year - if datum.month < 9: - return 4 - rozdil - else: - return 5 - rozdil + return '' + rozdil = 5 - (self.rok_maturity - rocnik.prvni_rok) + if rozdil >= 1: + return str(rozdil) + else: + return 'Z' + str(rozdil + 9) def titul(self, celkove_body): "Vrati titul podle zadaneho poctu bodu." diff --git a/seminar/views.py b/seminar/views.py index 94507798..f7e099dc 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -96,7 +96,7 @@ class CisloView(generic.DetailView): v = vysledky[vi] tv = RadekVysledkovky() tv.resitel = v.resitel - tv.rocnik = tv.resitel.rocnik(context['cislo'].datum_vydani) + tv.rocnik = tv.resitel.rocnik(context['cislo'].rocnik) tv.resitel.titul = tv.resitel.titul(v.body_celkem) tv.vysledek = v #odkazuje na VysledkyKCislu From c347e75d382d13614bdce3e83e640cebd3657ce6 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Sun, 26 Jul 2015 12:07:45 +0200 Subject: [PATCH 12/12] Fix search pole Resitele --- seminar/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seminar/admin.py b/seminar/admin.py index 8e189cbf..6c40bb8c 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -160,7 +160,7 @@ class ResitelAdmin(reversion.VersionAdmin): ] list_display = ['jmeno', 'prijmeni', 'user', 'pohlavi_muz', 'skola', 'rok_maturity', 'pocet_reseni'] list_filter = ['pohlavi_muz', 'rok_maturity', 'zasilat'] - search_fields = ['jmeno', 'prijmeni', 'ulice', 'user', 'mesto', 'email'] + search_fields = ['jmeno', 'prijmeni', 'ulice', 'mesto', 'email'] inlines = [ReseniKResiteliInline] def get_queryset(self, request):