Coverage for src/lexigram/admin/controllers/resource/routes.py: 100%
7 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
1"""Route registration for the resource controller."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7if TYPE_CHECKING:
8 from lexigram.admin.controllers.resource import ResourceController
12class ResourceRouteMixin:
13 """Route registration."""
15 def get_routes(self) -> list:
16 """Get Starlette routes for this controller."""
17 from starlette.routing import Route
19 prefix = f"/{self.meta.name}"
21 return [
22 Route(prefix, self.list_view, methods=["GET"]),
23 Route(f"{prefix}/create", self.create_form, methods=["GET"]),
24 Route(prefix, self.create, methods=["POST"]),
25 Route(f"{prefix}/bulk", self.bulk_action, methods=["POST"]),
26 Route(
27 f"{prefix}/bulk-delete-confirm",
28 self.bulk_delete_confirm,
29 methods=["GET"],
30 ),
31 Route(
32 f"{prefix}/bulk-purge-confirm",
33 self.bulk_purge_confirm,
34 methods=["GET"],
35 ),
36 Route(
37 f"{prefix}/bulk-restore-confirm",
38 self.bulk_restore_confirm,
39 methods=["GET"],
40 ),
41 Route(f"{prefix}/import-example", self.import_example, methods=["GET"]),
42 Route(f"{prefix}/import-report", self.import_report, methods=["GET"]),
43 Route(f"{prefix}/{{id}}", self.detail, methods=["GET"]),
44 Route(f"{prefix}/{{id}}/edit", self.edit_form, methods=["GET"]),
45 Route(
46 f"{prefix}/{{id}}/delete-confirm", self.delete_confirm, methods=["GET"]
47 ),
48 Route(f"{prefix}/{{id}}", self.update, methods=["PUT", "POST"]),
49 Route(f"{prefix}/{{id}}", self.delete, methods=["DELETE"]),
50 ]