diff --git a/seminar/forms.py b/seminar/forms.py index be722e16..a7e0e404 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -10,6 +10,21 @@ import seminar.models as m from datetime import date import logging +# 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 + +class DateInput(forms.DateInput): + # aby se datum dalo vybírat z kalendáře + input_type = 'date' + +class TelInput(forms.TextInput): + # tohle je možná k niřemu, ale alepsoň to mění input type a nic to nekazí + input_type = 'tel' + input_pattern="^[+]?[()/0-9. -]{9,}$" + class LoginForm(forms.Form): username = forms.CharField(label='Přihlašovací jméno', max_length=256, @@ -42,8 +57,8 @@ class PrihlaskaForm(forms.Form): 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(label='Telefon',max_length=256, required=False) - datum_narozeni = forms.DateField(label='Datum narození', required=False) + 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) @@ -74,6 +89,8 @@ class PrihlaskaForm(forms.Form): 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) + zasilat_cislo_emailem = forms.BooleanField(label='Chci dostávat emailem upozornění na vydání nového čísla', 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) @@ -135,8 +152,8 @@ class ProfileEditForm(forms.Form): 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(label='Telefon',max_length=256, required=False) - datum_narozeni = forms.DateField(label='Datum narození', required=False) + 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) @@ -167,6 +184,8 @@ class ProfileEditForm(forms.Form): 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) + zasilat_cislo_emailem = forms.BooleanField(label='Chci dostávat email s upozorněním na vydání nového čísla', 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') @@ -234,7 +253,7 @@ class VlozReseniForm(forms.Form): #resitele = models.ManyToManyField(Resitel, verbose_name='autoři řešení', # help_text='Seznam autorů řešení', through='Reseni_Resitele') - cas_doruceni = forms.DateField(label="Čas doručení") + cas_doruceni = forms.DateField(widget=DateInput(),label="Čas doručení") #cas_doruceni = models.DateTimeField('čas_doručení', default=timezone.now, blank=True) diff --git a/seminar/models.py b/seminar/models.py index 895f2cbb..6324da25 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -260,8 +260,10 @@ class Resitel(SeminarModelBase): (ZASILAT_DO_SKOLY, 'Do školy'), (ZASILAT_NIKAM, 'Nikam'), ] + zasilat = models.CharField('kam zasílat', max_length=32, choices=ZASILAT_CHOICES, blank=False, default=ZASILAT_DOMU) + zasilat_cislo_emailem = models.BooleanField('zasílat číslo emailem', help_text='True pokud chce řešitel dostávat číslo emailem', default=False) poznamka = models.TextField('neveřejná poznámka', blank=True, help_text='Neveřejná poznámka k řešiteli (plain text)') diff --git a/seminar/templates/seminar/profil/edit.html b/seminar/templates/seminar/profil/edit.html index 827e26f1..803a64af 100644 --- a/seminar/templates/seminar/profil/edit.html +++ b/seminar/templates/seminar/profil/edit.html @@ -6,6 +6,17 @@ {{form.media}} {% endblock %} + + + {% block content %}

{% block nadpis1a %}{% block nadpis1b %} @@ -73,6 +84,7 @@

{% include "seminar/profil/prihlaska_field.html" with field=form.zasilat %} + {% include "seminar/profil/prihlaska_field.html" with field=form.zasilat_cislo_emailem %}

diff --git a/seminar/templates/seminar/profil/prihlaska.html b/seminar/templates/seminar/profil/prihlaska.html index 125a5ffb..22bd3385 100644 --- a/seminar/templates/seminar/profil/prihlaska.html +++ b/seminar/templates/seminar/profil/prihlaska.html @@ -7,6 +7,16 @@ {% endblock %} + + {% block content %}

{% block nadpis1a %}{% block nadpis1b %} @@ -77,6 +87,7 @@

{% include "seminar/profil/prihlaska_field.html" with field=form.zasilat %} + {% include "seminar/profil/prihlaska_field.html" with field=form.zasilat_cislo_emailem %}

diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py index a550c40a..262905e2 100644 --- a/seminar/views/views_all.py +++ b/seminar/views/views_all.py @@ -1332,6 +1332,12 @@ class ResitelView(LoginRequiredMixin,generic.DetailView): ### Formulare +# 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 + class AddSolutionView(LoginRequiredMixin, FormView): template_name = 'seminar/org/vloz_reseni.html' form_class = f.VlozReseniForm @@ -1448,6 +1454,7 @@ def resitelEditView(request): resitel_edit.skola = fcd['skola'] resitel_edit.rok_maturity = fcd['rok_maturity'] resitel_edit.zasilat = fcd['zasilat'] + resitel_edit.zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'] if fcd.get('skola'): resitel_edit.skola = fcd['skola'] else: @@ -1511,7 +1518,8 @@ def prihlaskaView(request): r = Resitel( rok_maturity = fcd['rok_maturity'], - zasilat = fcd['zasilat'] + zasilat = fcd['zasilat'], + zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'] ) r.save()