From 2b359ce1c70070bd86b97da4e1a9376ea80695a2 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 10 Nov 2020 17:19:14 -0500 Subject: [PATCH] Move rest_api_server_error() to utilities.api --- netbox/netbox/middleware.py | 4 ++-- netbox/utilities/api.py | 20 ++++++++++++++++++++ netbox/utilities/views.py | 21 ++------------------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/netbox/netbox/middleware.py b/netbox/netbox/middleware.py index 5ee70c3ad..566d46eee 100644 --- a/netbox/netbox/middleware.py +++ b/netbox/netbox/middleware.py @@ -8,8 +8,8 @@ from django.http import Http404, HttpResponseRedirect from django.urls import reverse from extras.context_managers import change_logging -from utilities.api import is_api_request -from utilities.views import server_error, rest_api_server_error +from utilities.api import is_api_request, rest_api_server_error +from utilities.views import server_error class LoginRequiredMiddleware(object): diff --git a/netbox/utilities/api.py b/netbox/utilities/api.py index 958cdf9a3..09cc7004b 100644 --- a/netbox/utilities/api.py +++ b/netbox/utilities/api.py @@ -1,4 +1,10 @@ +import platform +import sys + +from django.conf import settings +from django.http import JsonResponse from django.urls import reverse +from rest_framework import status from rest_framework.utils import formatting from netbox.api.exceptions import SerializerNotFound @@ -50,3 +56,17 @@ def get_view_name(view, suffix=None): name += ' ' + suffix return name + + +def rest_api_server_error(request, *args, **kwargs): + """ + Handle exceptions and return a useful error message for REST API requests. + """ + type_, error, traceback = sys.exc_info() + data = { + 'error': str(error), + 'exception': type_.__name__, + 'netbox_version': settings.VERSION, + 'python_version': platform.python_version(), + } + return JsonResponse(data, status=status.HTTP_500_INTERNAL_SERVER_ERROR) diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index 399a0a5a8..d328d91e4 100644 --- a/netbox/utilities/views.py +++ b/netbox/utilities/views.py @@ -6,20 +6,18 @@ from copy import deepcopy from django.conf import settings from django.contrib import messages -from django.contrib.auth.decorators import login_required -from django.contrib.contenttypes.models import ContentType from django.contrib.auth.mixins import AccessMixin +from django.contrib.contenttypes.models import ContentType from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured, ObjectDoesNotExist, ValidationError from django.db import transaction, IntegrityError from django.db.models import ManyToManyField, ProtectedError from django.forms import Form, ModelMultipleChoiceField, MultipleHiddenInput, Textarea -from django.http import HttpResponse, HttpResponseServerError, JsonResponse +from django.http import HttpResponse, HttpResponseServerError from django.shortcuts import get_object_or_404, redirect, render from django.template import loader from django.template.exceptions import TemplateDoesNotExist from django.urls import reverse from django.urls.exceptions import NoReverseMatch -from django.utils.decorators import method_decorator from django.utils.html import escape from django.utils.http import is_safe_url from django.utils.safestring import mark_safe @@ -27,7 +25,6 @@ from django.views.decorators.csrf import requires_csrf_token from django.views.defaults import ERROR_500_TEMPLATE_NAME from django.views.generic import View from django_tables2 import RequestConfig -from rest_framework import status from extras.models import CustomField, ExportTemplate from utilities.exceptions import AbortTransaction @@ -1373,17 +1370,3 @@ def server_error(request, template_name=ERROR_500_TEMPLATE_NAME): 'netbox_version': settings.VERSION, 'python_version': platform.python_version(), })) - - -def rest_api_server_error(request, *args, **kwargs): - """ - Handle exceptions and return a useful error message for REST API requests. - """ - type_, error, traceback = sys.exc_info() - data = { - 'error': str(error), - 'exception': type_.__name__, - 'netbox_version': settings.VERSION, - 'python_version': platform.python_version(), - } - return JsonResponse(data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)