From a0edc1e0a1b2808a86d1878a795816edb47e865a Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Tue, 11 May 2021 20:22:49 +0200 Subject: [PATCH] =?UTF-8?q?Kostra=20formul=C3=A1=C5=99e=20na=20dodate?= =?UTF-8?q?=C4=8Dn=C3=A9=20vyroben=C3=AD=20u=C5=BEivatele?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/views/registrace.py | 67 +++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 seminar/views/registrace.py diff --git a/seminar/views/registrace.py b/seminar/views/registrace.py new file mode 100644 index 00000000..26e9056e --- /dev/null +++ b/seminar/views/registrace.py @@ -0,0 +1,67 @@ +""" +Registrace uživatelů k existujícím osobám + +V tomto souboru bude asi všechno, co je relevantní (kromě template), protože to +je dostatečně malá a jednorázová věc. + +Proto všechno kromě view začíná podtržítkem, aby se to nenatáhlo jako součást +seminar.views +""" + +#TODO: Logování (tohle logovat chce skoro určitě) + +from django.forms import Form +from django.views.generic.edit import FormView +import hmac + +from django.conf.settings import AUTH_USER_MODEL, SECRET_KEY +from seminar.models import Osoba + +class DodatecnaRegistraceUzivateleView(FormView): + form = _RegistraceUzivateleForm + template_name = ... + success_url_pattern = ... + + def form_valid(self, form): + pass + +class KontrolaUdajuASouhlasyView(FormView): + ... + +class _RegistraceUzivateleForm(Form): + #model = AUTH_USER_MODEL + # Zkopírováno z přihlášky :-) + username = forms.CharField(label='Přihlašovací jméno', + max_length=256, + required=True, + help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři') + password = forms.CharField( + label='Heslo', + max_length=256, + required=True, + widget=forms.PasswordInput()) + password_check = forms.CharField( + label='Ověření hesla', + max_length=256, + required=True, + widget=forms.PasswordInput()) + + # Dodatečné fieldy + token… + token = ... + verifikace_TODO = ... # TODO: Co verifikovat + + # TODO: clean_username, verifikace … + + +# Pozor, tokeny existují dva: jeden do URL do mailu, druhý do hidden položky ve formuláři. + +def _gen_token(usecase: str, data: dict[str, object]): + ... + +def _verify_token(usecase: str, data: dict[str, object]): + ... + +def _invite(osoba: Osoba): + """ + Pošle dané osobě e-mail s odkazem na registraci. + """