diff --git a/src/meal_manager/main.py b/src/meal_manager/main.py index 14e0091..2caed64 100644 --- a/src/meal_manager/main.py +++ b/src/meal_manager/main.py @@ -7,7 +7,7 @@ from typing import Annotated import starlette.status as status from fastapi import Depends, FastAPI, HTTPException, Request, Response -from fastapi.responses import RedirectResponse, FileResponse +from fastapi.responses import FileResponse, RedirectResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from sqlalchemy import create_engine, select @@ -132,7 +132,7 @@ async def past_events(request: Request, session: SessionDep): @app.get("/subscribe") -async def subscribe(request: Request, session: SessionDep): +async def subscribe(request: Request, session: SessionDep, user: UserDep): statement = select(Household) households = session.scalars(statement) @@ -146,7 +146,11 @@ async def subscribe(request: Request, session: SessionDep): return templates.TemplateResponse( request=request, name="subscribe.html", - context={"households": households, "subscriptions": subscriptions}, + context={ + "households": households, + "subscriptions": subscriptions, + "user": user, + }, ) @@ -187,7 +191,9 @@ async def add_subscribe(request: Request, session: SessionDep): @app.get("/subscribe/{household_id}/delete") -async def delete_subscription(request: Request, session: SessionDep, household_id: int): +async def delete_subscription( + request: Request, session: SessionDep, household_id: int, user: StrictUserDep +): statement = select(Subscription).where(Subscription.household_id == household_id) sub = session.scalars(statement).one() @@ -345,7 +351,11 @@ async def add_registration(request: Request, event_id: int, session: SessionDep) @app.get("/event/{event_id}/registration/{household_id}/delete") async def delete_registration( - request: Request, event_id: int, household_id: int, session: SessionDep + request: Request, + event_id: int, + household_id: int, + session: SessionDep, + user: StrictUserDep, ): """ Deletes a registration record for a specific household at a given event. This endpoint @@ -388,6 +398,7 @@ async def delete_team_registration( event_id: int, entry_id: int, session: SessionDep, + user: StrictUserDep, ): statement = select(TeamRegistration).where(TeamRegistration.id == entry_id) session.delete(session.scalars(statement).one()) diff --git a/src/meal_manager/models.py b/src/meal_manager/models.py index f8eea7f..c261c99 100644 --- a/src/meal_manager/models.py +++ b/src/meal_manager/models.py @@ -33,8 +33,12 @@ class Event(Base): team_prep_min: Mapped[int] = mapped_column(default=1, nullable=False) team_prep_max: Mapped[int] = mapped_column(default=1, nullable=False) - registrations: Mapped[list["Registration"]] = relationship("Registration", cascade="all, delete") - team: Mapped[list["TeamRegistration"]] = relationship("TeamRegistration", cascade="all, delete") + registrations: Mapped[list["Registration"]] = relationship( + "Registration", cascade="all, delete" + ) + team: Mapped[list["TeamRegistration"]] = relationship( + "TeamRegistration", cascade="all, delete" + ) def team_min_reached(self, work_type: WorkTypes): threshold = { @@ -62,6 +66,14 @@ class Event(Base): self.team_max_reached(work_type) for work_type in typing.get_args(WorkTypes) ) + @property + def registration_open(self): + return datetime.now() < self.registration_deadline + + @property + def in_the_past(self): + return datetime.now() > self.event_time + class TeamRegistration(Base): __tablename__ = "teamregistration" diff --git a/src/meal_manager/templates/event.html b/src/meal_manager/templates/event.html index ee88ff6..ed993d7 100644 --- a/src/meal_manager/templates/event.html +++ b/src/meal_manager/templates/event.html @@ -3,11 +3,13 @@ {% for entry in event.team | selectattr("work_type", "equalto", work_type)%}
{{ entry.person_name }} + {% if user and event.registration_open -%} + {% endif -%}
{% endfor %} {%- endmacro %} @@ -24,10 +26,10 @@

Anmeldung schließt {{ event.registration_deadline.strftime('%A, %d.%m.%Y, %H:%M Uhr') }}

- - {% if event.recipe_link %} @@ -129,7 +131,7 @@ Kinder Kleinkinder Kommentar - Löschen + {% if user %}Löschen{% endif %} @@ -140,7 +142,7 @@ {{ reg.num_children_meals }} {{ reg.num_small_children_meals }} {% if reg.comment %}{{ reg.comment }}{% endif %} - + {% if user %}{% endif %} {% endfor %} @@ -154,9 +156,9 @@
{{ reg.household.name }}
- + {% if user %} - + {% endif -%}
diff --git a/src/meal_manager/templates/subscribe.html b/src/meal_manager/templates/subscribe.html index 9fe3524..fa999a5 100644 --- a/src/meal_manager/templates/subscribe.html +++ b/src/meal_manager/templates/subscribe.html @@ -106,9 +106,9 @@
{{ sub.household.name }}
- + {% if user %} - + {% endif %}