1 Commits

Author SHA1 Message Date
Christian 25d1c70a0b Fix incorrect log message in PayPal config loader 2026-06-21 19:15:20 +02:00
6 changed files with 11 additions and 91 deletions
-2
View File
@@ -9,8 +9,6 @@
has_showers=false has_showers=false
ts3_address="" ts3_address=""
discord_invite_link="" discord_invite_link=""
location_name=""
location_link=""
[database] [database]
database_host="localhost" database_host="localhost"
+1 -3
View File
@@ -1,4 +1,4 @@
from rio import Component, Rectangle, Row, Text, Spacer, ProgressBar, Column, Color, TextStyle, Link from rio import Component, Rectangle, Row, Text, Spacer, ProgressBar, Column, Color, TextStyle
from rio.event import on_populate from rio.event import on_populate
from elm.services import ConfigurationService from elm.services import ConfigurationService
@@ -36,7 +36,6 @@ class LanInfoBox(Component):
stroke_color=self.session.theme.box_border_color, stroke_color=self.session.theme.box_border_color,
), ),
Column( Column(
Row(Text("Location:", font_size=0.7), Spacer(), Link(Text(lan_info.location_name, fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap"), target_url=lan_info.location_link, open_in_new_tab=True)),
Row(Text("Start:", font_size=0.7), Spacer(), Text(lan_info.date_from.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")), Row(Text("Start:", font_size=0.7), Spacer(), Text(lan_info.date_from.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
Row(Text("Ende:", font_size=0.7), Spacer(), Text(lan_info.date_till.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")), Row(Text("Ende:", font_size=0.7), Spacer(), Text(lan_info.date_till.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
Row(Text("Einlass:", font_size=0.7), Spacer(), Text(lan_info.date_from.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")), Row(Text("Einlass:", font_size=0.7), Spacer(), Text(lan_info.date_from.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.8, overflow="nowrap")),
@@ -82,7 +81,6 @@ class LanInfoBox(Component):
stroke_color=self.session.theme.box_border_color, stroke_color=self.session.theme.box_border_color,
), ),
Column( Column(
Row(Text("Location:", font_size=0.9), Spacer(), Link(Text(lan_info.location_name, fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap"), target_url=lan_info.location_link, open_in_new_tab=True)),
Row(Text("Start:", font_size=0.9), Spacer(), Text(lan_info.date_from.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")), Row(Text("Start:", font_size=0.9), Spacer(), Text(lan_info.date_from.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
Row(Text("Ende:", font_size=0.9), Spacer(), Text(lan_info.date_till.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")), Row(Text("Ende:", font_size=0.9), Spacer(), Text(lan_info.date_till.strftime("%d.%m.%Y"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
Row(Text("Einlass:", font_size=0.9), Spacer(), Text(lan_info.date_from.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")), Row(Text("Einlass:", font_size=0.9), Spacer(), Text(lan_info.date_from.strftime("%H:%M Uhr"), fill=self.session.theme.primary_color, font_size=0.9, overflow="nowrap")),
+2 -73
View File
@@ -1,18 +1,15 @@
from __future__ import annotations from __future__ import annotations
import logging import logging
from copy import copy
from functools import partial from functools import partial
from typing import Optional from typing import Optional
from decimal import Decimal from decimal import Decimal
from beanie.odm.interfaces.find import FindInterface
from bson import ObjectId
from rio import Component, Column, Row, Text, Spacer, page, Rectangle, TextInput, GuardEvent, Button, TextInputChangeEvent, NumberInput, IconButton from rio import Component, Column, Row, Text, Spacer, page, Rectangle, TextInput, GuardEvent, Button, TextInputChangeEvent, NumberInput, IconButton
from rio.event import on_populate from rio.event import on_populate
from elm.types import UserSession, User, Transaction, Ticket, Seat from elm.types import UserSession, User, Transaction
from elm.services import AccountingService, MailingService, ConfigurationService from elm.services import AccountingService, MailingService
from elm.components import AccountInfoBox from elm.components import AccountInfoBox
logger = logging.getLogger(__name__.split(".")[-1]) logger = logging.getLogger(__name__.split(".")[-1])
@@ -98,36 +95,6 @@ class UserAdminPage(Component):
receiver=self.active_user.user_mail receiver=self.active_user.user_mail
)) ))
async def cancel_ticket(self) -> None:
if self.active_user is None:
return
ticket = await Ticket.find_one({"owner.$id": self.active_user.id})
if ticket is None:
return
ticket_price = Decimal(0)
for ticket_info in self.session[ConfigurationService].get_ticket_info():
if ticket_info.category == ticket.category:
ticket_price = ticket_info.price
await ticket.delete()
await self.session[AccountingService].add_balance(self.active_user.user_name, ticket_price, "TICKET STORNO", skip_mail=True)
await self.free_seat()
async def free_seat(self) -> None:
if self.active_user is None:
return
seat = await Seat.find_one({"user.$id": ObjectId(self.active_user.id)})
if seat is None:
self.active_user = None
return
seat.user = None
await seat.save()
self.active_user = None
def build(self) -> Component: def build(self) -> Component:
right_panel_contents = [] right_panel_contents = []
if not self.active_user: if not self.active_user:
@@ -186,44 +153,6 @@ class UserAdminPage(Component):
stroke_width=0.1, stroke_width=0.1,
stroke_color=self.session.theme.box_border_color stroke_color=self.session.theme.box_border_color
), ),
Rectangle(
content=Column(
Rectangle(
content=Rectangle(
content=Text(f"Sonstiges", 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(
Button(
content="Ticket stornieren",
shape="rectangle",
color="danger",
margin=1,
on_press=self.cancel_ticket
),
Button(
content="Sitzplatz freigeben",
shape="rectangle",
color="danger",
margin=1,
on_press=self.free_seat
)
),
margin=1,
spacing=1
),
Spacer()
),
fill=self.session.theme.box_color,
stroke_width=0.1,
stroke_color=self.session.theme.box_border_color
),
]) ])
+1 -2
View File
@@ -130,7 +130,7 @@ class AccountingService:
return True return True
return False return False
async def add_balance(self, user_name: str, balance_to_add: Decimal, title: str, skip_mail: bool = False) -> Decimal: async def add_balance(self, user_name: str, balance_to_add: Decimal, title: str) -> Decimal:
user = await User.find_one(User.user_name == user_name) user = await User.find_one(User.user_name == user_name)
if not user: if not user:
raise KeyError("User does not exist") raise KeyError("User does not exist")
@@ -142,7 +142,6 @@ class AccountingService:
).save() ).save()
logger.debug(f"Added balance of {self.make_euro_string_from_decimal(balance_to_add)} to user '{user_name}'") logger.debug(f"Added balance of {self.make_euro_string_from_decimal(balance_to_add)} to user '{user_name}'")
new_balance = await self.get_balance(user_name) new_balance = await self.get_balance(user_name)
if not skip_mail:
await self._mailing_service.send_email( await self._mailing_service.send_email(
"Dein Guthaben wurde aufgeladen", "Dein Guthaben wurde aufgeladen",
self._mailing_service.generate_account_balance_added_mail_body(user, balance_to_add, new_balance), self._mailing_service.generate_account_balance_added_mail_body(user, balance_to_add, new_balance),
+2 -4
View File
@@ -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, ...]:
@@ -103,9 +103,7 @@ class ConfigurationService:
has_wifi=lan_info["has_wifi"], has_wifi=lan_info["has_wifi"],
has_showers=lan_info["has_showers"], has_showers=lan_info["has_showers"],
ts3_address=lan_info["ts3_address"], ts3_address=lan_info["ts3_address"],
discord_invite_link=lan_info["discord_invite_link"], discord_invite_link=lan_info["discord_invite_link"]
location_name=lan_info["location_name"],
location_link=lan_info["location_link"]
) )
except KeyError: except KeyError:
logger.fatal("Error loading LAN Info, exiting...") logger.fatal("Error loading LAN Info, exiting...")
-2
View File
@@ -34,8 +34,6 @@ class LanInfo:
has_showers: bool has_showers: bool
ts3_address: str ts3_address: str
discord_invite_link: str discord_invite_link: str
location_name: str
location_link: str
@dataclass(frozen=True) @dataclass(frozen=True)