Files
api-copp/web/view.py
2026-03-31 18:10:12 +05:00

43 lines
1.5 KiB
Python

import flet as ft
from views import main_view, login_view, reg_view, user_view, take_test_view, poll_view, my_tests_view, response_view, profile_view
PUBLIC_ROUTES = {"/login", "/reg"}
# Маршруты вида /prefix/{url_key}/... — первый сегмент после prefix = url_key
PROTECTED_PREFIXES = (
"/user/",
"/take_test/",
"/poll/",
"/my_tests/",
"/response/",
"/profile/",
)
def resolve_view(page: ft.Page, route: str) -> list[ft.View] | None:
if route == "/login":
return [login_view.LoginView(page)]
elif route == "/reg":
return [reg_view.RegView(page)]
elif route == "/main":
return [main_view.MainView()]
elif route.startswith("/user/"):
return [user_view.UserView(page)]
elif route.startswith("/take_test/"):
return [take_test_view.TakeTestView(page)]
elif route.startswith("/my_tests/"):
return [my_tests_view.MyTestsView(page)]
elif route.startswith("/poll/"):
# /poll/{url_key}/{poll_id}
parts = route.strip("/").split("/")
poll_id = parts[-1] if len(parts) >= 3 else ""
return [poll_view.PollView(page, poll_id)]
elif route.startswith("/response/"):
# /response/{url_key}/{response_id}
parts = route.strip("/").split("/")
response_id = parts[-1] if len(parts) >= 3 else ""
return [response_view.ResponseView(page, response_id)]
elif route.startswith("/profile/"):
return [profile_view.ProfileView(page)]
return None