Merge branch 'reforma_prihlasky_a_posilani'
This commit is contained in:
commit
0f5b2b128f
10 changed files with 225 additions and 370 deletions
|
@ -25,106 +25,85 @@ class TelInput(forms.TextInput):
|
|||
input_pattern="^[+]?[()/0-9. -]{9,}$"
|
||||
|
||||
|
||||
class PrihlaskaForm(PasswordResetForm):
|
||||
username = forms.CharField(label='Přihlašovací jméno',
|
||||
max_length=256,
|
||||
required=True,
|
||||
help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři')
|
||||
class UdajeForm(forms.Form):
|
||||
username = None
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
|
||||
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)
|
||||
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)
|
||||
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 a číslo popisné', 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 = 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)
|
||||
|
||||
skola = forms.ModelChoiceField(label="Škola",
|
||||
skola = forms.ModelChoiceField(
|
||||
label="Škola",
|
||||
queryset=Skola.objects.all(),
|
||||
widget=autocomplete.ModelSelect2(
|
||||
url='autocomplete_skola',
|
||||
attrs = {'data-placeholder--id': '-1',
|
||||
'data-placeholder--text' : '---',
|
||||
'data-allow-clear': 'true'})
|
||||
,required=False)
|
||||
|
||||
attrs={
|
||||
'data-placeholder--id': '-1',
|
||||
'data-placeholder--text': '---',
|
||||
'data-allow-clear': 'true'
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
|
||||
skola_nazev = forms.CharField(label='Název školy', max_length=256, required=False)
|
||||
skola_adresa = forms.CharField(label='Adresa školy', max_length=256, required=False)
|
||||
|
||||
# trida = forms.CharField(label='Třída',max_length=10, required=True)
|
||||
|
||||
rok_maturity = forms.IntegerField(
|
||||
label='Rok maturity',
|
||||
min_value=date.today().year,
|
||||
label='Rok maturity',
|
||||
min_value=date.today().year,
|
||||
max_value=date.today().year+8,
|
||||
required=True)
|
||||
zasilat = forms.ChoiceField(label='Kam zasílat čísla (zasílání není zpoplatněno)',choices = Resitel.ZASILAT_CHOICES, required=True, initial=Resitel.ZASILAT_NIKAM)
|
||||
required=True,
|
||||
)
|
||||
|
||||
zasilat = forms.ChoiceField(label='Kam zasílat (odměny, pozvánky, případně čísla nebo propagační materiály)', choices=[it for it in Resitel.ZASILAT_CHOICES if it[0] != Resitel.ZASILAT_NIKAM], required=True, initial=Resitel.ZASILAT_DOMU)
|
||||
zasilat_cislo_papirove = forms.BooleanField(label='Chci dostávat čísla poštou (zasílání není zpoplatněno)', required=False, initial=False)
|
||||
zasilat_cislo_emailem = forms.BooleanField(label='Chci dostávat e-mailem upozornění na vydání nového čísla', required=False, initial=True)
|
||||
|
||||
jak_se_dozvedeli = forms.CharField(widget=forms.Textarea({"rows": 3, "cols": 20}), label='Jak ses o M&M dozvěděl(a)? (Nechceš-li odpovídat, napiš „nechci uvést“.)', required=True)
|
||||
|
||||
gdpr = forms.BooleanField(label='Souhlasím se zpracováním osobních údajů', required=True)
|
||||
spam = forms.BooleanField(label='Souhlasím se zasíláním materiálů od MFF UK', required=False)
|
||||
|
||||
def clean_username(self):
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
username = self.cleaned_data.get('username')
|
||||
try:
|
||||
User.objects.get(username=username)
|
||||
msg = "Username {} exists".format(username)
|
||||
err_logger.info(msg)
|
||||
raise forms.ValidationError('Přihlašovací jméno je již použito')
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
return username
|
||||
|
||||
def clean_email(self):
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
email = self.cleaned_data.get('email')
|
||||
try:
|
||||
osoba = Osoba.objects.get(email=email)
|
||||
msg = "Email {} exists".format(email)
|
||||
if osoba.user is not None:
|
||||
err_logger.info(msg)
|
||||
raise forms.ValidationError('E-mail je již použit')
|
||||
else:
|
||||
msg += ', but currently has no User, so allowing registration.'
|
||||
err_logger.info(msg)
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
return email
|
||||
spam = forms.BooleanField(label='Souhlasím se zasíláním propagačních materiálů od MFF UK', required=False)
|
||||
|
||||
def clean_prezdivka_resitele(self):
|
||||
prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele')
|
||||
if prezdivka_resitele == '':
|
||||
return prezdivka_resitele
|
||||
if Resitel.objects.filter(prezdivka_resitele=prezdivka_resitele).count() > 0:
|
||||
if Resitel.objects.filter(prezdivka_resitele=prezdivka_resitele).exclude(osoba__user__username=self.username).count() > 0:
|
||||
raise forms.ValidationError('Přezdívka je již použita')
|
||||
return prezdivka_resitele
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
try:
|
||||
osoba = Osoba.objects.exclude(user__username=self.username).get(email=email)
|
||||
msg = "Email {} exists".format(email)
|
||||
if osoba.user is not None:
|
||||
self.err_logger.info(msg)
|
||||
raise forms.ValidationError('E-mail je již použit')
|
||||
else:
|
||||
msg += ', but currently has no User, so allowing registration.'
|
||||
self.err_logger.info(msg)
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
return email
|
||||
|
||||
def clean_zasilat(self):
|
||||
zasilat = self.cleaned_data.get('zasilat')
|
||||
ulice = self.cleaned_data.get('ulice')
|
||||
if zasilat == Resitel.ZASILAT_DOMU and ulice == "":
|
||||
raise forms.ValidationError('Nevyplněná adresa bydliště, nelze zasílat čísla domů.')
|
||||
raise forms.ValidationError('Nevyplněná adresa bydliště, nelze zasílat domů.')
|
||||
return zasilat
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
|
||||
data = self.cleaned_data
|
||||
if data.get('stat') != 'other' and data.get('stat_text') != '':
|
||||
|
@ -140,106 +119,41 @@ class PrihlaskaForm(PasswordResetForm):
|
|||
self.add_error('skola_adresa',forms.ValidationError('Je nutné vyplnit adresu školy'))
|
||||
|
||||
|
||||
class ProfileEditForm(forms.Form):
|
||||
username = forms.CharField(label='Přihlašovací jméno',
|
||||
max_length=256,
|
||||
required=False,
|
||||
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)
|
||||
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)
|
||||
|
||||
skola = forms.ModelChoiceField(label="Škola",
|
||||
queryset=Skola.objects.all(),
|
||||
widget=autocomplete.ModelSelect2(
|
||||
url='autocomplete_skola',
|
||||
attrs = {'data-placeholder--id': '-1',
|
||||
'data-placeholder--text' : '---',
|
||||
'data-allow-clear': 'true'})
|
||||
,required=False)
|
||||
class PrihlaskaForm(PasswordResetForm, UdajeForm):
|
||||
username = forms.CharField(
|
||||
label='Přihlašovací jméno',
|
||||
max_length=256,
|
||||
required=True,
|
||||
help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři',
|
||||
)
|
||||
|
||||
jak_se_dozvedeli = forms.CharField(widget=forms.Textarea({"rows": 3, "cols": 20}), label='Jak ses o M&M dozvěděl(a)? (Nechceš-li odpovídat, napiš „nechci uvést“.)', required=True)
|
||||
|
||||
gdpr = forms.BooleanField(label='Souhlasím se zpracováním osobních údajů', required=True)
|
||||
|
||||
skola_nazev = forms.CharField(label='Název školy', max_length=256, required=False)
|
||||
skola_adresa = forms.CharField(label='Adresa školy', max_length=256, required=False)
|
||||
|
||||
# trida = forms.CharField(label='Třída',max_length=10, required=True)
|
||||
|
||||
rok_maturity = forms.IntegerField(
|
||||
label='Rok maturity',
|
||||
min_value=date.today().year,
|
||||
max_value=date.today().year+8,
|
||||
required=True)
|
||||
zasilat = forms.ChoiceField(label='Kam zasílat čísla',choices = Resitel.ZASILAT_CHOICES, required=True)
|
||||
zasilat_cislo_emailem = forms.BooleanField(label='Chci dostávat email s upozorněním na vydání nového čísla', required=False)
|
||||
|
||||
spam = forms.BooleanField(label='Souhlasím se zasíláním materiálů od MFF UK', required=False)
|
||||
# def clean_username(self):
|
||||
# err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
# username = self.cleaned_data.get('username')
|
||||
# try:
|
||||
# User.objects.get(username=username)
|
||||
# msg = "Username {} exists".format(username)
|
||||
# err_logger.info(msg)
|
||||
# raise forms.ValidationError('Přihlašovací jméno je již použito')
|
||||
#
|
||||
# except ObjectDoesNotExist:
|
||||
# pass
|
||||
# return username
|
||||
#
|
||||
|
||||
def clean_prezdivka_resitele(self):
|
||||
prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele')
|
||||
if prezdivka_resitele == '':
|
||||
return prezdivka_resitele
|
||||
if Resitel.objects.filter(prezdivka_resitele=prezdivka_resitele).exclude(osoba__user__username=self.username).count() > 0:
|
||||
raise forms.ValidationError('Přezdívka je již použita')
|
||||
return prezdivka_resitele
|
||||
|
||||
def clean_email(self):
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
email = self.cleaned_data.get('email')
|
||||
def clean_username(self):
|
||||
username = self.cleaned_data.get('username')
|
||||
try:
|
||||
Osoba.objects.exclude(user__username=self.username).get(email=email)
|
||||
msg = "Email {} exists (in edit)".format(email)
|
||||
err_logger.info(msg)
|
||||
raise forms.ValidationError('Email je již použit')
|
||||
User.objects.get(username=username)
|
||||
msg = "Username {} exists".format(username)
|
||||
self.err_logger.info(msg)
|
||||
raise forms.ValidationError('Přihlašovací jméno je již použito')
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
return email
|
||||
#def clean(self):
|
||||
# super().clean()
|
||||
#
|
||||
# err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
return username
|
||||
|
||||
# data = self.cleaned_data
|
||||
# if data.get('password') != data.get('password_check'):
|
||||
# self.add_error('password_check',forms.ValidationError('Hesla se neshodují'))
|
||||
# if data.get('stat') != '' and data.get('stat_text') != '':
|
||||
# self.add_error('stat',forms.ValidationError('Nelze mít vybraný stát z menu a zároven zapsaný textem'))
|
||||
# if data.get('skola') and (data.get('skola_nazev') or data.get('skola_adresa')):
|
||||
# self.add_error('skola',forms.ValidationError('Pokud je škola v seznamu, nevypisujte ji ručně, pokud není, zrušte výběr ze seznamu (křížek vpravo)'))
|
||||
# if not data.get('skola'):
|
||||
# if data.get('skola_nazev')=='' and data.get('skola_adresa')=='':
|
||||
# self.add_error('skola',forms.ValidationError('Je nutné vyplnit školu'))
|
||||
# elif data.get('skola_nazev')=='':
|
||||
# self.add_error('skola_nazev',forms.ValidationError('Je nutné vyplnit název školy'))
|
||||
# elif data.get('skola_adresa')=='':
|
||||
# self.add_error('skola_adresa',forms.ValidationError('Je nutné vyplnit adresu školy'))
|
||||
|
||||
class ProfileEditForm(UdajeForm):
|
||||
err_logger = logging.getLogger('seminar.edit.problem')
|
||||
username = forms.CharField(
|
||||
label='Přihlašovací jméno',
|
||||
max_length=256,
|
||||
required=False,
|
||||
disabled=True,
|
||||
)
|
||||
|
||||
|
||||
class PoMaturiteProfileEditForm(ProfileEditForm):
|
||||
|
|
|
@ -1,109 +1,19 @@
|
|||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
||||
{% block script %}
|
||||
<script src="{% static 'personalni/prihlaska.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
<!--
|
||||
|
||||
# pro přidání políčka do formuláře je potřeba
|
||||
# - mít v modelu tu položku, kterou chci upravovat
|
||||
# - přidat do views (prihlaskaView, resitelEditView)
|
||||
# - přidat do forms
|
||||
# - includovat do html
|
||||
|
||||
-->
|
||||
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% block nadpis1a %}
|
||||
Změna osobních údajů
|
||||
{% endblock %}
|
||||
</h1>
|
||||
|
||||
<hr>
|
||||
<p><a href="{% url 'reset_password' %}">Změnit heslo</a></p>
|
||||
|
||||
<form action="{% url 'seminar_resitel_edit' %}" method="post">
|
||||
{% csrf_token %}
|
||||
{{form.non_field_errors}}
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Přihlašovací údaje
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.username %}
|
||||
</table>
|
||||
<p><a href="{% url 'reset_password' %}">
|
||||
Změnit heslo
|
||||
</a></p>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Osobní údaje
|
||||
</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 %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.telefon %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.datum_narozeni %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Bydliště
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.ulice %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.mesto %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.psc %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.stat %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.stat_text id="id_li_stat_text"%}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Škola
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola %}
|
||||
<tr><td colspan="2" ><button id="id_skola_text_button" type="button">Škola není v seznamu</button></td></tr>
|
||||
<tr><td id="id_li_skola_vypln" colspan="2">Vyplň prosím celý název a adresu školy.</td></tr>
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola_nazev id="id_li_skola_nazev" %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola_adresa id="id_li_skola_adresa" %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.rok_maturity %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Pošta
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat_cislo_emailem %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Zasílání propagačních materiálů
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.spam %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<input type="submit" value="Změnit">
|
||||
{% include "personalni/udaje/udaje.html"%}
|
||||
<input type="submit" value="Změnit">
|
||||
</form>
|
||||
<script>
|
||||
$("#id_stat").on("change",addrCountryChanged);
|
||||
$("#id_skola_text_button").on("click",schoolNotInList);
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -5,16 +5,6 @@
|
|||
<script src="{% static 'personalni/prihlaska.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
<!--
|
||||
|
||||
# pro přidání políčka do formuláře je potřeba
|
||||
# - mít v modelu tu položku, kterou chci upravovat
|
||||
# - přidat do views (prihlaskaView, resitelEditView)
|
||||
# - přidat do forms
|
||||
# - includovat do html
|
||||
|
||||
-->
|
||||
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% block nadpis1a %}
|
||||
|
@ -25,109 +15,26 @@
|
|||
<p><b>Tučně</b> popsaná pole jsou povinná.</p>
|
||||
|
||||
<form action="{% url 'seminar_prihlaska' %}" method="post">
|
||||
{% csrf_token %}
|
||||
{{form.non_field_errors}}
|
||||
{% include "personalni/udaje/udaje.html" %}
|
||||
<h4>
|
||||
GDPR
|
||||
</h4>
|
||||
{% include "personalni/udaje/gdpr.html" %}
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.gdpr %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<hr>
|
||||
<h4>
|
||||
Přihlašovací údaje
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.username %}
|
||||
{# {% include "personalni/udaje/prihlaska_field.html" with field=form.password %}#}
|
||||
{# {% include "personalni/udaje/prihlaska_field.html" with field=form.password_check %}#}
|
||||
</table>
|
||||
<h4>
|
||||
Ostatní
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.jak_se_dozvedeli %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Osobní údaje
|
||||
</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 %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.telefon %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.datum_narozeni %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Bydliště
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.ulice %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.mesto %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.psc %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.stat %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.stat_text id="id_li_stat_text"%}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Škola
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola %}
|
||||
<tr><td colspan="2" ><button id="id_skola_text_button" type="button">Škola není v seznamu</button></td><td>(Prosíme, zkuste ji najít, téměř jistě ji v seznamu máme. Školy se dobře hledají podle příjmení lidí v jejich názvu, podle ulice, případně název ulice <i>mezera</i> město, atd. Nezadávejte slova, která se často zkracují – gymnázium, střední odborná škola, křestní jména…)</td></tr>
|
||||
<tr><td id="id_li_skola_vypln" colspan="2">Vyplň prosím celý název a adresu školy.</td></tr>
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola_nazev id="id_li_skola_nazev" %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola_adresa id="id_li_skola_adresa" %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.rok_maturity %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Pošta
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat_cislo_emailem %}
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
GDPR
|
||||
</h4>
|
||||
{% include "personalni/udaje/gdpr.html" %}
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.gdpr %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Zasílání propagačních materiálů
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.spam %}
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Ostatní
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.jak_se_dozvedeli %}
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<input type="submit" value="Odeslat">
|
||||
<input type="submit" value="Odeslat">
|
||||
</form>
|
||||
<script>
|
||||
$("#id_stat").on("change",addrCountryChanged);
|
||||
$("#id_skola_text_button").on("click",schoolNotInList);
|
||||
</script>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
|
75
personalni/templates/personalni/udaje/udaje.html
Normal file
75
personalni/templates/personalni/udaje/udaje.html
Normal file
|
@ -0,0 +1,75 @@
|
|||
{% load static %}
|
||||
|
||||
{% block script %}
|
||||
<script src="{% static 'personalni/prihlaska.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% csrf_token %}
|
||||
{{form.non_field_errors}}
|
||||
|
||||
<hr>
|
||||
<h4>
|
||||
Přihlašovací údaje
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.username %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Osobní údaje
|
||||
</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 %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.telefon %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.datum_narozeni %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Škola
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola %}
|
||||
<tr><td colspan="2" ><button id="id_skola_text_button" type="button">Škola není v seznamu</button></td><td>(Prosíme, zkuste ji najít, téměř jistě ji v seznamu máme. Školy se dobře hledají podle příjmení lidí v jejich názvu, podle ulice, případně název ulice <i>mezera</i> město, atd. Nezadávejte slova, která se často zkracují – gymnázium, střední odborná škola, křestní jména…)</td></tr>
|
||||
<tr><td id="id_li_skola_vypln" colspan="2">Vyplň prosím celý název a adresu školy.</td></tr>
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola_nazev id="id_li_skola_nazev" %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.skola_adresa id="id_li_skola_adresa" %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.rok_maturity %}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>
|
||||
Pošta
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat_cislo_emailem %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat_cislo_papirove %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.spam %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.zasilat %}
|
||||
</table>
|
||||
<hr>
|
||||
<h4>
|
||||
Bydliště (povinné při volbě „domů“)
|
||||
</h4>
|
||||
<table class="form">
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.ulice %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.mesto %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.psc %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.stat %}
|
||||
{% include "personalni/udaje/prihlaska_field.html" with field=form.stat_text id="id_li_stat_text"%}
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<script>
|
||||
$("#id_stat").on("change",addrCountryChanged);
|
||||
$("#id_skola_text_button").on("click",schoolNotInList);
|
||||
</script>
|
|
@ -165,6 +165,7 @@ def resitelEditView(request):
|
|||
resitel_edit.rok_maturity = fcd['rok_maturity']
|
||||
resitel_edit.zasilat = fcd['zasilat']
|
||||
resitel_edit.zasilat_cislo_emailem = fcd['zasilat_cislo_emailem']
|
||||
resitel_edit.zasilat_cislo_papirove = fcd['zasilat_cislo_papirove']
|
||||
if fcd.get('skola'):
|
||||
resitel_edit.skola = fcd['skola']
|
||||
else:
|
||||
|
@ -267,7 +268,8 @@ def prihlaskaView(request):
|
|||
prezdivka_resitele=fcd['prezdivka_resitele'] if fcd['prezdivka_resitele'] != "" else None,
|
||||
rok_maturity = fcd['rok_maturity'],
|
||||
zasilat = fcd['zasilat'],
|
||||
zasilat_cislo_emailem = fcd['zasilat_cislo_emailem']
|
||||
zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'],
|
||||
zasilat_cislo_papirove = fcd['zasilat_cislo_papirove'],
|
||||
)
|
||||
|
||||
if fcd.get('skola'):
|
||||
|
@ -284,7 +286,7 @@ def prihlaskaView(request):
|
|||
except m.Resitel.DoesNotExist:
|
||||
# Stejný trik:
|
||||
orig_resitel = r
|
||||
resitel_attrs = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem']
|
||||
resitel_attrs = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', 'zasilat_cislo_papirove']
|
||||
for attr in resitel_attrs:
|
||||
new = getattr(r, attr)
|
||||
old = getattr(orig_resitel, attr)
|
||||
|
@ -345,6 +347,7 @@ def dataResiteluCsvResponse(queryset, columns=None, with_header=True):
|
|||
'rok_maturity',
|
||||
'zasilat',
|
||||
'zasilat_cislo_emailem',
|
||||
'zasilat_cislo_papirove',
|
||||
'osoba__datum_registrace',
|
||||
'osoba__datum_souhlasu_udaje',
|
||||
'osoba__datum_souhlasu_zasilani',
|
||||
|
|
42
seminar/migrations/0112_resitel_zasilat_cislo_papirove.py
Normal file
42
seminar/migrations/0112_resitel_zasilat_cislo_papirove.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
# Generated by Django 2.2.28 on 2023-03-13 22:02
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
ZASILAT_DOMU = 'domu'
|
||||
ZASILAT_DO_SKOLY = 'do_skoly'
|
||||
ZASILAT_NIKAM = 'nikam'
|
||||
|
||||
|
||||
def default_zasilat_papirove(apps, schema_editor):
|
||||
Resitel = apps.get_model('seminar', 'Resitel')
|
||||
|
||||
for resitel in Resitel.objects.all():
|
||||
resitel.zasilat_cislo_papirove = resitel.zasilat != ZASILAT_NIKAM
|
||||
if resitel.zasilat == ZASILAT_NIKAM:
|
||||
resitel.zasilat = ZASILAT_DOMU if resitel.osoba.ulice else ZASILAT_DO_SKOLY
|
||||
resitel.save()
|
||||
|
||||
|
||||
def vrat_nikam(apps, schema_editor):
|
||||
Resitel = apps.get_model('seminar', 'Resitel')
|
||||
|
||||
for resitel in Resitel.objects.all():
|
||||
if not resitel.zasilat_cislo_papirove:
|
||||
resitel.zasilat = ZASILAT_NIKAM
|
||||
resitel.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('seminar', '0111_nikam2nezasilat_papirove'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='resitel',
|
||||
name='zasilat_cislo_papirove',
|
||||
field=models.BooleanField(default=True, help_text='True pokud chce řešitel dostávat číslo papírově', verbose_name='zasílat číslo papírově'),
|
||||
),
|
||||
migrations.RunPython(default_zasilat_papirove, vrat_nikam),
|
||||
]
|
|
@ -238,6 +238,8 @@ class Resitel(SeminarModelBase):
|
|||
|
||||
zasilat_cislo_emailem = models.BooleanField('zasílat číslo emailem', help_text='True pokud chce řešitel dostávat číslo emailem', default=False)
|
||||
|
||||
zasilat_cislo_papirove = models.BooleanField('zasílat číslo papírově', help_text='True pokud chce řešitel dostávat číslo papírově', default=True)
|
||||
|
||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||
help_text='Neveřejná poznámka k řešiteli (plain text)')
|
||||
|
||||
|
|
|
@ -291,9 +291,9 @@ class Cislo(SeminarModelBase):
|
|||
|
||||
paticka = "---\nK odběru těchto e-mailů jste se přihlásili na stránkách https://mam.matfyz.cz. Z odběru se lze odhlásit na https://mam.matfyz.cz/resitel/osobni-udaje/"
|
||||
|
||||
posli(text_mailu + paticka, resitele_vsichni.filter(zasilat=pm.Resitel.ZASILAT_NIKAM))
|
||||
posli(text_mailu + paticka, resitele_vsichni.filter(zasilat=pm.Resitel.zasilat_cislo_papirove))
|
||||
posli(text_mailu + 'P. S. Brzy budeme též rozesílat papírovou verzi čísla. Připomínáme, že pokud papírovou verzi čísla nevyužijete, můžete v https://mam.mff.cuni.cz/resitel/osobni-udaje/ zaškrtnout, abychom vám ji neposílali. Čísla vždy můžete nalézt v našem archivu a dál vám budou chodit e-mailem. Děkujeme.\n' + paticka,
|
||||
resitele_vsichni.exclude(zasilat=pm.Resitel.ZASILAT_NIKAM))
|
||||
resitele_vsichni.exclude(zasilat=pm.Resitel.zasilat_cislo_papirove))
|
||||
|
||||
paticka_prijemce = "---\nPokud tyto e-maily nechcete nadále dostávat, prosíme, ozvěte se nám na mam@matfyz.cz."
|
||||
posli(text_mailu + paticka_prijemce, pm.Prijemce.objects.filter(zasilat_cislo_emailem=True))
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
{% with o=r.osoba %}
|
||||
{% with s=r.skola %}
|
||||
{% spaceless %}
|
||||
{% if r.zasilat_cislo_papirove %}
|
||||
{% if r.zasilat == "do_skoly" %}
|
||||
{% if o.stat == "CZ" %}
|
||||
\obalka{{o.jmeno|sloz}}{{o.prijmeni|sloz}}{{s.nazev|sloz}}{{s.ulice|sloz}}{{s.psc|sloz}}{{s.mesto|sloz}}{{''|sloz}}
|
||||
|
@ -115,6 +116,7 @@
|
|||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endspaceless %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
|
|
|
@ -265,7 +265,7 @@ def merge_resitele(cilovy, zdrojovy):
|
|||
# Postup:
|
||||
# Sjednotit / upravit informace cílového řešitele
|
||||
print('Upravuji data modelu')
|
||||
fieldy_shoda = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem']
|
||||
fieldy_shoda = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', 'zasilat_cislo_papirove']
|
||||
|
||||
for f in fieldy_shoda:
|
||||
zf = getattr(zdrojovy, f)
|
||||
|
|
Loading…
Reference in a new issue