From aa8bb6dde485d3a79356fef43a72799bf987a31f Mon Sep 17 00:00:00 2001 From: Jonas Havelka Date: Tue, 6 Apr 2021 22:32:42 +0200 Subject: [PATCH] =?UTF-8?q?Vyslou=C5=BEil=C3=BDm=20=C3=BA=C4=8Dastn=C3=ADk?= =?UTF-8?q?=C5=AFm=20zkrouhnout=20zm=C4=9Bnu=20=C3=BAdaj=C5=AF.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (Hlavně kvůli orgům, kteří nemohli editovat bez změny roku maturity) --- seminar/forms.py | 24 +++++++++++++++++++++- seminar/templates/seminar/profil/edit.html | 2 ++ seminar/views/views_all.py | 18 ++++++++++------ 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/seminar/forms.py b/seminar/forms.py index 8f6950fa..4db77c18 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -142,6 +142,28 @@ class PrihlaskaForm(forms.Form): elif data.get('skola_adresa')=='': self.add_error('skola_adresa',forms.ValidationError('Je nutné vyplnit adresu školy')) +# Editační formulář bez řešitele. +class ProfileEditFormPoMat(forms.Form): + username = forms.CharField(label='Přihlašovací jméno', + max_length=256, + required=True) + + jmeno = forms.CharField(label='Jméno', max_length=256, required=True) + prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True) + pohlavi_muz = forms.ChoiceField(label='Pohlaví', + choices = ((True,'muž'),(False,'žena')), required=True) + email = forms.EmailField(label='E-mail',max_length=256, required=True) + telefon = forms.CharField(widget=TelInput(),label='Telefon',max_length=256, required=False) + datum_narozeni = forms.DateField(widget=DateInput(),label='Datum narození', required=False) + ulice = forms.CharField(label='Ulice', max_length=256, required=False) + mesto = forms.CharField(label='Město', max_length=256, required=False) + psc = forms.CharField(label='PSČ', max_length=32, required=False) + stat = forms.ChoiceField(label='Stát', + choices = (('CZ', 'Česká Republika'), + ('SK', 'Slovenská Republika'), + ('other', 'Jiné')), + required=False) + stat_text = forms.CharField(label='Stát', max_length=256, required=False) class ProfileEditForm(forms.Form): username = forms.CharField(label='Přihlašovací jméno', @@ -181,7 +203,7 @@ class ProfileEditForm(forms.Form): rok_maturity = forms.IntegerField( label='Rok maturity', - min_value=date.today().year, + min_value=date.today().year, max_value=date.today().year+8, required=True) zasilat = forms.ChoiceField(label='Kam zasílat čísla a řešení',choices = Resitel.ZASILAT_CHOICES, required=True) diff --git a/seminar/templates/seminar/profil/edit.html b/seminar/templates/seminar/profil/edit.html index 9f94090e..89ad6b8c 100644 --- a/seminar/templates/seminar/profil/edit.html +++ b/seminar/templates/seminar/profil/edit.html @@ -61,6 +61,7 @@ {% include "seminar/profil/prihlaska_field.html" with field=form.stat_text id="id_li_stat_text"%} +{% if not PoMat %} {# Vysloužilým účastníkům skrýt editaci školy apod. #}

@@ -95,6 +96,7 @@
+{% endif %} diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py index 49180550..81a15071 100644 --- a/seminar/views/views_all.py +++ b/seminar/views/views_all.py @@ -26,7 +26,7 @@ import seminar.models as m from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek, Osoba, Skola # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci #from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva from seminar import utils, treelib -from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm +from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm, ProfileEditFormPoMat import seminar.forms as f import seminar.templatetags.treenodes as tnltt import seminar.views.views_rest as vr @@ -1095,15 +1095,21 @@ def resitelEditView(request): user_edit = osoba_edit.user ## Vytvoření slovníku, kterým předvyplním formulář prefill_1=model_to_dict(user_edit) - if resitel_edit: + if resitel_edit and resitel_edit.rok_maturity >= date.today().year: prefill_2=model_to_dict(resitel_edit) prefill_1.update(prefill_2) prefill_3=model_to_dict(osoba_edit) prefill_1.update(prefill_3) - form = ProfileEditForm(initial=prefill_1) + if resitel_edit and resitel_edit.rok_maturity < date.today().year: + form = ProfileEditFormPoMat(initial=prefill_1) + else: + form = ProfileEditForm(initial=prefill_1) ## Změna údajů a jejich uložení if request.method == 'POST': - form = ProfileEditForm(request.POST) + if resitel_edit and resitel_edit.rok_maturity < date.today().year: + form = ProfileEditFormPoMat(request.POST) + else: + form = ProfileEditForm(request.POST) if form.is_valid(): ## Změny v osobě fcd = form.cleaned_data @@ -1124,7 +1130,7 @@ def resitelEditView(request): ## Neznámá země msg = "Unknown country {}".format(fcd['stat_text']) - if resitel_edit: + if resitel_edit and resitel_edit.rok_maturity >= date.today().year: ## Změny v řešiteli resitel_edit.skola = fcd['skola'] resitel_edit.rok_maturity = fcd['rok_maturity'] @@ -1140,7 +1146,7 @@ def resitelEditView(request): return formularOKView(request) else: ## Stránka před odeslaním formuláře = předvyplněný formulář - return render(request, 'seminar/profil/edit.html', {'form': form}) + return render(request, 'seminar/profil/edit.html', {'form': form, 'PoMat': resitel_edit and resitel_edit.rok_maturity < date.today().year}) def prihlaskaView(request): generic_logger = logging.getLogger('seminar.prihlaska')