Spec-Zone.ru › Wagtail 3

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

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

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

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

Примечание

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

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

Примечание

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

# mypackage/views.py
from wagtail.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.log_actions предоставляет менеджер контекста для упрощения кода, который регистрирует большое количество действий, таких как скрипты импорта:

from wagtail.log_actions import LogContext

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

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

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

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

Если ваши собственные модели имеют сложные требования к отчётам, которые делали бы ModelLogEntry неподходящими, вы можете настроить их для регистрации в своей собственной модели журнала; это делается путём наследования абстрактной модели wagtail.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)

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

Spec-Zone.ru

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