1 Commits
v0.5 ... master

Author SHA1 Message Date
394512f6eb update form 2025-05-27 10:56:48 +02:00
3 changed files with 44 additions and 80 deletions

View File

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

View File

@@ -41,5 +41,4 @@ class RegistrationCreate(RegistrationBase):
class Registration(RegistrationBase, table=True): class Registration(RegistrationBase, table=True):
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=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,70 +8,30 @@
<form method="POST" action="/registration/register_form"> <form method="POST" action="/registration/register_form">
<label for="email">Deine E-Mail-Adresse:</label> <input type="email" id="email" name="email" /><br /> <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" /><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" /><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" /><br /> <label for="age">Dein Alter:</label> <input type="number" id="age" name="age" min="1" max="199" step="1" required /><br />
<fieldset> <label for="voice">Wie lange bleibst du in Ulm?</label>
<legend>Welche Stimme singst du?</legend> <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> <label for="duration">Wie lange bleibst du in Ulm?</label>
<input type="radio" id="base" name="voice" value="Bass" /> <select name="duration" id="duration">
<label for="base">Bass</label> <option value="1/2 Jahr">1/2 Jahr</option>
</div> <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> <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 />
<input type="radio" id="tenor" name="voice" value="Tenor" />
<label for="tenor">Tenor</label>
</div>
<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" /><br />
<input type="submit" value="Anmelden" /> <input type="submit" value="Anmelden" />