improve seating plan booking button

This commit is contained in:
David Rodenkirchen 2025-03-25 21:05:17 +01:00
parent db8ada283b
commit 1d21fbae5a

View File

@ -1,7 +1,11 @@
from decimal import Decimal
from functools import partial
from typing import Optional, Callable
from rio import Component, Column, Text, TextStyle, Button, Spacer
from rio import Component, Column, Text, TextStyle, Button, Spacer, event
from src.ez_lan_manager import TicketingService
from src.ez_lan_manager.types.SessionStorage import SessionStorage
class SeatingPlanInfoBox(Component):
@ -12,6 +16,13 @@ class SeatingPlanInfoBox(Component):
seat_occupant: Optional[str] = None
seat_price: Decimal = Decimal("0")
is_blocked: bool = False
has_user_ticket = False
@event.on_page_change
async def check_ticket(self) -> None:
if self.session[SessionStorage].user_id:
user_ticket = await self.session[TicketingService].get_user_ticket(self.session[SessionStorage].user_id)
self.has_user_ticket = not (user_ticket is None)
def build(self) -> Component:
if not self.show:
@ -36,7 +47,7 @@ class SeatingPlanInfoBox(Component):
style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"),
Button(
Text(
f"Buchen",
"Buchen" if self.has_user_ticket else "Ticket kaufen",
margin=1,
style=TextStyle(fill=self.session.theme.neutral_color, font_size=1.1),
overflow="wrap",
@ -48,7 +59,8 @@ class SeatingPlanInfoBox(Component):
margin=1,
grow_y=False,
is_sensitive=not self.is_booking_blocked,
on_press=self.purchase_cb
),
on_press=self.purchase_cb if self.has_user_ticket else partial(self.session.navigate_to, "./buy_ticket")
) if self.session[SessionStorage].user_id else Text(f"Du musst eingeloggt sein um einen Sitzplatz zu buchen", margin=1,
style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"),
min_height=10
)