republisher/repub/web/publisher/pages/dashboard.py
Abel Luck 813f19f355
All checks were successful
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
buildbot/nix-effects Build done.
Refine publisher dashboard layout
2026-06-02 11:11:36 +02:00

67 lines
2 KiB
Python

from __future__ import annotations
from collections.abc import Awaitable, Callable
from typing import Any, cast
from datastar_py.quart import DatastarResponse
from quart import Quart, Response, redirect
from repub.web.app import _page_patch_response, _shim_page_response, render_publisher
RouteGuard = Callable[[Callable[..., Awaitable[Any]]], Callable[..., Awaitable[Any]]]
def register_publisher_dashboard_routes(
app: Quart,
*,
publisher_required: RouteGuard,
admin_required: RouteGuard,
) -> None:
@app.get("/publisher/")
@publisher_required
async def publisher_trailing_slash() -> Response:
return cast(Response, redirect("/publisher"))
@app.get("/publisher")
@publisher_required
async def publisher_home() -> Response:
return _shim_page_response(
current_path="/publisher", static_prefix="/publisher"
)
@app.post("/publisher")
@publisher_required
async def publisher_patch() -> DatastarResponse:
return await _page_patch_response(
app,
lambda _tab_id: render_publisher(
app,
current_path="/publisher",
path_prefix="/publisher",
),
)
@app.get("/admin/publisher/")
@admin_required
async def admin_publisher_trailing_slash() -> Response:
return cast(Response, redirect("/admin/publisher"))
@app.get("/admin/publisher")
@admin_required
async def admin_publisher_home() -> Response:
return _shim_page_response(
current_path="/admin/publisher",
static_prefix="/admin",
)
@app.post("/admin/publisher")
@admin_required
async def admin_publisher_patch() -> DatastarResponse:
return await _page_patch_response(
app,
lambda _tab_id: render_publisher(
app,
current_path="/admin/publisher",
path_prefix="/admin/publisher",
),
)