improve news and news manager
This commit is contained in:
parent
947a05ad14
commit
a1fb68c976
@ -2,7 +2,7 @@ from datetime import datetime
|
||||
from functools import partial
|
||||
from typing import Optional, Callable
|
||||
|
||||
from rio import Component, Rectangle, Text, TextStyle, Column, Row, TextInput, DateInput, MultiLineTextInput, IconButton, Color, Button
|
||||
from rio import Component, Rectangle, Text, TextStyle, Column, Row, TextInput, DateInput, MultiLineTextInput, IconButton, Color, Button, ThemeContextSwitcher
|
||||
|
||||
|
||||
class NewsPost(Component):
|
||||
@ -94,7 +94,8 @@ class EditableNewsPost(NewsPost):
|
||||
self.__setattr__(prop, value)
|
||||
|
||||
def build(self) -> Component:
|
||||
return Rectangle(
|
||||
return ThemeContextSwitcher(
|
||||
content=Rectangle(
|
||||
content=Column(
|
||||
Row(
|
||||
TextInput(
|
||||
@ -146,4 +147,6 @@ class EditableNewsPost(NewsPost):
|
||||
shadow_color=self.session.theme.background_color,
|
||||
shadow_offset_y=0,
|
||||
corner_radius=0.2
|
||||
),
|
||||
color="primary"
|
||||
)
|
||||
|
||||
@ -63,7 +63,7 @@ class ManageNewsPage(Component):
|
||||
self.news_posts = (await self.session[NewsService].get_news())[:8]
|
||||
|
||||
def build(self) -> Component:
|
||||
posts = sorted([EditableNewsPost(
|
||||
posts = [EditableNewsPost(
|
||||
news_id=news.news_id,
|
||||
title=news.title,
|
||||
subtitle=news.subtitle,
|
||||
@ -72,7 +72,7 @@ class ManageNewsPage(Component):
|
||||
author=news.author.user_name,
|
||||
save_cb=self.on_news_post_changed,
|
||||
delete_cb=self.on_news_post_deleted
|
||||
) for news in self.news_posts], key=lambda p: p.date)
|
||||
) for news in self.news_posts]
|
||||
return Column(
|
||||
MainViewContentBox(
|
||||
Column(
|
||||
|
||||
@ -17,12 +17,13 @@ class NewsService:
|
||||
return
|
||||
await self._db_service.add_news(news)
|
||||
|
||||
async def get_news(self, dt_start: Optional[date] = None, dt_end: Optional[date] = None) -> list[News]:
|
||||
async def get_news(self, dt_start: Optional[date] = None, dt_end: Optional[date] = None, newest_first: bool = True) -> list[News]:
|
||||
if not dt_end:
|
||||
dt_end = date.today()
|
||||
if not dt_start:
|
||||
dt_start = date(1900, 1, 1)
|
||||
return await self._db_service.get_news(dt_start, dt_end)
|
||||
fetched_news = await self._db_service.get_news(dt_start, dt_end)
|
||||
return sorted(fetched_news, key=lambda news: news.news_date, reverse=newest_first)
|
||||
|
||||
async def update_news(self, news: News) -> None:
|
||||
return await self._db_service.update_news(news)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user