Coverage for src/lexigram/admin/controllers/resource/routes.py: 0%

23 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 23:18 +0800

1"""Route registration for the resource controller.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any 

6 

7from lexigram.admin.controllers.resource.meta import ResourceMeta 

8 

9 

10class ResourceRouteMixin: 

11 """Route registration.""" 

12 

13 # Host attributes provided by sibling mixins on ResourceController. 

14 meta: ResourceMeta 

15 

16 list_view: Any 

17 create_form: Any 

18 create: Any 

19 bulk_action: Any 

20 bulk_delete_confirm: Any 

21 bulk_purge_confirm: Any 

22 bulk_restore_confirm: Any 

23 import_example: Any 

24 import_report: Any 

25 detail: Any 

26 edit_form: Any 

27 delete_confirm: Any 

28 update: Any 

29 delete: Any 

30 

31 def get_routes(self) -> list: 

32 """Get Starlette routes for this controller.""" 

33 from starlette.routing import Route 

34 

35 prefix = f"/{self.meta.name}" 

36 

37 return [ 

38 Route(prefix, self.list_view, methods=["GET"]), 

39 Route(f"{prefix}/create", self.create_form, methods=["GET"]), 

40 Route(prefix, self.create, methods=["POST"]), 

41 Route(f"{prefix}/bulk", self.bulk_action, methods=["POST"]), 

42 Route( 

43 f"{prefix}/bulk-delete-confirm", 

44 self.bulk_delete_confirm, 

45 methods=["GET"], 

46 ), 

47 Route( 

48 f"{prefix}/bulk-purge-confirm", 

49 self.bulk_purge_confirm, 

50 methods=["GET"], 

51 ), 

52 Route( 

53 f"{prefix}/bulk-restore-confirm", 

54 self.bulk_restore_confirm, 

55 methods=["GET"], 

56 ), 

57 Route(f"{prefix}/import-example", self.import_example, methods=["GET"]), 

58 Route(f"{prefix}/import-report", self.import_report, methods=["GET"]), 

59 Route(f"{prefix}/{{id}}", self.detail, methods=["GET"]), 

60 Route(f"{prefix}/{{id}}/edit", self.edit_form, methods=["GET"]), 

61 Route( 

62 f"{prefix}/{{id}}/delete-confirm", self.delete_confirm, methods=["GET"] 

63 ), 

64 Route(f"{prefix}/{{id}}", self.update, methods=["PUT", "POST"]), 

65 Route(f"{prefix}/{{id}}", self.delete, methods=["DELETE"]), 

66 ]