This commit is contained in:
Martin Quarda 2024-06-25 14:22:02 +02:00
parent 973337efff
commit 812de9162b
3 changed files with 21 additions and 12 deletions

View File

@ -1,16 +1,26 @@
from django.db import models
ALKATOR_CHOICES =(
ALKATOR_CHOICES = (
(1, "Alkátor"),
(2, "Alkátor light"),
(3, "Nealkátor"),
)
ALKATOR_CLASSES = (
(1, "Jaro 2024"),
(2, "Podzim 2024"),
)
ALKATOR_CHOICES_DICT = {
alkator_choice[0]: alkator_choice[1]
for alkator_choice in ALKATOR_CHOICES
}
ALKATOR_CLASSES_DICT = {
alkator_class[0]: alkator_class[1]
for alkator_class in ALKATOR_CLASSES
}
class User(models.Model):
first_name = models.CharField(max_length=120)
last_name = models.CharField(max_length=120)
@ -21,6 +31,7 @@ class User(models.Model):
duration = models.DurationField(null=True, blank=True)
starting_number = models.IntegerField(null=True, blank=True)
alkator_category = models.IntegerField(choices=ALKATOR_CHOICES, default=1)
alkator_class = models.IntegerField(choices=ALKATOR_CLASSES, default=1)
def __str__(self):
return f"<User {self.starting_number} {self.first_name} {self.last_name} {self.email} {self.duration} {self.alkator_category}>"
return f"<User {self.starting_number} {self.first_name} {self.last_name} {self.email} {self.duration} {self.alkator_category} {self.alkator_class}>"

View File

@ -12,6 +12,8 @@ from .models import User, ALKATOR_CHOICES_DICT
@csrf_exempt
def register(request):
ALKATOR_CLASS = 2
if date.today() >= date(2024, 5, 4):
return HttpResponse('{"reason":"Too late!"}', status=400, content_type='application/json')
if not request.POST.get('agreement'):
@ -24,7 +26,7 @@ def register(request):
return HttpResponse('{"reason":"Email je povinný!"}', status=400, content_type='application/json')
if not request.POST['address']:
return HttpResponse('{"reason":"Adresa je povinná!"}', status=400, content_type='application/json')
if User.objects.filter(email=request.POST['email']):
if User.objects.filter(email=request.POST['email'], alkator_class=ALKATOR_CLASS):
return HttpResponse('{"reason":"Email je již registrován!"}', status=400, content_type='application/json')
try:
dat = datetime.strptime(request.POST['date_of_birth'], "%Y-%m-%d").date()
@ -41,6 +43,7 @@ def register(request):
email=request.POST['email'],
date_of_birth=dat,
address=request.POST['address'],
alkator_class=ALKATOR_CLASS,
)
user.save()
return HttpResponse('{"success":"Úspěšná registrace."}', content_type='application/json')
@ -49,7 +52,7 @@ def register(request):
def results(request):
results = []
n = 1
for user in User.objects.order_by('duration'):
for user in User.objects.filter(alkator_class=1).order_by('duration'):
if user.alkator_category == 1:
order = f'{n}.'
n += 1

View File

@ -183,14 +183,12 @@ class Main extends Component {
<div class="container">
<img class="logo" src="/public/logo.svg"></img>
</div>
<div class="container text text-center"><h1>Další ročník bude teprve oznámen!</h1></div>
{/*
<div class="container info text-center">
<div class="row">
<h1 class="col val">
<b>KDY?</b>
<br />
4.5.2024
5.10.2024
</h1>
<h1 class="col val">
<b>V KOLIK?</b>
@ -200,7 +198,7 @@ class Main extends Component {
<h1 class="col val">
<b>KDE?</b>
<br />
Sobkovice
Studené
</h1>
<h1 class="col val">
<b>CENA</b>
@ -209,7 +207,6 @@ class Main extends Component {
</h1>
</div>
</div>
*/}
<div class="container">
<div class="row">
<div class="text col-xl-6">
@ -217,7 +214,7 @@ class Main extends Component {
<p>A co že jsme si to zase vymysleli!? </p>
<p>Jedná se o překážkový závod u nás v Orlických horách. Celkem máme připravených kolem 30 překážek a trať měří kolem 4 km. V závodě čeká pěkných pár panáků, kdy počty se pohybují od 3-15 kousků podle toho jak dobře si na překážkách povedeš. Dále máme v závodě překážku zvanou "Čekárna" na které si deset minut odpočneš a dáš si oddychové pivínko na nejkrásnějších místech v okolí Sobkovic. Čekárny v závodě čekají hned čtyři. </p>
<p>Jedná se o překážkový závod u nás v Orlických horách. Celkem máme připravených kolem 30 překážek a trať měří kolem 4 km. V závodě čeká pěkných pár panáků, kdy počty se pohybují od 3-15 kousků podle toho jak dobře si na překážkách povedeš. Dále máme v závodě překážku zvanou "Čekárna" na které si deset minut odpočneš a dáš si oddychové pivínko na nejkrásnějších místech v okolí Studené. Čekárny v závodě čekají hned čtyři. </p>
<p>Pokud v průběhu závodu dostaneš pocit, že je to nad tvé síly, vždy budeš mít tu možnost přestoupit do kategorie Alkátor Race LIGHT, kde sice ztratíš možnost stanout na stupních vítězů, ale budeš moci plně regulovat svou obtížnost závodu.
Takže když budeš mít špatný den, nikdo nebude do ničeho nutit a ty si užiješ atmosféru akce na plné pecky.</p>
@ -263,7 +260,6 @@ class Main extends Component {
<div class="container text text-center">
<h2>Stále nevíš, jestli se zúčastníš? Přečti si náš <button type="button" class="btn btn-warning" onClick={(e) => this.togglefaq()}>FAQ</button></h2>
</div>
{/*
<form id="form" class="container" onSubmit={(e) => this.onSubmit(e)}>
<h1>Registrace</h1>
<div class="mb-3">
@ -292,7 +288,6 @@ class Main extends Component {
</div>
<button type="submit" class="btn btn-primary">Odeslat</button>
</form>
*/}
<div class="container text-center social">
<div class="row">
<a class="col-lg-3" style={{"color": "black"}} href="mailto:info@alkator.cz"><b>info@alkator.cz</b></a>