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

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

2 

3from __future__ import annotations 

4 

5from typing import TYPE_CHECKING 

6 

7if TYPE_CHECKING: 

8 from lexigram.admin.controllers.resource import ResourceController 

9 

10 

11 

12class ResourceRouteMixin: 

13 """Route registration.""" 

14 

15 def get_routes(self) -> list: 

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

17 from starlette.routing import Route 

18 

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

20 

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 ]