Admin site
ChassisAdminSiteMixin подключает возможности Chassis к Django AdminSite.
Приложение-владелец экземпляра объявляет бренд, навигацию, страницы и
раскладку dashboard.
Минимальный site
from django.contrib.admin import AdminSite
from django.utils.translation import gettext_lazy as _
from django_chassis.mixins import ChassisAdminSiteMixin
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
chassis_brand_name = _('My project')
chassis_brand_logo_static_path = 'img/logo.png'
admin_site = CustomAdminSite(name='admin')
Подключайте admin_site.urls, а не admin.site.urls.
Таблицы полей site-level option (Sidebar*, AdminPageGroupOption,
PermissionOption): каталог options.
Атрибуты сайта
| Атрибут | Назначение |
|---|---|
chassis_brand_name | Заголовок бренда в оболочке |
chassis_brand_logo_static_path | Static-путь к логотипу и favicon. По умолчанию admin/chassis/icon.svg |
sidebar_items | Кортеж SidebarLinkOption / SidebarSectionOption |
chassis_page_classes | Подклассы AdminPage |
chassis_permission_options | Дополнительные PermissionOption |
dashboard_component_classes | Классы компонентов dashboard |
dashboard_blocks | Раскладка DashboardBlockDTO |
navbar_button_classes | Дополнительные кнопки navbar |
user_menu_item_classes | Дополнительные пункты user menu |
show_recent_actions | Показывать recent actions Django на индексе |
include_users_module | Зарегистрировать Users/Groups, сессии, попытки входа, журнал, страницы профиля |
include_users_sidebar | Вставить стандартный раздел «Пользователи и группы» |
Хуки сервисов
Переопределите, если нужна своя реализация сервиса:
get_dashboard_service()get_navbar_service()get_chassis_page_service()get_sidebar_service()get_chassis_brand()/get_chassis_brand_badge()get_chassis_footer_context()
Миксин также подключает модуль пользователей, пока не задано
include_users_module = False.
Сторонние ModelAdmin
Изменено в 1.0.2Сайт оборачивает обычные сторонние ModelAdmin в ChassisAdminMixin, чтобы они
получили шаблоны Chassis и row actions по умолчанию. Модели всё равно
регистрируются на экземпляре Chassis site.
Сигнатура register() использует общий тип Django Model, поэтому приложения
могут переопределять метод без предупреждений type checker о сужении override.
ChassisAdminSiteMixin остаётся чистым runtime-миксином; проектный AdminSite
идёт следующим классом в MRO и получает делегированные вызовы Django.
Шаблон индекса
index_template по умолчанию — admin/chassis/dashboard/index.html. Если
компонентов dashboard нет, страница всё равно рисует оболочку Chassis.
Проверки при создании
Конструктор миксина:
- регистрирует каждый
PermissionOptionизchassis_permission_options - требует, чтобы каждый класс страницы объявлял ровно один контракт
доступа (
PermissionAdminPage,PersonalAdminPageилиSuperuserAdminPage) - отклоняет
PersonalAdminPage, которые входят в группы navbar или dashboard - требует, чтобы
PermissionAdminPage.permissionбыло правомview_*
Ошибки поднимают ImproperlyConfigured при создании сайта, а не на первом
запросе.