Spec-Zone.ru › Wagtail 2

Журнал аудита

Wagtail предоставляет механизм для ведения журнала действий, выполняемых над его объектами. Такие распространённые действия, как создание, обновление, удаление страниц, блокировка и разблокировка, планирование ревизий и изменения конфиденциальности автоматически регистрируются на уровне модели.

Админ-панель Wagtail использует записи журнала действий, чтобы предоставить всеобъемлющую и страницу-специфическую историю изменений. Она использует реестр «действий», которые обеспечивают дополнительный контекст для зарегистрированного действия.

Журнал аудита, управляющий историей страницы, заменяет страницу списка ревизий, но предоставляет фильтр для записей, специфичных для ревизий.

Примечание

Журнал аудита не заменяет ревизии.

Функцию wagtail.core.log_actions.log можно использовать для добавления ведения журнала в собственный код.

Примечание

При добавлении ведения журнала необходимо записывать действие или действия, которые происходят с объектом. Например, если пользователь создаёт и публикует страницу, должна быть запись «создание» и «публикация». Или, если пользователь копирует опубликованную страницу и выбирает сохранить её опубликованной, должна быть запись «копирование» и «публикация» для новой страницы.

# mypackage/views.py
from wagtail.core.log_actions import log

def copy_for_translation(page):
    # ...
    page.copy(log_action='mypackage.copy_for_translation')

def my_method(request, page):
    # ..
    # Manually log an action
    data = {
        'make': {'it': 'so'}
    }
    log(
        instance=page, action='mypackage.custom_action', data=data
    )

Изменено в версии 2.15: Добавлена функция log. Ранее ведение журнала реализовывалось только для страниц и вызывалось через метод PageLogEntry.objects.log_action.

Действия, регистрируемые Wagtail

Действие Примечания
wagtail.create Объект был создан
wagtail.edit Объект был изменён (для страниц, сохранён как черновик)
wagtail.delete Объект был удалён. Будет отображаться только в истории сайта для администраторов
wagtail.publish Страница была опубликована
wagtail.publish.schedule Черновик запланирован на публикацию
wagtail.publish.scheduled Черновик опубликован через команду управления publish_scheduled_pages
wagtail.schedule.cancel Планируемая публикация черновика отменена через «Отменить запланированную публикацию»
wagtail.unpublish Страница была снята с публикации
wagtail.unpublish.scheduled Страница снята с публикации через команду управления publish_scheduled_pages
wagtail.lock Страница была заблокирована
wagtail.unlock Страница была разблокирована
wagtail.moderation.approve Ревизия была одобрена для модерации
wagtail.moderation.reject Ревизия была отклонена
wagtail.rename Страница была переименована
wagtail.revert Страница была возвращена к предыдущему черновику
wagtail.copy Страница была скопирована в новое местоположение
wagtail.copy_for_translation Страница была скопирована в новый локаль для перевода
wagtail.move Страница была перемещена в новое местоположение
wagtail.reorder Изменено расположение страницы в иерархии по отношению к родительской странице
wagtail.view_restriction.create Страница была ограничена
wagtail.view_restriction.edit Обновлены ограничения страницы
wagtail.view_restriction.delete Ограничения страницы были удалены
wagtail.workflow.start Страница была отправлена на модерацию в рабочем процессе
wagtail.workflow.approve Черновик был одобрен на задаче рабочего процесса
wagtail.workflow.reject Черновик был отклонен, и запрошены изменения на задаче рабочего процесса
wagtail.workflow.resume Черновик был повторно отправлен в рабочий процесс
wagtail.workflow.cancel Рабочий процесс был отменён

Контекст журнала

Модуль wagtail.core.log_actions предоставляет менеджер контекста для упрощения кода, который регистрирует большое количество действий, таких как скрипты импорта:

from wagtail.core.log_actions import LogContext

with LogContext(user=User.objects.get(username='admin')):
    # ...
    log(page, 'wagtail.edit')
    # ...
    log(page, 'wagtail.publish')

Все вызовы log внутри блока будут затем присвоены указанному пользователю и получат общий UUID. Контекст журнала создаётся автоматически для представлений в админ-панели Wagtail.

Модели журнала

Журналы хранятся в базе данных с помощью моделей wagtail.core.models.PageLogEntry (для действий над экземплярами страницы) и wagtail.core.models.ModelLogEntry (для действий над другими моделями). Журналы страниц хранятся в собственной модели для обеспечения возможности фильтрации отчётов в соответствии с разрешениями текущего пользователя, что неэффективно с помощью общего внешнего ключа.

Если у собственных моделей есть сложные требования к отчётности, которые делают ModelLogEntry неподходящим, их можно настроить на регистрацию в собственной модели журнала; это делается путём наследования абстрактной модели wagtail.core.models.BaseLogEntry и регистрации этой модели с помощью метода register_model реестра журнала:

from myapp.models import Sprocket, SprocketLogEntry
# here SprocketLogEntry is a subclass of BaseLogEntry

@hooks.register('register_log_actions')
def sprocket_log_model(actions):
    actions.register_model(Sprocket, SprocketLogEntry)
  • Предыдущая Добавление новых типов задач
  • Следующая Настройка формы настроек учетной записи пользователя

Содержание страницы

  • Журнал аудита
    • Действия, регистрируемые Wagtail
    • Контекст журнала
    • Модели журнала

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/extending/audit_log.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API