Перейти к основному содержимому

Справочник API

Добавлено в 1.0.1

Ручной справочник публичных экспортов. Импортируйте из подпакетов, не из самого 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.

АтрибутТипПо умолчанию
optionslist[AdminOption][RowActionsOption()]
chassis_settingsSettingsSettings()
chassis_link_first_columnboolFalse
change_list_templatestradmin/chassis/change_list.html
change_form_templatestradmin/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.

КлассОбязательные параметры
SearchOptionfields
FiltersOptionfields
DateHierarchyOptionfield
FieldTabsOptionfield, choices
ForeignKeyTabsOptiongroups или field+model
ForeignKeyTabGroupOptionfield, model
BadgeFieldsOptionfields
PrettyJsonOptionfields
DecimalAmountOptionfields
RowActionsOptionactions необязателен
RowActionOptionaction_type, label, color, icon_class
ListActionsOptionactions
ListActionOptionurl_name, label
ObjectActionsOptionactions
RelatedEntitiesOptionsections
RelatedEntityOptionslug, title, get_items_method, table
TableOptioncolumns
TableColumnOptionfield, label
TableActionOptionurl_name, label, icon_class
TableActionUrlKwargOptionname, value
ImportOptionpermission
ExportOptionpermission
Settingsвсе необязательные
PermissionOptionapp_label, model, codename, name
AdminPageGroupOptionslug, label, icon_class
SidebarSectionOptionslug, label, icon_class, items
SidebarModelItemOptionmodel
SidebarPageItemOptionpage_slug
SidebarLinkOptionslug, 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 взаимоисключающие. См. Объектные действия.

Помечает classmethod ModelAdmin как провайдер связанной таблицы. Сигнатура: (cls, request, obj) -> QuerySet | Sequence.

Страницы

from django_chassis.views import ...

КлассДоступ
AdminPageабстрактная база
PermissionAdminPagepermission: PermissionOption, начинается с view_
PersonalAdminPageавторизованный staff; без групп navbar/dashboard
SuperuserAdminPageактивный суперпользователь
AdminInformationPageструктурированные секции / alerts / timelines
AdminObjectPage[T]маршруты списка/объекта плюс объектные действия

Компоненты dashboard

from django_chassis.components import ...

КлассРеализовать
DashboardComponentas_dto() (абстрактный)
DashboardMetricget_value()
DashboardChartget_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Значения
RowActionTypeview, change, delete, history
RowActionDisplayicon, button
TabDisplaybuttons, select
PermissionCheckgroup_only, user_has_perm
ImportFormatJSON, XML
ExportFormatJSON, XML, CSV, XLSX
ImportBackend / ExportBackendPYTHON_QUEUE, INLINE, CELERY
DashboardBlockTypealerts, metrics, actions, metrics_and_actions, chart
DashboardComponentStatusactive, disabled, hidden, error
DashboardMetricResultTypeодно значение / таблица / stacked
ButtonColorprimary, secondary, success, danger, …

См. также