43 lines
1.5 KiB
Python
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
|