from flask import Blueprint, Response 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 from bemani.frontend.types import g 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()], } )