35 lines
865 B
Python
35 lines
865 B
Python
|
from flask import Blueprint, Response, g # type: ignore
|
||
|
from typing import Dict, Any
|
||
|
|
||
|
from bemani.data import News
|
||
|
from bemani.frontend.app import loginrequired, render_react
|
||
|
from bemani.frontend.templates import templates_location
|
||
|
from bemani.frontend.static import static_location
|
||
|
|
||
|
home_pages = Blueprint(
|
||
|
'home_pages',
|
||
|
__name__,
|
||
|
template_folder=templates_location,
|
||
|
static_folder=static_location,
|
||
|
)
|
||
|
|
||
|
|
||
|
def format_news(news: News) -> Dict[str, Any]:
|
||
|
return {
|
||
|
'timestamp': news.timestamp,
|
||
|
'title': news.title,
|
||
|
'body': news.body,
|
||
|
}
|
||
|
|
||
|
|
||
|
@home_pages.route('/')
|
||
|
@loginrequired
|
||
|
def viewhome() -> Response:
|
||
|
return render_react(
|
||
|
g.config.get('name', 'e-AMUSEMENT Network'),
|
||
|
'home.react.js',
|
||
|
{
|
||
|
'news': [format_news(news) for news in g.data.local.network.get_all_news()],
|
||
|
}
|
||
|
)
|