188 lines
6.3 KiB
Python
188 lines
6.3 KiB
Python
import logging
|
|
from asyncio import get_event_loop
|
|
|
|
import sys
|
|
|
|
from pathlib import Path
|
|
|
|
from rio import App, Theme, Color, Font, ComponentPage, Session
|
|
from from_root import from_root
|
|
|
|
from src.ez_lan_manager import pages, init_services
|
|
from src.ez_lan_manager.helpers.LoggedInGuard import logged_in_guard, not_logged_in_guard, team_guard
|
|
from src.ez_lan_manager.services.DatabaseService import NoDatabaseConnectionError
|
|
from src.ez_lan_manager.types.SessionStorage import SessionStorage
|
|
|
|
logger = logging.getLogger("EzLanManager")
|
|
|
|
if __name__ == "__main__":
|
|
theme = Theme.from_colors(
|
|
primary_color=Color.from_hex("ffffff"),
|
|
secondary_color=Color.from_hex("018786"),
|
|
neutral_color=Color.from_hex("1e1e1e"),
|
|
background_color=Color.from_hex("121212"),
|
|
hud_color=Color.from_hex("02dac5"),
|
|
text_color=Color.from_hex("018786"),
|
|
mode="dark",
|
|
corner_radius_small=0,
|
|
corner_radius_medium=0,
|
|
corner_radius_large=0,
|
|
font=Font(from_root("src/ez_lan_manager/assets/fonts/joystix.otf"))
|
|
)
|
|
services = init_services()
|
|
|
|
lan_info = services[2].get_lan_info()
|
|
|
|
async def on_session_start(session: Session) -> None:
|
|
await session.set_title(lan_info.name)
|
|
session.attach(SessionStorage())
|
|
|
|
async def on_app_start(a: App) -> None:
|
|
init_result = await a.default_attachments[3].init_db_pool()
|
|
if not init_result:
|
|
logger.fatal("Could not connect to database, exiting...")
|
|
sys.exit(1)
|
|
|
|
app = App(
|
|
name="EZ LAN Manager",
|
|
build=pages.BasePage,
|
|
pages=[
|
|
ComponentPage(
|
|
name="News",
|
|
url_segment="",
|
|
build=pages.NewsPage,
|
|
),
|
|
ComponentPage(
|
|
name="News",
|
|
url_segment="news",
|
|
build=pages.NewsPage,
|
|
),
|
|
ComponentPage(
|
|
name="Overview",
|
|
url_segment="overview",
|
|
build=lambda: pages.PlaceholderPage(placeholder_name="LAN Übersicht"),
|
|
),
|
|
ComponentPage(
|
|
name="BuyTicket",
|
|
url_segment="buy_ticket",
|
|
build=pages.BuyTicketPage,
|
|
),
|
|
ComponentPage(
|
|
name="SeatingPlan",
|
|
url_segment="seating",
|
|
build=pages.SeatingPlanPage,
|
|
),
|
|
ComponentPage(
|
|
name="Catering",
|
|
url_segment="catering",
|
|
build=pages.CateringPage,
|
|
),
|
|
ComponentPage(
|
|
name="Guests",
|
|
url_segment="guests",
|
|
build=pages.GuestsPage,
|
|
),
|
|
ComponentPage(
|
|
name="Tournaments",
|
|
url_segment="tournaments",
|
|
build=pages.TournamentsPage,
|
|
),
|
|
ComponentPage(
|
|
name="FAQ",
|
|
url_segment="faq",
|
|
build=pages.FaqPage,
|
|
),
|
|
ComponentPage(
|
|
name="RulesGTC",
|
|
url_segment="rules-gtc",
|
|
build=pages.RulesPage
|
|
),
|
|
ComponentPage(
|
|
name="Contact",
|
|
url_segment="contact",
|
|
build=pages.ContactPage,
|
|
),
|
|
ComponentPage(
|
|
name="Imprint",
|
|
url_segment="imprint",
|
|
build=pages.ImprintPage,
|
|
),
|
|
ComponentPage(
|
|
name="Register",
|
|
url_segment="register",
|
|
build=pages.RegisterPage,
|
|
guard=not_logged_in_guard
|
|
),
|
|
ComponentPage(
|
|
name="ForgotPassword",
|
|
url_segment="forgot-password",
|
|
build=pages.ForgotPasswordPage,
|
|
guard=not_logged_in_guard
|
|
),
|
|
ComponentPage(
|
|
name="EditProfile",
|
|
url_segment="edit-profile",
|
|
build=pages.EditProfilePage,
|
|
guard=logged_in_guard
|
|
),
|
|
ComponentPage(
|
|
name="Account",
|
|
url_segment="account",
|
|
build=pages.AccountPage,
|
|
guard=logged_in_guard
|
|
),
|
|
ComponentPage(
|
|
name="ManageNewsPage",
|
|
url_segment="manage-news",
|
|
build=pages.ManageNewsPage,
|
|
guard=team_guard
|
|
),
|
|
ComponentPage(
|
|
name="ManageUsersPage",
|
|
url_segment="manage-users",
|
|
build=pages.ManageUsersPage,
|
|
guard=team_guard
|
|
),
|
|
ComponentPage(
|
|
name="ManageCateringPage",
|
|
url_segment="manage-catering",
|
|
build=pages.ManageCateringPage,
|
|
guard=team_guard
|
|
),
|
|
ComponentPage(
|
|
name="ManageTournamentsPage",
|
|
url_segment="manage-tournaments",
|
|
build=pages.ManageTournamentsPage,
|
|
guard=team_guard
|
|
),
|
|
ComponentPage(
|
|
name="DbErrorPage",
|
|
url_segment="db-error",
|
|
build=pages.DbErrorPage,
|
|
)
|
|
],
|
|
theme=theme,
|
|
assets_dir=Path(__file__).parent / "assets",
|
|
default_attachments=services,
|
|
on_session_start=on_session_start,
|
|
on_app_start=on_app_start,
|
|
icon=from_root("src/ez_lan_manager/assets/img/favicon.png"),
|
|
meta_tags={
|
|
"robots": "INDEX,FOLLOW",
|
|
"description": f"Info und Verwaltungs-Seite der LAN Party '{lan_info.name} - {lan_info.iteration}'.",
|
|
"og:description": f"Info und Verwaltungs-Seite der LAN Party '{lan_info.name} - {lan_info.iteration}'.",
|
|
"keywords": "Gaming, Clan, Guild, Verein, Club, Einfach, Zocken, Gesellschaft, Videospiele, "
|
|
"Videogames, LAN, Party, EZ, LAN, Manager",
|
|
"author": "David Rodenkirchen",
|
|
"publisher": "EZ GG e.V.",
|
|
"copyright": "EZ GG e.V.",
|
|
"audience": "Alle",
|
|
"page-type": "Management Application",
|
|
"page-topic": "LAN Party",
|
|
"expires": "",
|
|
"revisit-after": "2 days"
|
|
}
|
|
)
|
|
|
|
sys.exit(app.run_as_web_server())
|