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

Справочник 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, chassis_brand_favicon_static_path, sidebar_items, chassis_page_classes, chassis_permission_options, chassis_modal_classes, 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_modal_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().

Модуль пользователей: Пользователи и доступ.

Добавлено в 1.0.21

Полные логотипы сохраняют исходные пропорции. Если название входит в изображение, задайте chassis_brand_name = None. Для отдельного квадратного favicon используйте chassis_brand_favicon_static_path или BrandDTO.favicon_static_path; при None используется логотип.

ReadOnlyAdminMixin / NoDeleteAdminMixin​

Запрещают add/change/delete или только delete.

Виджеты форм​

CopyableTextInput​

Добавлено в 1.0.18

from django_chassis.widgets import CopyableTextInput

Редактируемое текстовое поле с кнопкой копирования и настраиваемым prefix. Префикс включается в копируемый текст, но не отправляется в значении формы. Подробнее: виджеты форм.

Options​

Все классы option — frozen dataclass. Назначение полей, значения по умолчанию, валидация и регион UI: каталог options.

КлассОбязательные параметры
SearchOptionfields
FiltersOptionfields
DateHierarchyOptionfield
FieldTabsOptionfield, choices
ForeignKeyTabsOptiongroups или field+model
ForeignKeyTabGroupOptionfield, model
BadgeFieldsOptionfields
CopyableFieldsOptionfields
PrettyJsonOptionfields
DecimalAmountOptionfields
RelatedFieldsOptionfields
RelatedFieldOptionfield, label; необязательные help_text, empty_value_display
RelatedCollectionsOptioncollections
RelatedCollectionOptionmodel, foreign_key, value_field, label; необязательные field_class, widget_attrs, save_method
RowActionsOptionactions необязателен
RowActionOptionaction_type, label, color, icon_class
ListActionsOptionactions
ListActionOptionurl_name, label
ObjectActionsOptionactions необязателен, dropdown необязателен
ObjectActionsDropdownOptionactions
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, icon_color

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,
icon_class=None,
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]маршруты списка/объекта плюс объектные действия
UserCreationAdminPageстраница модуля пользователей; свои права страницы/доступа плюс User view/add/change

Компоненты 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, live_refresh_interval_seconds=None)

DashboardChartDataDTO(value, period_label, series, unit=None) DashboardChartSeriesDTO(label, color, points) DashboardChartPointDTO(label, value) — value это Decimal.

Модальные компоненты​

Добавлено в 1.0.7

AdminModal задаёт ленивый GET/POST fragment со своей реализацией has_view_permission(). PermissionAdminModal получает эту проверку из зарегистрированного PermissionOption. Оба класса экспортируются из django_chassis.components; см. Модальные компоненты.

AdminModal.max_width необязательно ограничивает окно CSS-длиной с учётом размера viewport.

DTO и renderer-ы представления​

Добавлено в 1.0.9

AdminTreeDTO(nodes, label, empty_text) и AdminTreeNodeDTO(label, children=[], icon_class=None, badge=None) экспортируются из django_chassis.dto. render_admin_tree(tree=...) и render_field_help(label=..., help_text=...) экспортируются из django_chassis.renderers.

Сервисы​

Публичные классы сервисов явно экспортируются пакетом, поэтому их можно импортировать из django_chassis.services:

from django_chassis.services import DashboardService, TableService

AdminModalService регистрирует классы modal, публикует их защищённые URL и строит отфильтрованный по правам контекст trigger.

Добавлено в 1.0.7

PaginationService.build_keyset(...) адаптирует cursor-pagination к тому же шаблонному контракту pages, result_count и локализованного object_name, что и PaginationService.build(...). Передайте текущий request, число результатов страницы, следующий cursor и имена параметров cursor, его истории и номера страницы. PaginationService.build(...) принимает необязательный base_url для ссылок на fragment endpoint, в том числе для пагинации modal.

Права​

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, WORKER (CELERY alias) Изменено в 1.0.19
DashboardBlockTypealerts, metrics, actions, metrics_and_actions, chart
DashboardComponentStatusactive, disabled, hidden, error
DashboardMetricResultTypeодно значение / таблица / stacked
ButtonColorprimary, secondary, success, danger, …

См. также​

API фоновых задач​

Добавлено в 1.0.19

WorkerProvider, WorkerTaskDTO, WorkerService: Background tasks.