3 Commits

Author SHA1 Message Date
83ec86b027 update 2025-05-26 20:43:35 +02:00
726767c950 fix? hopefully ..
All checks were successful
release-tag / release-image (push) Successful in 33s
2025-05-26 11:02:21 +02:00
1a1179a9ee fix broken commit
All checks were successful
release-tag / release-image (push) Successful in 32s
2025-05-26 10:58:36 +02:00
8 changed files with 137 additions and 2 deletions

9
app/core/utils.py Normal file
View File

@@ -0,0 +1,9 @@
from app.core.config import settings
from datetime import datetime
def is_registration_open():
now = datetime.now(tz=settings.TZ)
not_before = now >= settings.NOT_BEFORE
not_after = now <= settings.NOT_AFTER
return not_before and not_after, not_before, not_after

View File

@@ -26,17 +26,25 @@ 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={}
) )
else: 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:
return templates.TemplateResponse(
request=request, name="registration-not-open.html", context={
"not_before": settings.NOT_BEFORE,
"not_after": settings.NOT_AFTER,
}
)
@api_router.get("/success.html") @api_router.get("/success.html")
def success(request: Request): def success(request: Request):

View File

@@ -9,6 +9,9 @@ from datetime import date, datetime
from sqlalchemy.sql import func from sqlalchemy.sql import func
from app.core.config import settings
from datetime import datetime
class VoiceEnum(str, Enum): class VoiceEnum(str, Enum):
base = "Bass" base = "Bass"
@@ -42,4 +45,5 @@ 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=func.now) timestamp: datetime = Field(default_factory=lambda : datetime.now(tz=settings.TZ))

0
app/static/styles.css Normal file
View File

View File

@@ -0,0 +1,11 @@
<html>
<head>
<title>Choriosity Anmeldung</title>
</head>
<body>
Die Anmeldung ist leider bereits geschlossen. Folge uns, um vom nächsten Anmeldezeitraum zu erfahren.
</body>
</html>

View File

@@ -0,0 +1,11 @@
<html>
<head>
<title>Choriosity Anmeldung</title>
</head>
<body>
Die Anmeldung ist noch nicht geöffnet. Sie öffnet {{ not_before.strftime('am %d.%m.%Y um %H:%M Uhr') }} und schließt {{ not_after.strftime('am %d.%m.%Y um %H:%M Uhr') }}.
</body>
</html>

View File

@@ -0,0 +1,81 @@
<html>
<head>
<title>Choriosity Anmeldung</title>
</head>
<body>
<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" />
<fieldset>
<legend>Welche Stimme singst du?</legend>
<div>
<input type="radio" id="base" name="voice" value="Bass" />
<label for="base">Bass</label>
</div>
<div>
<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" />
<input type="submit" value="Anmelden" />
</form>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<html>
<head>
<title>Choriosity Anmeldung</title>
</head>
<body>
Danke für deine Anmeldung
</body>
</html>