/
creator
/
ecstasy
Обзор
Документация
Войти
/
creator
/
ecstasy
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ring_manager/api/decorators.py
24 строки
956 B
ig.rudenko
v 0.13.6
18 май 2023, 00:59
18 май 2023, 00:59
1e66556
Код
Авторство
О чём код?
from functools import wraps from rest_framework.response import Response from rest_framework import status from ..ring_manager import InvalidRingStructureError, RingStatusError from ..solutions import SolutionsPerformerError def ring_valid(handler): """ Декоратор перехватывает исключения «InvalidRingStructureError», «RingStatusError», «SolutionsPerformerError» которые могут быть вызваны функцией «handler», и возвращает ответ JSON с сообщением об ошибке и кодом состояния 500. """ @wraps(handler) def wrapper(*args, **kwargs): try: return handler(*args, **kwargs) except (InvalidRingStructureError, RingStatusError, SolutionsPerformerError) as error: return Response({"error": error.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return wrapper