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