Vylepšení odevzdávátka #13
7 changed files with 50 additions and 1 deletions
|
@ -32,6 +32,7 @@ class PrihlaskaForm(PasswordResetForm):
|
|||
help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři')
|
||||
|
||||
jmeno = forms.CharField(label='Jméno', max_length=256, required=True)
|
||||
prezdivka_resitele = forms.CharField(label='Přezdívka (veřejná)', max_length=256, required=False)
|
||||
prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True)
|
||||
pohlavi_muz = forms.ChoiceField(label='Pohlaví',
|
||||
choices = ((True,'muž'),(False,'žena')), required=True)
|
||||
|
@ -105,6 +106,17 @@ class PrihlaskaForm(PasswordResetForm):
|
|||
pass
|
||||
return email
|
||||
|
||||
def clean_prezdivka_resitele(self):
|
||||
prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele')
|
||||
if prezdivka_resitele == '':
|
||||
return prezdivka_resitele
|
||||
try:
|
||||
Resitel.objects.get(prezdivka_resitele=prezdivka_resitele)
|
||||
raise forms.ValidationError('Přezdívka je již použita')
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
return prezdivka_resitele
|
||||
|
||||
def clean_zasilat(self):
|
||||
zasilat = self.cleaned_data.get('zasilat')
|
||||
ulice = self.cleaned_data.get('ulice')
|
||||
|
@ -138,6 +150,7 @@ class ProfileEditForm(forms.Form):
|
|||
disabled=True)
|
||||
|
||||
jmeno = forms.CharField(label='Jméno', max_length=256, required=True)
|
||||
prezdivka_resitele = forms.CharField(label='Přezdívka (veřejná)', max_length=256, required=False)
|
||||
prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True)
|
||||
pohlavi_muz = forms.ChoiceField(label='Pohlaví',
|
||||
choices = ((True,'muž'),(False,'žena')), required=True)
|
||||
|
@ -190,6 +203,18 @@ class ProfileEditForm(forms.Form):
|
|||
# pass
|
||||
# return username
|
||||
#
|
||||
|
||||
def clean_prezdivka_resitele(self):
|
||||
prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele')
|
||||
if prezdivka_resitele == '':
|
||||
return prezdivka_resitele
|
||||
try:
|
||||
Resitel.objects.get(prezdivka_resitele=prezdivka_resitele)
|
||||
zelvuska marked this conversation as resolved
Outdated
|
||||
raise forms.ValidationError('Přezdívka je již použita')
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
zelvuska marked this conversation as resolved
Outdated
ledoian
commented
Reálně se celý try-block snaží jen imitovat podmínku „pokud přezdívka není zabraná“ – je přehlednější to vyřešit spíš něčím jako Reálně se celý try-block snaží jen imitovat podmínku „pokud přezdívka není zabraná“ – je přehlednější to vyřešit spíš něčím jako `if m.Resitel.objects.….count() > 0: raise Exception()` (ne nutně na jednom řádku a s určitě s příslušnými třídami a doplněními).
|
||||
return prezdivka_resitele
|
||||
|
||||
def clean_email(self):
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
email = self.cleaned_data.get('email')
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.jmeno %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.prezdivka_resitele %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.prijmeni %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.pohlavi_muz%}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.email %}
|
||||
|
|
|
@ -11,7 +11,7 @@ Získáváme od Tebe údaje vyplněné v přihlášce do semináře (jméno, př
|
|||
Slibujeme Ti, že Tvá osobní data nezneužijeme k ničemu, co by nesouviselo s M&M nebo s dalšími aktivitami Matfyzu, a nikdy je nepředáme nikomu cizímu. Údaje využíváme k zajištění chodu semináře a také je sdílíme s ostatními propagačními akcemi Matfyzu, abychom mohli vyhodnocovat úspěšnost akcí. Pokud budeš mít zájem, budeme Ti také posílat zajímavé zprávy a novinky týkajíci se Matfyzu.
|
||||
</p>
|
||||
<p class="gdpr">
|
||||
Veřejně vystavujeme pouze výsledkové listiny, které také uchováváme pro archivní účely. Pokud ale z nějakého důvodu nebudeš chtít mít své jméno či školu uvedené ve výsledkové listině, není problém to zařídit, napiš nám. Z tištěných materiálů samozřejmě údaje už odstranit nemůžeme.
|
||||
Veřejně vystavujeme pouze seznam přezdívek (pro výběr spoluřešitelů k řešení) a výsledkové listiny, které také uchováváme pro archivní účely. Pokud ale z nějakého důvodu nebudeš chtít mít své jméno či školu uvedené ve výsledkové listině, není problém to zařídit, napiš nám. Z tištěných materiálů samozřejmě údaje už odstranit nemůžeme.
|
||||
zelvuska marked this conversation as resolved
ledoian
commented
👍 👍
|
||||
</p>
|
||||
<p class="gdpr">
|
||||
Na soustředěních a dalších akcích semináře navíc pořizujeme fotografie a videozáznamy a používáme je ke zpravodajským a propagačním účelům. Pro propagační účely si od Tebe vyžádáme samostatný souhlas na začátku akce.
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.jmeno %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.prezdivka_resitele %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.prijmeni %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.pohlavi_muz%}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.email %}
|
||||
|
|
|
@ -160,6 +160,7 @@ def resitelEditView(request):
|
|||
|
||||
if resitel_edit:
|
||||
## Změny v řešiteli
|
||||
resitel_edit.prezdivka_resitele = fcd['prezdivka_resitele']
|
||||
resitel_edit.skola = fcd['skola']
|
||||
resitel_edit.rok_maturity = fcd['rok_maturity']
|
||||
resitel_edit.zasilat = fcd['zasilat']
|
||||
|
@ -263,6 +264,7 @@ def prihlaskaView(request):
|
|||
err_logger.warning(f'Zaregistrovala se osoba s kolizním jménem. ID osob: {[o.id for o in kolize]}')
|
||||
|
||||
r = s.Resitel(
|
||||
prezdivka_resitele=fcd['prezdivka_resitele'],
|
||||
rok_maturity = fcd['rok_maturity'],
|
||||
zasilat = fcd['zasilat'],
|
||||
zasilat_cislo_emailem = fcd['zasilat_cislo_emailem']
|
||||
|
|
18
seminar/migrations/0110_resitel_prezdivka.py
Normal file
18
seminar/migrations/0110_resitel_prezdivka.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.2.28 on 2022-11-21 22:07
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('seminar', '0109_hodnoceni_feedback'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='resitel',
|
||||
name='prezdivka_resitele',
|
||||
field=models.CharField(blank=True, max_length=256, null=True, unique=True, verbose_name='přezdívka řešitele'),
|
||||
),
|
||||
]
|
|
@ -211,6 +211,8 @@ class Resitel(SeminarModelBase):
|
|||
# Interní ID
|
||||
id = models.AutoField(primary_key = True)
|
||||
|
||||
prezdivka_resitele = models.CharField('přezdívka řešitele', blank=True, null=True, max_length=256, unique=True)
|
||||
|
||||
osoba = models.OneToOneField(Osoba, blank=False, null=False, verbose_name='osoba',
|
||||
on_delete=models.PROTECT)
|
||||
|
||||
|
|
Loading…
Reference in a new issue
Tohle velmi zní, jako že ta přezdívka prostě nejde editovat vůbec – pokud už v databázi jsem, tak tohle matchne.
?
Pokud si Alice nastaví přezdívku „Axolotl“, tak ji má v databázi. Dotaz
Restitel.objects.get(prezdivka=Axolotl)
tedy tuto přezdívku najde a celýResitelEditForm
kvůli tomu nepůjde Alici odeslat, přestože je to její přezdívka.Promiň, tvůj komentář jsem pochopil jinak. Samozřejmě tohle je špatně… Dík
Ha, já nevím, podle čeho určit, který řešitel to edituje…
A nestačí to prostě uložit a zjistit, jestli to vyšlo? (Dost možná nestačí, nemám nastudovanou interakci formů a modelů, ale kdyby to stačilo, tak je to zdaleka nejjednodušší…)
A poznáš, co selhalo? A přijde mi, že tohle by mělo být ještě v clean_…
Vyřešeno. Ten objekt má při použití nastavený username…