From 33969e26ee2cc68f69243f6a071ca9bf90968bf5 Mon Sep 17 00:00:00 2001 From: "Tomas \"Jethro\" Pokorny" Date: Tue, 13 Aug 2019 23:16:44 +0200 Subject: [PATCH] Prihlasovaci formular, zatim bez zpracovani. --- mamweb/static/css/mamweb.css | 24 ++++++++++++ seminar/forms.py | 23 ++++++++++- seminar/templates/seminar/gdpr.html | 49 ++++++++++++++++++++++++ seminar/templates/seminar/prihlaska.html | 29 +++++++++++++- seminar/urls.py | 2 +- seminar/views.py | 8 ++-- 6 files changed, 126 insertions(+), 9 deletions(-) create mode 100644 seminar/templates/seminar/gdpr.html diff --git a/mamweb/static/css/mamweb.css b/mamweb/static/css/mamweb.css index 6e5b9488..b48357e8 100644 --- a/mamweb/static/css/mamweb.css +++ b/mamweb/static/css/mamweb.css @@ -698,3 +698,27 @@ div.nahledy_cisel { div.nahledy_cisel div, div.nahledy_cisel img { position: absolute; } +ul.form { + list-style-type: none; + padding-left: 0px; +} +label.field-label { + font-weight: normal; +} +label.field-required { + font-weight: bold; +} +.field-error { + font-size: 14px; + color: red; +} +ul.form li{ + margin-bottom: 3px; +} +p.gdpr { + font-size: 6pt; + margin-bottom: .66em; +} +div.gdpr { + font-size: 6pt; +} diff --git a/seminar/forms.py b/seminar/forms.py index 693e36df..a9aa725c 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -1,6 +1,25 @@ from django import forms +from seminar.models import Resitel -class NameForm(forms.Form): - your_name = forms.CharField(label='Your name', max_length=100) +class PrihlaskaForm(forms.Form): + jmeno = forms.CharField(label='Jméno', max_length=256, required=True) + prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True) + pohlavi = 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) + 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) + #TODO skola + rok_maturity = forms.IntegerField(label='Rok maturity', min_value=2019, required=True) + zasilat = forms.ChoiceField(label='Kam zasílat čísla a řešení',choices = Resitel.ZASILAT_CHOICES, required=True) + gdpr = forms.BooleanField(label='Souhlasím se zpracováním osobních údajů', required=True) diff --git a/seminar/templates/seminar/gdpr.html b/seminar/templates/seminar/gdpr.html new file mode 100644 index 00000000..74e253f5 --- /dev/null +++ b/seminar/templates/seminar/gdpr.html @@ -0,0 +1,49 @@ +

+TL;DR: +K tomu, abychom mohli zpracovávat Tvá data (uložit si tvou adresu, zobrazit Tvé jméno ve výsledkové listině, opravit Tvá řešení) od Tebe potřebujeme souhlas. +Pokud se zpracováváním souhlasíš dle níže uvedených podmínek, zaškrtni políčko níže. +

+
+

+Získáváme od Tebe údaje vyplněné v přihlášce do semináře (jméno, příjmení, poštovní a e-mailovou adresu, školu, kterou navštěvuješ a rok maturity), případně v přihlášce na soustředění (navíc datum narození, telefonní číslo). Také uchováváme všechna řešení, která nám pošleš, a jejich hodnocení. +

+

+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. +

+

+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. +

+

+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. +

+

+Souhlas se zpracováním osobních údajů pro potřeby chodu semináře +

+

+Tímto uděluji souhlas Univerzitě Karlově, se sídlem Ovocný trh 560/5, 116 36 Praha 1, IČO 00216208 (dále jen UK), která je správcem osobních údajů všech fakult a součástí UK, ke zpracování osobních údajů pro potřeby Korespondenčního semináře M&M a Matematicko-fyzikální fakulty UK (dále jen M&M a MFF UK). +

+

+Tento souhlas uděluji pro všechny výše uvedené osobní údaje, a to po dobu účasti v semináři a 10 let poté, a dále souhlasím s uchováváním potřebných dat pro archivní účely i po této lhůtě (vystavené výsledkové listiny aj.). +

+

+MFF UK tyto údaje zpracovává za účelem evidence řešitelů a účastníků M&M, k zajištění celoročního fungování semináře, analýze účinnosti jednotlivých propagačních akcí MFF UK a zpravodajským účelům. Osobám, které o to projeví zájem v nastavení svého účtu, bude MFF UK také zasílat propagační materiály. +

+

+Údaje nebudou předány třetí osobě ani využívány k jiným účelům, než ke kterým byly poskytnuty. +

+

+Tento souhlas uděluji ze své vlastní a svobodné vůle a beru na vědomí, že jej mohu kdykoliv odvolat zasláním e-mailu na adresu mam@matfyz.cz. Stejně tak může být požadováno vymazání i z archivních údajů M&M, pokud to bude technicky možné. Beru na vědomí, že údaje z tištěných publikací není možné zpětně odstranit. +

+

+Dále máte právo: +

diff --git a/seminar/templates/seminar/prihlaska.html b/seminar/templates/seminar/prihlaska.html index 891bdb6d..9e5fbbc8 100644 --- a/seminar/templates/seminar/prihlaska.html +++ b/seminar/templates/seminar/prihlaska.html @@ -1,5 +1,30 @@ +{% extends "seminar/zadani/base.html" %} +{% load staticfiles %} + +{% block content %} +

+ {% block nadpis1a %}{% block nadpis1b %} + Přihláška do semináře + {% endblock %}{% endblock %} +

{% csrf_token %} - {{ form }} - + {{form.non_field_errors}} + +
+ +{% endblock %} + diff --git a/seminar/urls.py b/seminar/urls.py index 67d0b526..d3b8c645 100644 --- a/seminar/urls.py +++ b/seminar/urls.py @@ -97,7 +97,7 @@ urlpatterns = [ staff_member_required(views.texUploadView), name='seminar_tex_upload' ), - path('prihlaska/',views.get_name), + path('prihlaska/',views.prihlaskaView), path('', views.TitulniStranaView.as_view(), name='titulni_strana'), # Ceka na autocomplete v3 diff --git a/seminar/views.py b/seminar/views.py index 57c85b65..7ddfcf62 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -15,7 +15,7 @@ from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Orga #from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva from . import utils from .unicodecsv import UnicodeWriter -from .forms import NameForm +from .forms import PrihlaskaForm from datetime import timedelta, date, datetime from itertools import groupby @@ -949,11 +949,11 @@ def texDownloadView(request, rocnik, cislo): ## Formulare -def get_name(request): +def prihlaskaView(request): # if this is a POST request we need to process the form data if request.method == 'POST': # create a form instance and populate it with data from the request: - form = NameForm(request.POST) + form = PrihlaskaForm(request.POST) # check whether it's valid: if form.is_valid(): # process the data in form.cleaned_data as required @@ -963,7 +963,7 @@ def get_name(request): # if a GET (or any other method) we'll create a blank form else: - form = NameForm() + form = PrihlaskaForm() return render(request, 'seminar/prihlaska.html', {'form': form})