Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- from django.http import JsonResponse
- from core import http_status
- from sentry_sdk import capture_exception
- class LoyalManException(Exception):
- def __init__(
- self,
- message: str,
- status_code: int = http_status.HTTP_500_INTERNAL_SERVER_ERROR,
- details=None,
- code: int = None,
- previous=None
- ):
- super().__init__(message)
- self._code = code
- self._status_code = status_code
- self._message = message
- self._details = details
- self._previous = previous
- # TODO: fix issues with sentry reporting using sentry_sdk
- sentry_data = {
- "code": self.code,
- "status_code": self.status_code,
- "message": self.message,
- "details": self.details,
- "exception": self.previous
- }
- capture_exception(self)
- logging.getLogger("logger").error(self.message, {"extra": sentry_data})
- @property
- def code(self) -> int:
- return self._code
- @property
- def status_code(self) -> int:
- return self._status_code
- @property
- def message(self) -> str:
- return self._message
- @property
- def details(self):
- return self._details
- @property
- def previous(self):
- return self._previous
- @property
- def payload(self) -> dict:
- result = {
- 'message': self.message,
- }
- if self.code:
- result['code'] = self.code
- if self.details:
- result['details'] = self.details
- return result
- def create_response(self):
- logging.getLogger('logger').error(self.message)
- return JsonResponse(self.payload, status=self.status_code)
- class LoyalManValidationException(Exception):
- def __init__(
- self,
- data: dict,
- status_code: int = http_status.HTTP_400_BAD_REQUEST,
- code: int = None,
- previous=None
- ):
- self._code = code
- self._status_code = status_code
- self._data = data
- self._previous = previous
- capture_exception(self)
- logging.getLogger("logger").error(self._data)
- @property
- def code(self) -> int:
- return self._code
- @property
- def status_code(self) -> int:
- return self._status_code
- @property
- def previous(self):
- return self._previous
- @property
- def payload(self) -> dict:
- return self._data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement