further improve db error handling
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user