improve seating plan booking button
This commit is contained in:
parent
db8ada283b
commit
1d21fbae5a
@ -1,7 +1,11 @@
|
|||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
from functools import partial
|
||||||
from typing import Optional, Callable
|
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):
|
class SeatingPlanInfoBox(Component):
|
||||||
@ -12,6 +16,13 @@ class SeatingPlanInfoBox(Component):
|
|||||||
seat_occupant: Optional[str] = None
|
seat_occupant: Optional[str] = None
|
||||||
seat_price: Decimal = Decimal("0")
|
seat_price: Decimal = Decimal("0")
|
||||||
is_blocked: bool = False
|
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:
|
def build(self) -> Component:
|
||||||
if not self.show:
|
if not self.show:
|
||||||
@ -36,7 +47,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(
|
||||||
f"Buchen",
|
"Buchen" if self.has_user_ticket else "Ticket kaufen",
|
||||||
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",
|
||||||
@ -48,7 +59,8 @@ 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
|
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
|
min_height=10
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user