Справочник API
Ручной справочник публичных экспортов. Импортируйте из подпакетов, не из
самого django_chassis.
from django_chassis.mixins import ChassisAdminMixin, ChassisAdminSiteMixin
from django_chassis.options import SearchOption, RowActionsOption
from django_chassis.components import DashboardMetric
from django_chassis.views import PermissionAdminPage
from django_chassis.decorators import object_action
Миксины
ChassisAdminMixin
from django_chassis.mixins import ChassisAdminMixin
Должен стоять перед ModelAdmin в MRO.
| Атрибут | Тип | По умолчанию |
|---|---|---|
options | list[AdminOption] | [RowActionsOption()] |
chassis_settings | Settings | Settings() |
chassis_link_first_column | bool | False |
change_list_template | str | admin/chassis/change_list.html |
change_form_template | str | admin/chassis/change_form.html |
См. ModelAdmin.
ChassisAdminSiteMixin
from django_chassis.mixins import ChassisAdminSiteMixin
Должен стоять перед AdminSite в MRO.
Ключевые атрибуты: chassis_brand_name, chassis_brand_logo_static_path,
sidebar_items, chassis_page_classes, chassis_permission_options,
dashboard_component_classes, dashboard_blocks, navbar_button_classes,
user_menu_item_classes, show_recent_actions, include_users_module,
include_users_sidebar.
Хуки: get_dashboard_service(), get_navbar_service(),
get_chassis_page_service(), get_sidebar_service(), get_sidebar_items(),
get_users_sidebar_section(), get_chassis_brand(),
get_chassis_brand_badge(), get_chassis_footer_context().
Модуль пользователей: Пользователи и доступ.
ReadOnlyAdminMixin / NoDeleteAdminMixin
Запрещают add/change/delete или только delete.
Options
Все классы option — frozen dataclass. Назначение полей, значения по умолчанию, валидация и регион UI: каталог options.
| Класс | Обязательные параметры |
|---|---|
SearchOption | fields |
FiltersOption | fields |
DateHierarchyOption | field |
FieldTabsOption | field, choices |
ForeignKeyTabsOption | groups или field+model |
ForeignKeyTabGroupOption | field, model |
BadgeFieldsOption | fields |
PrettyJsonOption | fields |
DecimalAmountOption | fields |
RowActionsOption | actions необязателен |
RowActionOption | action_type, label, color, icon_class |
ListActionsOption | actions |
ListActionOption | url_name, label |
ObjectActionsOption | actions |
RelatedEntitiesOption | sections |
RelatedEntityOption | slug, title, get_items_method, table |
TableOption | columns |
TableColumnOption | field, label |
TableActionOption | url_name, label, icon_class |
TableActionUrlKwargOption | name, value |
ImportOption | permission |
ExportOption | permission |
Settings | все необязательные |
PermissionOption | app_label, model, codename, name |
AdminPageGroupOption | slug, label, icon_class |
SidebarSectionOption | slug, label, icon_class, items |
SidebarModelItemOption | model |
SidebarPageItemOption | page_slug |
SidebarLinkOption | slug, label, icon_class, url_name |
ImportOption / ExportOption поднимают ValueError, если permission
пустой или если formats / filter_fields — пустой список.
Декораторы
object_action
from django_chassis.decorators import object_action
@object_action(
description,
*,
permission=None,
confirmation=None,
color=ButtonColor.PRIMARY,
condition=None,
condition_method=None,
)
condition и condition_method взаимоисключающие. См.
Объектные действия.
chassis_related_items
Помечает classmethod ModelAdmin как провайдер связанной таблицы.
Сигнатура: (cls, request, obj) -> QuerySet | Sequence.
Страницы
from django_chassis.views import ...
| Класс | Доступ |
|---|---|
AdminPage | абстрактная база |
PermissionAdminPage | permission: PermissionOption, начинается с view_ |
PersonalAdminPage | авторизованный staff; без групп navbar/dashboard |
SuperuserAdminPage | активный суперпользователь |
AdminInformationPage | структурированные секции / alerts / timelines |
AdminObjectPage[T] | маршруты списка/объекта плюс объектные действия |
Компоненты dashboard
from django_chassis.components import ...
| Класс | Реализовать |
|---|---|
DashboardComponent | as_dto() (абстрактный) |
DashboardMetric | get_value() |
DashboardChart | get_data() -> DashboardChartDataDTO |
DashboardAlert | видимость + сообщение |
DashboardAction | тело маршрутизируемого действия |
DashboardToggleAction | варианты true/false |
Общие поля: slug, label, order, status.
DashboardBlockDTO(slug, title, block_type, component_slugs, row=1, group='default', size=4, order=100, is_global=False)
DashboardChartDataDTO(value, period_label, series, unit=None)
DashboardChartSeriesDTO(label, color, points)
DashboardChartPointDTO(label, value) — value это Decimal.
Сервисы
Публичные классы сервисов явно экспортируются пакетом, поэтому их можно
импортировать из django_chassis.services:
from django_chassis.services import DashboardService, TableService
Права
from django_chassis.permissions import has_request_user_permission
has_request_user_permission(request, 'catalog.view_book') -> bool
Настройка: CHASSIS_PERMISSION_CHECK = 'group_only' | 'user_has_perm'.
Enum (выборочно)
| Enum | Значения |
|---|---|
RowActionType | view, change, delete, history |
RowActionDisplay | icon, button |
TabDisplay | buttons, select |
PermissionCheck | group_only, user_has_perm |
ImportFormat | JSON, XML |
ExportFormat | JSON, XML, CSV, XLSX |
ImportBackend / ExportBackend | PYTHON_QUEUE, INLINE, CELERY |
DashboardBlockType | alerts, metrics, actions, metrics_and_actions, chart |
DashboardComponentStatus | active, disabled, hidden, error |
DashboardMetricResultType | одно значение / таблица / stacked |
ButtonColor | primary, secondary, success, danger, … |