attach NewsPage to database source

This commit is contained in:
David Rodenkirchen 2024-08-28 00:24:55 +02:00
parent 093f0d6a94
commit 53c08dff28
2 changed files with 39 additions and 21 deletions

View File

@ -5,6 +5,8 @@ class NewsPost(Component):
title: str = "" title: str = ""
text: str = "" text: str = ""
date: str = "" date: str = ""
subtitle: str = ""
author: str = ""
def build(self) -> Component: def build(self) -> Component:
return Rectangle( return Rectangle(
@ -12,7 +14,6 @@ class NewsPost(Component):
Row( Row(
Text( Text(
self.title, self.title,
align_x=0,
grow_x=True, grow_x=True,
margin=2, margin=2,
margin_bottom=0, margin_bottom=0,
@ -20,7 +21,7 @@ class NewsPost(Component):
fill=self.session.theme.background_color, fill=self.session.theme.background_color,
font_size=1.3 font_size=1.3
), ),
wrap=False wrap="ellipsize"
), ),
Text( Text(
self.date, self.date,
@ -33,6 +34,18 @@ class NewsPost(Component):
wrap=True wrap=True
) )
), ),
Text(
self.subtitle,
grow_x=True,
margin=2,
margin_top=0,
margin_bottom=0,
style=TextStyle(
fill=self.session.theme.background_color,
font_size=0.8
),
wrap="ellipsize"
),
Text( Text(
self.text, self.text,
margin=2, margin=2,
@ -40,6 +53,20 @@ class NewsPost(Component):
fill=self.session.theme.background_color fill=self.session.theme.background_color
), ),
wrap=True wrap=True
),
Text(
f"Geschrieben von {self.author}",
align_x=0,
grow_x=True,
margin=2,
margin_top=0,
margin_bottom=1,
style=TextStyle(
fill=self.session.theme.background_color,
font_size=0.5,
italic=True
),
wrap=False
) )
), ),
fill=self.session.theme.primary_color, fill=self.session.theme.primary_color,

View File

@ -1,6 +1,6 @@
from rio import Text, Column, Rectangle, TextStyle, Component, event from rio import Column, Component, event
from src.ez_lan_manager import ConfigurationService from src.ez_lan_manager import ConfigurationService, NewsService
from src.ez_lan_manager.components.NewsPost import NewsPost from src.ez_lan_manager.components.NewsPost import NewsPost
from src.ez_lan_manager.pages import BasePage from src.ez_lan_manager.pages import BasePage
@ -10,25 +10,16 @@ class NewsPage(Component):
await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Neuigkeiten") await self.session.set_title(f"{self.session[ConfigurationService].get_lan_info().name} - Neuigkeiten")
def build(self) -> Component: def build(self) -> Component:
posts = [NewsPost(
title=news.title,
subtitle=news.subtitle,
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]]
return BasePage( return BasePage(
content=Column( content=Column(
NewsPost( *posts,
title="EZ LAN Manager",
text="Der EZ LAN Manager ist die offizielle Software der EZ GG e.V. um LAn-Parties zu verwalten."
"Ist schon echt cool wie der funktioniert! So kann LAN Party richtig geschmeidig ablaufen.",
date="23.08.2024"
),
NewsPost(
title="Alkohöl",
text="Der Verein 'EZ GG e.V.' ist bekannt für seinen unstillbaren Durst. "
"Bei jedem Treffen fließt der Alkohol in Strömen egal ob Bier, Wein oder Hochprozentiges. "
"Kein Glas bleibt lange leer, und bevor der Pegel auch nur ansatzweise sinkt, "
"wird schon nachgefüllt. Die Mitglieder feiern ausgiebig und trinken dabei so viel, "
"dass die Vorräte nie lange halten. Bei jeder Gelegenheit wird angestoßen, "
"die Stimmung steigt und der Alkohol fließt ohne Ende. "
"Ihr Motto: 'Kein Abend ohne reichlich Alkohol!'",
date="23.08.2024"
),
align_y=0, align_y=0,
) )
) )