sync mvp-dev to main #2
@ -2,7 +2,7 @@ from datetime import datetime
|
|||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import Optional, Callable
|
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):
|
class NewsPost(Component):
|
||||||
@ -94,7 +94,8 @@ class EditableNewsPost(NewsPost):
|
|||||||
self.__setattr__(prop, value)
|
self.__setattr__(prop, value)
|
||||||
|
|
||||||
def build(self) -> Component:
|
def build(self) -> Component:
|
||||||
return Rectangle(
|
return ThemeContextSwitcher(
|
||||||
|
content=Rectangle(
|
||||||
content=Column(
|
content=Column(
|
||||||
Row(
|
Row(
|
||||||
TextInput(
|
TextInput(
|
||||||
@ -146,4 +147,6 @@ class EditableNewsPost(NewsPost):
|
|||||||
shadow_color=self.session.theme.background_color,
|
shadow_color=self.session.theme.background_color,
|
||||||
shadow_offset_y=0,
|
shadow_offset_y=0,
|
||||||
corner_radius=0.2
|
corner_radius=0.2
|
||||||
|
),
|
||||||
|
color="primary"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -63,7 +63,7 @@ class ManageNewsPage(Component):
|
|||||||
self.news_posts = (await self.session[NewsService].get_news())[:8]
|
self.news_posts = (await self.session[NewsService].get_news())[:8]
|
||||||
|
|
||||||
def build(self) -> Component:
|
def build(self) -> Component:
|
||||||
posts = sorted([EditableNewsPost(
|
posts = [EditableNewsPost(
|
||||||
news_id=news.news_id,
|
news_id=news.news_id,
|
||||||
title=news.title,
|
title=news.title,
|
||||||
subtitle=news.subtitle,
|
subtitle=news.subtitle,
|
||||||
@ -72,7 +72,7 @@ class ManageNewsPage(Component):
|
|||||||
author=news.author.user_name,
|
author=news.author.user_name,
|
||||||
save_cb=self.on_news_post_changed,
|
save_cb=self.on_news_post_changed,
|
||||||
delete_cb=self.on_news_post_deleted
|
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(
|
return Column(
|
||||||
MainViewContentBox(
|
MainViewContentBox(
|
||||||
Column(
|
Column(
|
||||||
|
|||||||
@ -17,12 +17,13 @@ class NewsService:
|
|||||||
return
|
return
|
||||||
await self._db_service.add_news(news)
|
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:
|
if not dt_end:
|
||||||
dt_end = date.today()
|
dt_end = date.today()
|
||||||
if not dt_start:
|
if not dt_start:
|
||||||
dt_start = date(1900, 1, 1)
|
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:
|
async def update_news(self, news: News) -> None:
|
||||||
return await self._db_service.update_news(news)
|
return await self._db_service.update_news(news)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user