fix seating plan info box not showing correct button

This commit is contained in:
David Rodenkirchen 2025-03-25 23:28:32 +01:00
parent 2f6e2b15aa
commit dd8b79c254

View File

@ -17,12 +17,21 @@ class SeatingPlanInfoBox(Component):
seat_price: Decimal = Decimal("0") seat_price: Decimal = Decimal("0")
is_blocked: bool = False is_blocked: bool = False
has_user_ticket = False has_user_ticket = False
booking_button_text = ""
@event.on_page_change @event.on_populate
async def check_ticket(self) -> None: async def check_ticket(self) -> None:
if self.session[SessionStorage].user_id: if self.session[SessionStorage].user_id:
user_ticket = await self.session[TicketingService].get_user_ticket(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) self.has_user_ticket = not (user_ticket is None)
self.booking_button_text = "Buchen" if self.has_user_ticket else "Ticket kaufen"
self.force_refresh()
async def purchase_clicked(self):
if self.has_user_ticket:
await self.purchase_cb()
else:
self.session.navigate_to("./buy_ticket")
def build(self) -> Component: def build(self) -> Component:
if not self.show: if not self.show:
@ -47,7 +56,7 @@ class SeatingPlanInfoBox(Component):
style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"), style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"),
Button( Button(
Text( Text(
"Buchen" if self.has_user_ticket else "Ticket kaufen", text=self.booking_button_text,
margin=1, margin=1,
style=TextStyle(fill=self.session.theme.neutral_color, font_size=1.1), style=TextStyle(fill=self.session.theme.neutral_color, font_size=1.1),
overflow="wrap", overflow="wrap",
@ -59,7 +68,7 @@ class SeatingPlanInfoBox(Component):
margin=1, margin=1,
grow_y=False, grow_y=False,
is_sensitive=not self.is_booking_blocked, is_sensitive=not self.is_booking_blocked,
on_press=self.purchase_cb if self.has_user_ticket else partial(self.session.navigate_to, "./buy_ticket") on_press=self.purchase_clicked
) if self.session[SessionStorage].user_id else Text(f"Du musst eingeloggt sein um einen Sitzplatz zu buchen", margin=1, ) 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"), style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"),
min_height=10 min_height=10