further improve db error handling

This commit is contained in:
David Rodenkirchen
2024-08-29 12:05:04 +02:00
parent ac805e96da
commit dc514895df
4 changed files with 84 additions and 68 deletions
+12 -2
View File
@@ -1,23 +1,33 @@
from __future__ import annotations
from asyncio import sleep
from typing import * # type: ignore
from rio import Component, event, Spacer, Card, Container, Column, Row, TextStyle, Color, Text
from src.ez_lan_manager.services.DatabaseService import DatabaseService
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):
async def on_window_size_change(self) -> None:
await self.force_refresh()
@event.on_mount
async def retry_db_connect(self) -> None:
while not self.session[DatabaseService].is_connected:
await sleep(2)
self.session.navigate_to("./")
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.",
text="Ouh-oh, da läuft gerade irgendwas schief.\n\n"
"Unser Team kümmert sich bereits um das Problem.\n\n"
"Du wirst automatisch weitergeleitet sobald das System wieder verfügbar ist.",
margin=2,
style=TextStyle(
fill=self.session.theme.danger_color,
+10 -1
View File
@@ -3,11 +3,20 @@ from rio import Column, Component, event
from src.ez_lan_manager import ConfigurationService, NewsService
from src.ez_lan_manager.components.NewsPost import NewsPost
from src.ez_lan_manager.pages import BasePage
from src.ez_lan_manager.services.DatabaseService import NoDatabaseConnectionError
from src.ez_lan_manager.types.News import News
class NewsPage(Component):
news_posts: list[News] = []
@event.on_populate
async def on_populate(self) -> None:
await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Neuigkeiten")
try:
self.news_posts = self.session[NewsService].get_news()[:8]
except NoDatabaseConnectionError:
self.session.navigate_to("db-error")
def build(self) -> Component:
posts = [NewsPost(
@@ -16,7 +25,7 @@ class NewsPage(Component):
text=news.content,
date=news.news_date.strftime("%d.%m.%Y"),
author=news.author.user_name
) for news in self.session[NewsService].get_news()[:8]]
) for news in self.news_posts]
return BasePage(
content=Column(
*posts,