improve error handling for the case the database can not be reached
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import * # type: ignore
|
||||
|
||||
from rio import Component, event, Spacer, Card, Container, Column, Row, TextStyle, Color, Text
|
||||
|
||||
from src.ez_lan_manager import ConfigurationService
|
||||
from src.ez_lan_manager.components.MainViewContentBox import MainViewContentBox
|
||||
|
||||
|
||||
class DbErrorPage(Component):
|
||||
@event.on_window_size_change
|
||||
async def on_window_size_change(self):
|
||||
await self.force_refresh()
|
||||
|
||||
def build(self) -> Component:
|
||||
content = Card(
|
||||
content=MainViewContentBox(
|
||||
content=Text(
|
||||
text="Ouh-oh, da läuft gerade irgendwas schief mit unserer Datenbank.\n\nUnser Team kümmert sich bereits um das Problem.",
|
||||
margin=2,
|
||||
style=TextStyle(
|
||||
fill=self.session.theme.danger_color,
|
||||
font_size=1.3
|
||||
),
|
||||
wrap=True
|
||||
)
|
||||
),
|
||||
color="secondary",
|
||||
min_width=38,
|
||||
corner_radius=(0, 0.5, 0, 0)
|
||||
)
|
||||
if self.session.window_width > 28:
|
||||
return Container(
|
||||
content=Column(
|
||||
Column(
|
||||
Row(
|
||||
Spacer(grow_x=True, grow_y=True),
|
||||
Card(
|
||||
content=Spacer(),
|
||||
color=self.session.theme.neutral_color,
|
||||
min_width=15,
|
||||
grow_y=True,
|
||||
corner_radius=(0.5, 0, 0, 0),
|
||||
margin_right=0.1
|
||||
),
|
||||
content,
|
||||
Spacer(grow_x=True, grow_y=True),
|
||||
grow_y=True
|
||||
),
|
||||
Row(
|
||||
Spacer(grow_x=True, grow_y=False),
|
||||
Card(
|
||||
content=Text(f"EZ LAN Manager Version {self.session[ConfigurationService].APP_VERSION} © EZ GG e.V.", align_x=0.5, align_y=0.5, style=TextStyle(fill=self.session.theme.primary_color, font_size=0.5)),
|
||||
color=self.session.theme.neutral_color,
|
||||
corner_radius=(0, 0, 0.5, 0.5),
|
||||
grow_x=False,
|
||||
grow_y=False,
|
||||
min_height=1.2,
|
||||
min_width=53.1,
|
||||
margin_bottom=3
|
||||
),
|
||||
Spacer(grow_x=True, grow_y=False),
|
||||
grow_y=False
|
||||
),
|
||||
margin_top=4
|
||||
)
|
||||
),
|
||||
grow_x=True,
|
||||
grow_y=True
|
||||
)
|
||||
else:
|
||||
return Text(
|
||||
"Der EZ LAN Manager wird\nauf mobilen Endgeräten nur\nim Querformat unterstützt.\nBitte drehe dein Gerät.",
|
||||
align_x=0.5,
|
||||
align_y=0.5,
|
||||
style=TextStyle(fill=Color.from_hex("FFFFFF"), font_size=0.8)
|
||||
)
|
||||
@@ -12,3 +12,4 @@ from .FaqPage import FaqPage
|
||||
from .TournamentsPage import TournamentsPage
|
||||
from .GuestsPage import GuestsPage
|
||||
from .CateringPage import CateringPage
|
||||
from .DbErrorPage import DbErrorPage
|
||||
|
||||
@@ -21,6 +21,9 @@ logger = logging.getLogger(__name__.split(".")[-1])
|
||||
class DuplicationError(Exception):
|
||||
pass
|
||||
|
||||
class NoDatabaseConnectionError(Exception):
|
||||
pass
|
||||
|
||||
class DatabaseService:
|
||||
def __init__(self, database_config: DatabaseConfiguration) -> None:
|
||||
self._database_config = database_config
|
||||
@@ -37,8 +40,8 @@ class DatabaseService:
|
||||
database=self._database_config.db_name
|
||||
)
|
||||
except mariadb.Error as e:
|
||||
logger.fatal(f"Error connecting to database: {e}")
|
||||
sys.exit(1)
|
||||
logger.error(f"Error connecting to database: {e}")
|
||||
raise NoDatabaseConnectionError
|
||||
|
||||
def _get_cursor(self) -> Cursor:
|
||||
return self._connection.cursor()
|
||||
|
||||
Reference in New Issue
Block a user