Перейти к содержанию

Исключения

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

AbortRequest

InfraVision предоставляет несколько общих представлений и наборов представлений REST API, которые облегчают создание, изменение и удаление объектов, как по отдельности, так и массово. При определённых условиях может быть желательно, чтобы плагин прерывал эти действия и корректно отменял запрос, сообщая об ошибке конечному пользователю или потребителю API.

Например, плагин может запретить создание площадки с запрещённым именем, подключив приёмник к сигналу Django pre_save для модели Site:

from django.db.models.signals import pre_save
from django.dispatch import receiver
from dcim.models import Site
from utilities.exceptions import AbortRequest

PROHIBITED_NAMES = ('foo', 'bar', 'baz')

@receiver(pre_save, sender=Site)
def test_abort_request(instance, **kwargs):
    if instance.name.lower() in PROHIBITED_NAMES:
        raise AbortRequest(f"Site name can't be {instance.name}!")

При вызове AbortRequest должно быть предоставлено сообщение об ошибке. Оно будет передано пользователю и должно чётко объяснять причину отмены запроса, а также возможные способы исправления.

Совет

Это исключение предназначено для обработки сложной логики оценки и должно использоваться экономно. Для простой валидации объектов (как в приведённом примере) рассмотрите использование правил пользовательской валидации.