Определите, какое исключение следует поднять в Django Storage

Я расширил класс Django Storage для интеграции проверки на вирусы по требованию. Мне нужно поднять исключение, если загруженный файл содержит вирус. Пользователь может загрузить файл из Django Admin или из API интерфейса (Django Rest Framework).

Мне нужно поднять Django Rest Framework APIException если пользователь загружает файл с помощью API или нужно поднять Django Exception если пользователь загружает файл из Django Admin.

Есть ли способ определить, как пользователь загружает файл, прежде чем поднять исключение?

Заранее спасибо.

Пожалуйста, найдите приведенный ниже фрагмент кода.

# Storage.save()
def save(self, name, content, max_length=None):
    """ Integrate clamd for scanning. """
    cd = clamd.ClamdUnixSocket()
    try:
        scan_results = cd.instream(content)

        if scan_results['stream'][0] == 'FOUND':
            # I need to identify the source of the request before raise the exception

        return super().save(name, content, max_length)

    except clamd.BufferTooLongError:
        return logger.warning("Input file's buffer value is exceeding the allow limit.")
    except clamd.ConnectionError:
        return logger.warning("ClamAV connection cannot be established.")
Вернуться на верх