From c57b99c015e2c8a54a1cd28cabce4ec3c1ee7889 Mon Sep 17 00:00:00 2001 From: "Tomas \"Jethro\" Pokorny" Date: Sat, 31 Aug 2019 19:36:12 +0200 Subject: [PATCH] Vytvareni osoby, usera a resitele pri registraci. --- seminar/forms.py | 25 +++++++++-------- seminar/views.py | 73 ++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 79 insertions(+), 19 deletions(-) diff --git a/seminar/forms.py b/seminar/forms.py index 2bc3ecee..d2a710cb 100644 --- a/seminar/forms.py +++ b/seminar/forms.py @@ -4,7 +4,9 @@ from seminar.models import Resitel 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í', + username = forms.CharField(label='Přihlašovací jméno', max_length=256, required=True) + # TODO heslo? + 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) @@ -19,23 +21,24 @@ class PrihlaskaForm(forms.Form): required=False) - skola_stat_select = forms.ChoiceField(label='Stát', - choices = (('cz', 'Česká Republika'), - ('sk', 'Slovenská Republika'), - ('other', 'Jiné')), - required=True) - kraj_select = forms.ChoiceField(label='Kraj',required=True) - skola_select = forms.ChoiceField(label='Škola',required=True) +# skola_stat_select = forms.ChoiceField(label='Stát', +# choices = (('cz', 'Česká Republika'), +# ('sk', 'Slovenská Republika'), +# ('other', 'Jiné')), +# required=True) +# kraj_select = forms.ChoiceField(label='Kraj',required=True) +# skola_select = forms.ChoiceField(label='Škola',required=True) #kraj #škola - trida = forms.CharField(label='Třída',max_length=10, required=True) +# trida = forms.CharField(label='Třída',max_length=10, required=True) #název školy #adresa školy - skola_nazev = forms.CharField(label='Název školy', max_length=256, required=False) - skola_adresa = forms.CharField(label='Adresa školy', max_length=256, required=False) +# skola_nazev = forms.CharField(label='Název školy', max_length=256, required=False) +# skola_adresa = forms.CharField(label='Adresa školy', max_length=256, required=False) 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) + spam = forms.BooleanField(label='Souhlasím se zasíláním materiálů od MFF UK', required=False) diff --git a/seminar/views.py b/seminar/views.py index f0f6049d..d64ce300 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -9,9 +9,9 @@ from django.utils.translation import ugettext as _ from django.http import Http404,HttpResponseBadRequest,HttpResponseRedirect from django.db.models import Q from django.views.decorators.csrf import ensure_csrf_cookie -from django.contrib.auth import authenticate, login +from django.contrib.auth import authenticate, login, get_user_model -from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek +from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek, Osoba #from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva from . import utils from .unicodecsv import UnicodeWriter @@ -951,15 +951,72 @@ def texDownloadView(request, rocnik, cislo): ## Formulare 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 = PrihlaskaForm(request.POST) - # check whether it's valid: + # TODO vyresit, co se bude v jakych situacich zobrazovat if form.is_valid(): - # process the data in form.cleaned_data as required - # ... - # redirect to a new URL: + print("Form valid") + try: + # mame jiz email v databazi? + o = Osoba.objects.get(email=form.cleaned_data['email']) + print("Email existuje: {}".format(form.cleaned_data)) + # TODO seřvat a nepustit dál + return HttpResponseRedirect('/thanks/') + except ObjectDoesNotExist: + pass + + User = get_user_model() + try: + u = User.objects.get(username=form.cleaned_data['username']) + print("Username existuje: {}".format(form.cleaned_data)) + # TODO seřvat a nepustit dál + return HttpResponseRedirect('/thanks/') + + except ObjectDoesNotExist: + pass + + u = User(username=form.cleaned_data['username']) + u.save() + + o = Osoba( + jmeno = form.cleaned_data['jmeno'], + prijmeni = form.cleaned_data['prijmeni'], + pohlavi_muz = form.cleaned_data['pohlavi_muz'], + email = form.cleaned_data['email'], + telefon = form.cleaned_data.get('telefon',''), + datum_narozeni = form.cleaned_data.get('datum_narozeni',None), + datum_souhlasu_udaje = date.today(), + datum_registrace = date.today(), + ulice = form.cleaned_data.get('ulice',''), + mesto = form.cleaned_data.get('mesto',''), + psc = form.cleaned_data.get('psc',''), + poznamka = str(form.cleaned_data) + ) + if form.cleaned_data.get('spam',False): + o.datum_souhlasu_zasilani = date.today() + if form.cleaned_data.get('stat','') in ('CZ','SK'): + o.stat = form.cleaned_data['stat'] + else: + pass + #TODO jak budeme resit jine staty? + + o.save() + o.user = u + o.save() + + r = Resitel( + rok_maturity = form.cleaned_data['rok_maturity'], + zasilat = form.cleaned_data['zasilat'] + ) + + r.save() + r.osoba = o + #TODO doplnit skolu + r.save() + + + # TODO logovat jednotlive validni formulare do souboru + print(form.cleaned_data) return HttpResponseRedirect('/thanks/') # if a GET (or any other method) we'll create a blank form