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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
1"""Resource CRUD controller (package facade).
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"""
8from __future__ import annotations
10from abc import ABC
11from typing import Generic
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
24__all__ = ["ResourceController", "ResourceMeta", "T"]
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.
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
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 """