From bd886d918ef2adbabd16c61fdd2e47984e21dfd7 Mon Sep 17 00:00:00 2001 From: Paul McGoldrick Date: Thu, 28 Sep 2017 10:03:40 -0700 Subject: initial seed code commit VVP-5 Change-Id: I6560c87ef48a6d0d1fe8197c7c6439c7e6ad653f Signed-off-by: Paul McGoldrick --- .../utils/exception_message_factory.py | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 django/engagementmanager/utils/exception_message_factory.py (limited to 'django/engagementmanager/utils/exception_message_factory.py') diff --git a/django/engagementmanager/utils/exception_message_factory.py b/django/engagementmanager/utils/exception_message_factory.py new file mode 100755 index 0000000..6ea96f4 --- /dev/null +++ b/django/engagementmanager/utils/exception_message_factory.py @@ -0,0 +1,92 @@ +# +# ============LICENSE_START========================================== +# org.onap.vvp/engagementmgr +# =================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the “License”); +# you may not use this software except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +from django.core.exceptions import ObjectDoesNotExist +from django.core.management.base import CommandError +from engagementmanager.utils.vvp_exceptions import VvpObjectNotAvailable, \ + VvpGeneralException, VvpBadRequest, VvpConflict +from itsdangerous import SignatureExpired +from requests import ConnectionError +from rest_framework import status +from rest_framework.exceptions import MethodNotAllowed, NotAuthenticated, \ + PermissionDenied, NotAcceptable + + +class ExceptionMessageFactory: + messages_dictionary = { + ObjectDoesNotExist.__name__: {'msg': 'User or Password does not match', 'include_exception': False, + 'status': status.HTTP_404_NOT_FOUND}, + MethodNotAllowed.__name__: {'msg': 'Method not allowed: ', 'include_exception': True, + 'status': status.HTTP_405_METHOD_NOT_ALLOWED}, + NotAuthenticated.__name__: {'msg': 'You must authenticate in order to perform this action: ', + 'include_exception': True, 'status': status.HTTP_403_FORBIDDEN}, + SignatureExpired.__name__: {'msg': 'Signature expired for this token: ', 'include_exception': True, + 'status': status.HTTP_405_METHOD_NOT_ALLOWED}, + KeyError.__name__: {'msg': 'KeyError occurred over the backend.', 'include_exception': True, + 'include_additional_exc_str': True, 'status': status.HTTP_400_BAD_REQUEST}, + ValueError.__name__: {'msg': 'ValueError occurred over the backend: ', 'include_exception': True, + 'status': status.HTTP_500_INTERNAL_SERVER_ERROR}, + ConnectionError.__name__: {'msg': 'ConnectionError occurred over the backend: ', 'include_exception': True, + 'status': status.HTTP_500_INTERNAL_SERVER_ERROR}, + ImportError.__name__: {'msg': 'ImportError occurred over the backend: ', 'include_exception': True, + 'status': status.HTTP_500_INTERNAL_SERVER_ERROR}, + CommandError.__name__: {'msg': 'CommandError occurred over the backend: ', 'include_exception': True, + 'status': status.HTTP_500_INTERNAL_SERVER_ERROR}, + PermissionDenied.__name__: {'msg': 'PermissionDenied occurred over the backend: ', 'include_exception': True, + 'status': status.HTTP_401_UNAUTHORIZED}, + VvpObjectNotAvailable.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_410_GONE}, + NotAcceptable.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_403_FORBIDDEN}, + VvpGeneralException.__name__: {'msg': '', 'include_exception': True, + 'status': status.HTTP_500_INTERNAL_SERVER_ERROR}, + FileExistsError.__name__: {'msg': 'Not modified due to: ', 'include_exception': True, + 'status': status.HTTP_304_NOT_MODIFIED}, + VvpBadRequest.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_400_BAD_REQUEST}, + VvpConflict.__name__: {'msg': '', 'include_exception': True, 'status': status.HTTP_409_CONFLICT}, + Exception.__name__: {'msg': 'General error on backend: ', 'include_exception': True, + 'status': status.HTTP_500_INTERNAL_SERVER_ERROR}, + } + + def get_exception_message(self, exception): + if isinstance(exception, ObjectDoesNotExist): + result = self.messages_dictionary[ObjectDoesNotExist.__name__] + elif exception.__class__.__name__ in self.messages_dictionary: + result = self.messages_dictionary[exception.__class__.__name__] + else: + result = self.messages_dictionary[Exception.__name__] + + return result -- cgit 1.2.3-korg