Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 25d1c70a0b | |||
| 041ddaa334 | |||
| bbcf18d790 | |||
| 87eb94045c |
@@ -94,6 +94,7 @@ class NavigationBar(Component):
|
|||||||
NavigationButton("material/house", "Startseite", "/", extension_state_changed=self.on_extension_pressed),
|
NavigationButton("material/house", "Startseite", "/", extension_state_changed=self.on_extension_pressed),
|
||||||
NavigationButton("material/local_activity", "Tickets", "/tickets", extension_state_changed=self.on_extension_pressed),
|
NavigationButton("material/local_activity", "Tickets", "/tickets", extension_state_changed=self.on_extension_pressed),
|
||||||
NavigationButton("material/chair_alt", "Sitzplan", "/seating", extension_state_changed=self.on_extension_pressed),
|
NavigationButton("material/chair_alt", "Sitzplan", "/seating", extension_state_changed=self.on_extension_pressed),
|
||||||
|
NavigationButton("material/group", "Teilnehmer", "/participants", extension_state_changed=self.on_extension_pressed),
|
||||||
NavigationButton("material/local_dining", "Catering", "/catering", extension_state_changed=self.on_extension_pressed),
|
NavigationButton("material/local_dining", "Catering", "/catering", extension_state_changed=self.on_extension_pressed),
|
||||||
NavigationButton("material/trophy", "Turniere", "/tournaments", extension_state_changed=self.on_extension_pressed),
|
NavigationButton("material/trophy", "Turniere", "/tournaments", extension_state_changed=self.on_extension_pressed),
|
||||||
margin_bottom=6
|
margin_bottom=6
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ class SeatPixel(Component):
|
|||||||
self.associated_user = await self.seat.user.fetch()
|
self.associated_user = await self.seat.user.fetch()
|
||||||
|
|
||||||
async def on_press(self, _: PointerEvent) -> None:
|
async def on_press(self, _: PointerEvent) -> None:
|
||||||
self.session.navigate_to(f"./seat-info?seat_id={self.seat_id.replace("\n", "")}")
|
seat_id = self.seat_id.replace("\n", "")
|
||||||
|
self.session.navigate_to(f"./seat-info?seat_id={seat_id}")
|
||||||
|
|
||||||
def determine_color(self) -> Color:
|
def determine_color(self) -> Color:
|
||||||
if self.seat is not None:
|
if self.seat is not None:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from _sha2 import sha256
|
from hashlib import sha256
|
||||||
from random import choices
|
from random import choices
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class TransactionRow(Component):
|
|||||||
return Rectangle(
|
return Rectangle(
|
||||||
content=Row(
|
content=Row(
|
||||||
Text(
|
Text(
|
||||||
f"{self.transaction_time.strftime("%d.%m.%y")} /",
|
f"{self.transaction_time.strftime('%d.%m.%y')} /",
|
||||||
justify="left",
|
justify="left",
|
||||||
font_size=0.8,
|
font_size=0.8,
|
||||||
margin_left=0.5,
|
margin_left=0.5,
|
||||||
@@ -174,7 +174,7 @@ class MyBalancePage(Component):
|
|||||||
stroke_color=self.session.theme.box_border_color,
|
stroke_color=self.session.theme.box_border_color,
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
ElmButton(text="Banküberweisung", style="small" if self.session.is_mobile() else "normal", on_press=self.toggle_bank_revealer),
|
ElmButton(text="Banküberweißung", style="small" if self.session.is_mobile() else "normal", on_press=self.toggle_bank_revealer),
|
||||||
Revealer(header=None, is_open=self.bank_revealer_open, content=Column(
|
Revealer(header=None, is_open=self.bank_revealer_open, content=Column(
|
||||||
Text("QR Code", justify="center"),
|
Text("QR Code", justify="center"),
|
||||||
Image(self.payment_qr_image, min_width=14, min_height=14, margin_bottom=1),
|
Image(self.payment_qr_image, min_width=14, min_height=14, margin_bottom=1),
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from copy import copy
|
||||||
|
from typing import Any, Optional
|
||||||
|
from uuid import uuid4
|
||||||
|
|
||||||
|
from rio import Component, Column, Row, Text, Spacer, page, Color, Rectangle, TextInput, GuardEvent
|
||||||
|
from rio.event import on_populate
|
||||||
|
|
||||||
|
from elm.types import UserSession, User, Ticket, Seat
|
||||||
|
from elm.services import UserService, LocalData, LocalDataService, ConfigurationService
|
||||||
|
from elm.components import ElmButton
|
||||||
|
|
||||||
|
@page(name="Participants", url_segment="participants")
|
||||||
|
class ParticipantsPage(Component):
|
||||||
|
participants: list[tuple[User, Seat]] = []
|
||||||
|
|
||||||
|
@on_populate
|
||||||
|
async def on_populate(self) -> None:
|
||||||
|
seats = await Seat.find_many(
|
||||||
|
Seat.user != None,
|
||||||
|
fetch_links=True
|
||||||
|
).to_list()
|
||||||
|
|
||||||
|
self.participants = [(seat.user, seat) for seat in seats]
|
||||||
|
|
||||||
|
def build(self) -> Component:
|
||||||
|
return Row(
|
||||||
|
Rectangle(
|
||||||
|
content=Column(
|
||||||
|
Rectangle(
|
||||||
|
content=Rectangle(
|
||||||
|
content=Text("Teilnehmer", margin=0.5, selectable=False, overflow="wrap"),
|
||||||
|
fill=self.session.theme.header_box_background_color,
|
||||||
|
margin=0.4
|
||||||
|
),
|
||||||
|
stroke_width=0.1,
|
||||||
|
stroke_color=self.session.theme.box_border_color,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
Row(
|
||||||
|
Text("Nutzer", grow_x=True, font_weight="bold"),
|
||||||
|
Text("Sitzplatz", font_weight="bold"),
|
||||||
|
margin=0.5
|
||||||
|
),
|
||||||
|
*[
|
||||||
|
Rectangle(
|
||||||
|
content=Row(
|
||||||
|
Text(user.user_name, grow_x=True, font_size=0.8),
|
||||||
|
Text(seat.seat_id, font_size=0.8),
|
||||||
|
margin=0.5
|
||||||
|
),
|
||||||
|
hover_fill=self.session.theme.secondary_color,
|
||||||
|
transition_time=0.2
|
||||||
|
) for user, seat in self.participants],
|
||||||
|
margin=1
|
||||||
|
),
|
||||||
|
Spacer()
|
||||||
|
),
|
||||||
|
fill=self.session.theme.box_color,
|
||||||
|
stroke_width=0.1,
|
||||||
|
stroke_color=self.session.theme.box_border_color
|
||||||
|
),
|
||||||
|
margin=1,
|
||||||
|
grow_x=True
|
||||||
|
)
|
||||||
@@ -44,7 +44,7 @@ class ConfigurationService:
|
|||||||
secret=self._config["paypal"]["secret"]
|
secret=self._config["paypal"]["secret"]
|
||||||
)
|
)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
logger.fatal("Error loading DatabaseConfiguration, exiting...")
|
logger.fatal("Error loading PayPalConfiguration, exiting...")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def get_ticket_info(self) -> tuple[TicketInfo, ...]:
|
def get_ticket_info(self) -> tuple[TicketInfo, ...]:
|
||||||
|
|||||||
Reference in New Issue
Block a user