Files
api-copp/web/main.py
2026-03-23 21:28:10 +05:00

36 lines
1.1 KiB
Python

import flet as ft
from view import ViewsHendler
import designer as ds
from info import AuthService
async def main(page: ft.Page):
page.title = "COPP"
page.bgcolor = ds.clolors.background
auth = AuthService(page)
_PUBLIC_ROUTES = {"/login"}
def route_change(e: ft.RouteChangeEvent):
page.run_task(_guarded_route_change, page.route)
async def _guarded_route_change(route: str):
if route not in _PUBLIC_ROUTES and not await auth.is_authenticated():
await page.push_route("/login")
return
page.views.clear()
view = ViewsHendler(page).get(route)
if view:
page.views.append(view)
else:
await page.push_route("/main")
page.update()
page.on_route_change = route_change
await page.push_route("/main")
# export_asgi_app=True — Flet отдаёт ASGI-объект вместо запуска встроенного сервера.
# Uvicorn из CMD в Dockerfile подхватывает этот объект через «main:app».
app = ft.run(main, export_asgi_app=True, assets_dir="assets")