Coverage for src/lexigram/admin/controllers/resource/__init__.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 14:56 +0800

1"""Resource CRUD controller (package facade). 

2 

3Provides a base controller class for handling resource CRUD with 

4HTMX support, automatic pagination, filtering, and bulk actions. 

5Method implementations live in sibling mixin modules. 

6""" 

7 

8from __future__ import annotations 

9 

10from abc import ABC 

11from typing import Generic 

12 

13from lexigram.admin.controllers.resource.bulk import ResourceBulkMixin 

14from lexigram.admin.controllers.resource.core import ResourceCoreMixin 

15from lexigram.admin.controllers.resource.detail import ResourceDetailMixin 

16from lexigram.admin.controllers.resource.imports import ResourceImportMixin 

17from lexigram.admin.controllers.resource.list import ResourceListMixin 

18from lexigram.admin.controllers.resource.meta import ResourceMeta, T 

19from lexigram.admin.controllers.resource.mutation import ResourceMutationMixin 

20from lexigram.admin.controllers.resource.render import ResourceRenderMixin 

21from lexigram.admin.controllers.resource.routes import ResourceRouteMixin 

22from lexigram.di.decorators import inject 

23 

24__all__ = ["ResourceController", "ResourceMeta", "T"] 

25 

26 

27@inject 

28class ResourceController( 

29 ResourceCoreMixin, 

30 ResourceListMixin, 

31 ResourceDetailMixin, 

32 ResourceMutationMixin, 

33 ResourceBulkMixin, 

34 ResourceImportMixin, 

35 ResourceRenderMixin, 

36 ResourceRouteMixin, 

37 ABC, 

38 Generic[T], 

39): 

40 """Base controller for resource CRUD operations. 

41 

42 Provides standard CRUD endpoints with HTMX support: 

43 - GET /{resource} - List with pagination/filtering 

44 - GET /{resource}/{id} - View single resource 

45 - GET /{resource}/create - Create form 

46 - POST /{resource} - Create resource 

47 - GET /{resource}/{id}/edit - Edit form 

48 - PUT /{resource}/{id} - Update resource 

49 - DELETE /{resource}/{id} - Delete resource 

50 - POST /{resource}/bulk - Bulk actions 

51 

52 Subclasses should implement: 

53 - get_data_source() - Return DataSourceProtocol for this resource 

54 - get_columns() - Return columns for list view 

55 - render_list() - Render list view HTML 

56 - render_detail() - Render detail view HTML 

57 - render_form() - Render create/edit form HTML 

58 """