From 1831013d4d809fbac92fd3e778b9d35a7d3b8be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kate=C5=99ina=20=C4=8C?= Date: Tue, 1 Dec 2020 20:39:24 +0100 Subject: [PATCH 1/2] =?UTF-8?q?input=20type=20dat=20a=20telefon=C5=AF=20ve?= =?UTF-8?q?=20formul=C3=A1=C5=99=C3=ADch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/forms.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/seminar/forms.py b/seminar/forms.py index be722e16..e45c50f6 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -10,6 +10,13 @@ import seminar.models as m from datetime import date import logging +class DateInput(forms.DateInput): + input_type = 'date' + +class TelInput(forms.TextInput): + 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 +49,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) @@ -135,8 +142,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) @@ -234,7 +241,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) From 5c006a08be3cfcf8d8dbaa4c9308475605e2ff56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kate=C5=99ina=20=C4=8C?= Date: Tue, 1 Dec 2020 21:20:54 +0100 Subject: [PATCH 2/2] =?UTF-8?q?chci=20dost=C3=A1vat=20=C4=8D=C3=ADslo=20ma?= =?UTF-8?q?ilem=20+=20koment=C3=A1=C5=99e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/forms.py | 14 +++++++++++++- seminar/models.py | 2 ++ seminar/templates/seminar/profil/edit.html | 12 ++++++++++++ seminar/templates/seminar/profil/prihlaska.html | 11 +++++++++++ seminar/views/views_all.py | 10 +++++++++- 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/seminar/forms.py b/seminar/forms.py index e45c50f6..a7e0e404 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -10,10 +10,18 @@ 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): - input_type = 'date' + # 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,}$" @@ -81,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) @@ -174,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') 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()