Merge branch 'develop' into test
This commit is contained in:
commit
d7ef2e8044
7 changed files with 58 additions and 8 deletions
|
@ -70,6 +70,8 @@ class PrihlaskaForm(PasswordResetForm):
|
|||
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 e-mailem upozornění na vydání nového čísla', required=False)
|
||||
|
||||
jak_se_dozvedeli = forms.CharField(widget=forms.Textarea({"rows": 3, "cols": 20}), label='Jak ses o M&M dozvěděl(a)?', required=False)
|
||||
|
||||
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)
|
||||
|
||||
|
|
|
@ -112,6 +112,15 @@
|
|||
|
||||
<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">
|
||||
</form>
|
||||
<script>
|
||||
|
|
|
@ -176,7 +176,7 @@ def resitelEditView(request):
|
|||
return render(request, 'personalni/udaje/edit.html', {'form': form})
|
||||
|
||||
|
||||
@sensitive_post_parameters('jmeno', 'prijmeni', 'email', 'telefon', 'datum_narozeni', 'ulice', 'mesto', 'psc', 'skola')
|
||||
@sensitive_post_parameters('jmeno', 'prijmeni', 'email', 'telefon', 'datum_narozeni', 'ulice', 'mesto', 'psc', 'skola', 'jak_se_dozvedeli')
|
||||
def prihlaskaView(request):
|
||||
generic_logger = logging.getLogger('seminar.prihlaska')
|
||||
err_logger = logging.getLogger('seminar.prihlaska.problem')
|
||||
|
@ -212,6 +212,7 @@ def prihlaskaView(request):
|
|||
ulice = fcd.get('ulice',''),
|
||||
mesto = fcd.get('mesto',''),
|
||||
psc = fcd.get('psc',''),
|
||||
jak_se_dozvedeli = fcd.get('jak_se_dozvedeli',''),
|
||||
poznamka = str(fcd)
|
||||
)
|
||||
|
||||
|
@ -336,6 +337,7 @@ def dataResiteluCsvResponse(queryset, columns=None, with_header=True):
|
|||
'osoba__psc',
|
||||
'osoba__stat',
|
||||
'skola', #FIXME: dává jen ID
|
||||
'jak_se_dozvedeli',
|
||||
'poznamka',
|
||||
'osoba__poznamka',
|
||||
'rok_maturity',
|
||||
|
|
18
seminar/migrations/0102_osoba_jak_se_dozvedeli.py
Normal file
18
seminar/migrations/0102_osoba_jak_se_dozvedeli.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.15 on 2022-08-15 19:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('seminar', '0101_auto_20211213_2306'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='osoba',
|
||||
name='jak_se_dozvedeli',
|
||||
field=models.TextField(blank=True, verbose_name='Jak se dozvěděli'),
|
||||
),
|
||||
]
|
|
@ -70,6 +70,8 @@ class Osoba(SeminarModelBase):
|
|||
stat = CountryField('stát', default='CZ',
|
||||
help_text='ISO 3166-1 kód země velkými písmeny (CZ, SK, ...)')
|
||||
|
||||
jak_se_dozvedeli = models.TextField('Jak se dozvěděli', blank=True)
|
||||
|
||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||
help_text='Neveřejná poznámka k osobě (plain text)')
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from http import HTTPStatus
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import transaction
|
||||
from django.forms import Form, CharField, IntegerField
|
||||
from django.views.generic import FormView
|
||||
|
@ -21,28 +22,44 @@ def problemView(request, pk):
|
|||
|
||||
|
||||
# FIXME Tohle možná patří do forms.py
|
||||
# FIXME Tohle není odladěné, selhává to nekontrolovaně
|
||||
# a obecně je to fujky nekomentovaný kód
|
||||
# FIXME Chyby se ve formuláři zobrazují nějak divně
|
||||
class HromadnePridaniForm(Form):
|
||||
""" Formulář pro hromadné přidání úložek a problémů """
|
||||
|
||||
tema = CharField(label="Název tématu:")
|
||||
dil = IntegerField(label="Díl:", min_value=1)
|
||||
body = CharField(label="Počty bodů (0 pro problém) oddělené čárkami:")
|
||||
|
||||
def clean_tema(self):
|
||||
""" Kontrola, že `tema` je název právě jednoho tématu """
|
||||
if m.Tema.objects.filter(
|
||||
nazev__exact=self.cleaned_data['tema'],
|
||||
nadproblem=None).count() != 1:
|
||||
raise ValidationError("Špatný nebo nepřesně zadaný název témátka")
|
||||
|
||||
def clean_body(self):
|
||||
""" Kontrola, že `body` je seznam čísel """
|
||||
try:
|
||||
list(map(int, self.cleaned_data["body"].split(",")))
|
||||
except ValueError:
|
||||
raise ValidationError("Špatný formát bodů")
|
||||
|
||||
|
||||
# FIXME Tohle není odladěné, selhává to nekontrolovaně
|
||||
# a obecně je to fujky nekomentovaný kód
|
||||
class HromadnePridaniView(FormView):
|
||||
""" View pro hromadné přidání úložek a problémů """
|
||||
form_class = HromadnePridaniForm
|
||||
template_name = "generic_form.html"
|
||||
success_url = 'hromadne_pridani'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
""" Přidání nadpisu stránky a url, kam se má poslat formulář. """
|
||||
context = super().get_context_data()
|
||||
context["nadpis"] = "Hromadné přidání úloh"
|
||||
context["form_url"] = "hromadne_pridani"
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
""" Upravený Pavlův skript na hromadné přidání úložek a problémů. """
|
||||
cd = form.cleaned_data
|
||||
tema = cd["tema"]
|
||||
dil = cd["dil"]
|
||||
|
@ -52,10 +69,10 @@ class HromadnePridaniView(FormView):
|
|||
with transaction.atomic():
|
||||
pfx = f"{t.nazev}, díl {dil}, "
|
||||
|
||||
for k, b in enumerate(body):
|
||||
for k, b in enumerate(body, 1):
|
||||
u = m.Uloha.objects.create(
|
||||
nadproblem=t,
|
||||
nazev=pfx + f"{'úloha' if b > 0 else 'problém'} {k + 1}",
|
||||
nazev=pfx + f"{'úloha' if b > 0 else 'problém'} {k}",
|
||||
autor=t.autor,
|
||||
garant=t.garant,
|
||||
max_body=b,
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</h1>
|
||||
{# Obšlehnuto z Admina :-) #}
|
||||
{% if user.is_authenticated %}
|
||||
<p>K této stránce nejspíš nemáte přístup. Můžete se zkusit přihlásit jako uživatel, který přístup má.</p>
|
||||
<p>Již jsi přihlášený!</p>
|
||||
{% endif %}
|
||||
<form action="{% url 'login' %}" method="post">
|
||||
{% csrf_token %}
|
||||
|
|
Loading…
Reference in a new issue