2 Commits

Author SHA1 Message Date
394512f6eb update form 2025-05-27 10:56:48 +02:00
5b92bc8465 Ask for age instead of birth date
All checks were successful
release-tag / release-image (push) Successful in 36s
2025-05-26 20:48:47 +02:00
3 changed files with 46 additions and 86 deletions

View File

@@ -1,8 +1,6 @@
from fastapi import FastAPI, Request
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from fastapi.templating import Jinja2Templates
from app.api.main import api_router
@@ -23,40 +21,47 @@ app = FastAPI(
templates = Jinja2Templates(directory="app/templates")
@api_router.get("/")
def index(request: Request):
reg_open, not_before, not_after = is_registration_open()
print(reg_open, not_before, not_after)
if reg_open:
return templates.TemplateResponse(
request=request, name="registration-open.html", context={}
)
request=request, name="registration-open.html", context={}
)
elif not_before:
return templates.TemplateResponse(
request=request, name="registration-closed.html", context={
request=request,
name="registration-closed.html",
context={
"not_before": settings.NOT_BEFORE,
"not_after": settings.NOT_AFTER,
}
},
)
elif not_after:
return templates.TemplateResponse(
request=request, name="registration-not-open.html", context={
request=request,
name="registration-not-open.html",
context={
"not_before": settings.NOT_BEFORE,
"not_after": settings.NOT_AFTER,
}
},
)
@api_router.get("/success.html")
def success(request: Request):
return templates.TemplateResponse(
request=request, name="registration-success.html", context={
"not_before": settings.NOT_BEFORE,
"not_after": settings.NOT_AFTER,
}
)
request=request,
name="registration-success.html",
context={
"not_before": settings.NOT_BEFORE,
"not_after": settings.NOT_AFTER,
},
)
app.include_router(api_router, prefix=settings.API_V1_STR)
app.mount("/static", StaticFiles(directory="app/static"), name="static")

View File

@@ -4,13 +4,9 @@ from pydantic import EmailStr
from sqlmodel import Field, SQLModel
from enum import Enum
from datetime import date, datetime
from sqlalchemy.sql import func
from datetime import datetime
from app.core.config import settings
from datetime import datetime
class VoiceEnum(str, Enum):
@@ -33,7 +29,7 @@ class RegistrationBase(SQLModel):
email: EmailStr = Field(max_length=255)
first_name: str
last_name: str
birthday: date
age: int
voice: VoiceEnum
duration: PeriodEnum
number_of_attempts: int
@@ -45,5 +41,4 @@ class RegistrationCreate(RegistrationBase):
class Registration(RegistrationBase, table=True):
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
timestamp: datetime = Field(default_factory=lambda : datetime.now(tz=settings.TZ))
timestamp: datetime = Field(default_factory=lambda: datetime.now(tz=settings.TZ))

View File

@@ -8,71 +8,31 @@
<form method="POST" action="/registration/register_form">
<label for="email">E-Mail-Adresse:</label> <input type="email" id="email" name="email" />
<label for="first_name">Dein Vorname:</label> <input type="text" id="first_name" name="first_name" />
<label for="last_name">Dein Nachname:</label> <input type="text" id="last_name" name="last_name" />
<label for="birthday">Dein Geburtstag:</label> <input type="date" id="birthday" name="birthday" />
<label for="email">Deine E-Mail-Adresse:</label> <input type="email" id="email" name="email" required /><br />
<label for="first_name">Dein Vorname:</label> <input type="text" id="first_name" name="first_name" required /><br />
<label for="last_name">Dein Nachname:</label> <input type="text" id="last_name" name="last_name" required /><br />
<label for="age">Dein Alter:</label> <input type="number" id="age" name="age" min="1" max="199" step="1" required /><br />
<fieldset>
<legend>Welche Stimme singst du?</legend>
<label for="voice">Wie lange bleibst du in Ulm?</label>
<select name="voice" id="voice">
<option value="Bass">Bass</option>
<option value="Tenor">Tenor</option>
<option value="Alt">Alt</option>
<option value="Sopran">Sopran</option>
<option value="Alt oder Sopran">Alt oder Sopran</option>
<option value="Bass oder Tenor">Bass oder Tenor</option>
</select><br />
<div>
<input type="radio" id="base" name="voice" value="Bass" />
<label for="base">Bass</label>
</div>
<label for="duration">Wie lange bleibst du in Ulm?</label>
<select name="duration" id="duration">
<option value="1/2 Jahr">1/2 Jahr</option>
<option value="1/2 - 1 Jahr">1/2 - 1 Jahr</option>
<option value="1 - 2 Jahre">1 - 2 Jahre</option>
<option value="mehr als zwei Jahre">länger als 2 Jahre</option>
</select> <br />
<div>
<input type="radio" id="tenor" name="voice" value="Tenor" />
<label for="tenor">Tenor</label>
</div>
<label for="number_of_attempts">Wie oft hast du schon versucht, dich anzumelden?</label><input type="number" id="number_of_attempts" name="number_of_attempts" min="0" max="10" value="0" required /><br />
<div>
<input type="radio" id="alto" name="voice" value="Alt" />
<label for="alto">Alt</label>
</div>
<div>
<input type="radio" id="soprano" name="voice" value="Sopran" />
<label for="soprano">Sopran</label>
</div>
<div>
<input type="radio" id="women" name="voice" value="Alt oder Sopran" />
<label for="women">Sopran oder Alt</label>
</div>
<div>
<input type="radio" id="men" name="voice" value="Bass oder Tenor" />
<label for="men">Bass oder Tenor</label>
</div>
</fieldset>
<fieldset>
<legend>Wie lange bleibst du in Ulm?</legend>
<div>
<input type="radio" id="halfyear" name="duration" value="1/2 Jahr" />
<label for="halfyear">1/2 Jahr</label>
</div>
<div>
<input type="radio" id="halfyear" name="duration" value="1/2 - 1 Jahr" />
<label for="halfyear">1/2 - 1 Jahr</label>
</div>
<div>
<input type="radio" id="twoyears" name="duration" value="1 - 2 Jahre" />
<label for="twoyears">1 - 2 jahre</label>
</div>
<div>
<input type="radio" id="longterm" name="duration" value="mehr als zwei Jahre" />
<label for="longterm">länger als 2 Jahre</label>
</div>
</fieldset>
<label for="number_of_attempts">Wie oft hast du schon versucht, dich anzumelden?</label><input type="number" id="number_of_attempts" name="number_of_attempts" />
<input type="submit" value="Anmelden" />
</form>