Browse Source

Merge remote-tracking branch 'refs/remotes/Gimli/data_migrations' into data_migrations

export_seznamu_prednasek
Pavel "LEdoian" Turinsky 5 years ago
parent
commit
93c1747e9f
  1. 24
      mamweb/static/css/mamweb.css
  2. BIN
      mamweb/static/images/header-bg-archiv-NOC.jpg
  3. BIN
      mamweb/static/images/header-bg-archiv.jpg
  4. BIN
      mamweb/static/images/header-bg-soustredeni-NOC.jpg
  5. BIN
      mamweb/static/images/header-bg-soustredeni.jpg
  6. BIN
      mamweb/static/images/header-bg-uvod-NOC.jpg
  7. BIN
      mamweb/static/images/header-bg-uvod.jpg
  8. BIN
      mamweb/static/images/header-bg-zadani.jpg
  9. 23
      seminar/forms.py
  10. 49
      seminar/templates/seminar/gdpr.html
  11. 29
      seminar/templates/seminar/prihlaska.html
  12. 4
      seminar/testutils.py
  13. 2
      seminar/urls.py
  14. 8
      seminar/views.py

24
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;
}

BIN
mamweb/static/images/header-bg-archiv-NOC.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 55 KiB

BIN
mamweb/static/images/header-bg-archiv.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 85 KiB

BIN
mamweb/static/images/header-bg-soustredeni-NOC.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 111 KiB

BIN
mamweb/static/images/header-bg-soustredeni.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 105 KiB

BIN
mamweb/static/images/header-bg-uvod-NOC.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 71 KiB

BIN
mamweb/static/images/header-bg-uvod.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 134 KiB

BIN
mamweb/static/images/header-bg-zadani.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 51 KiB

23
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)

49
seminar/templates/seminar/gdpr.html

@ -0,0 +1,49 @@
<p>
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.
</p>
<div class="gdpr">
<p class="gdpr">
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í.
</p>
<p class="gdpr">
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.
</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.
</p>
<p class="gdpr">
<i>Souhlas se zpracováním osobních údajů pro potřeby chodu semináře</i>
</p>
<p class="gdpr">
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&amp;M a Matematicko-fyzikální fakulty UK (dále jen M&amp;M a MFF UK).
</p>
<p class="gdpr">
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.).
</p>
<p class="gdpr">
MFF UK tyto údaje zpracovává za účelem evidence řešitelů a účastníků M&amp;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.
</p>
<p class="gdpr">
Údaje nebudou předány třetí osobě ani využívány k jiným účelům, než ke kterým byly poskytnuty.
</p>
<p class="gdpr">
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.
</p>
<p class="gdpr">
Dále máte právo:
<ul>
<li>požádat o informaci, jaké osobní údaje jsou o vás zpracovávány,
<li>požadovat opravu osobních údajů, pokud jsou neplatné nebo zastaralé,
<li>požadovat, aby nebyly vaše osobní údaje zpracovávány do doby, než bude vyřešena oprávněnost výše uvedených požadavků,
<li>požadovat, aby byly vaše osobní údaje předány jinému správci,
<li>podat stížnost u dozorového úřadu.
</p>
<p class="gdpr">
V případě jakéhokoliv dotazu nebo uplatnění svých práv můžete kontaktovat pověřence pro ochranu osobních údajů na e-mailové adrese gdpr@cuni.cz.
</p>
</div>

29
seminar/templates/seminar/prihlaska.html

@ -1,5 +1,30 @@
{% extends "seminar/zadani/base.html" %}
{% load staticfiles %}
{% block content %}
<h1>
{% block nadpis1a %}{% block nadpis1b %}
Přihláška do semináře
{% endblock %}{% endblock %}
</h1>
<form action="/prihlaska/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
{{form.non_field_errors}}
<ul class="form">
{% for field in form %}
<li>
{% if forloop.last %}
{% include "seminar/gdpr.html" %}
{% endif %}
<label class="field-label{% if field.field.required %} field-required{% endif %}" for="{{ field.name }}">{{ field.label }}:</label>
{{ field }}
{% if field.help_text %}<span class="field-helptext">{{ field.help_text|safe }}</span>{% endif %}
{% if field.errors %}<span class="field-error">{{ field.errors }}</span>{% endif %}
</li>
{% endfor %}
</ul>
<input type="submit" value="Odeslat">
</form>
{% endblock %}

4
seminar/testutils.py

@ -283,7 +283,9 @@ def gen_konfery(size, rnd, organizatori, resitele, soustredeni):
logger.info('Generuji konfery (size={})...'.format(size))
konfery = []
for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
# Anet: size je parametr udávající velikost testovacích dat a dá se pomocí ní škálovat,
# kolik dat se nageneruje
konfera = Konfera.objects.create(
nazev=rnd.choice(['Pozorování', 'Zkoumání', 'Modelování', 'Počítání', 'Zkoušení']) + rnd.choice([' vlastností', ' jevů', ' charakteristik']) + rnd.choice([' vektorových prostorů', ' kinetické terorie látek', ' molekulární biologie', ' syntentických stromů']),
anotace=lorem.paragraph(),

2
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

8
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 django.utils import timezone
@ -950,11 +950,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
@ -964,7 +964,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})

Loading…
Cancel
Save