Browse Source

Vytvareni osoby, usera a resitele pri registraci.

export_seznamu_prednasek
parent
commit
c57b99c015
  1. 25
      seminar/forms.py
  2. 73
      seminar/views.py

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

73
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

Loading…
Cancel
Save