Browse Source

Fix: 0.5 · #1237

pull/13/head
Jonas Havelka 2 years ago
parent
commit
0d17b45011
  1. 25
      personalni/forms.py
  2. 1
      personalni/templates/personalni/udaje/edit.html
  3. 2
      personalni/templates/personalni/udaje/gdpr.html
  4. 1
      personalni/templates/personalni/udaje/prihlaska.html
  5. 2
      personalni/views.py
  6. 18
      seminar/migrations/0110_resitel_prezdivka.py
  7. 2
      seminar/models/personalni.py

25
personalni/forms.py

@ -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)
raise forms.ValidationError('Přezdívka je již použita')
except ObjectDoesNotExist:
pass
return prezdivka_resitele
def clean_email(self):
err_logger = logging.getLogger('seminar.prihlaska.problem')
email = self.cleaned_data.get('email')

1
personalni/templates/personalni/udaje/edit.html

@ -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 %}

2
personalni/templates/personalni/udaje/gdpr.html

@ -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&amp;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.
</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.

1
personalni/templates/personalni/udaje/prihlaska.html

@ -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 %}

2
personalni/views.py

@ -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

@ -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'),
),
]

2
seminar/models/personalni.py

@ -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…
Cancel
Save