28 lines
908 B
Python
28 lines
908 B
Python
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.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")
|
|
self.news_posts = (await self.session[NewsService].get_news())[:8]
|
|
|
|
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.news_posts]
|
|
return Column(
|
|
*posts,
|
|
align_y=0,
|
|
)
|