mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Add logging output to API viewsets
This commit is contained in:
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
### Available Loggers
|
### Available Loggers
|
||||||
|
|
||||||
| Name | Function |
|
| Name | Function |
|
||||||
|------------------|----------|
|
|----------------------|----------|
|
||||||
| `netbox.views.*` | Views which handle business logic for the web UI |
|
| `netbox.views.*` | Views which handle business logic for the web UI |
|
||||||
|
| `netbox.api.views.*` | Views which handle business logic for the web UI |
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import logging
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
@ -294,25 +295,35 @@ class ModelViewSet(_ModelViewSet):
|
|||||||
return super().get_serializer(*args, **kwargs)
|
return super().get_serializer(*args, **kwargs)
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
|
logger = logging.getLogger('netbox.api.views.ModelViewSet')
|
||||||
|
|
||||||
# If 'brief' has been passed as a query param, find and return the nested serializer for this model, if one
|
# If 'brief' has been passed as a query param, find and return the nested serializer for this model, if one
|
||||||
# exists
|
# exists
|
||||||
request = self.get_serializer_context()['request']
|
request = self.get_serializer_context()['request']
|
||||||
if request.query_params.get('brief', False):
|
if request.query_params.get('brief'):
|
||||||
|
logger.debug("Request is for 'brief' format; initializing nested serializer")
|
||||||
try:
|
try:
|
||||||
return get_serializer_for_model(self.queryset.model, prefix='Nested')
|
serializer = get_serializer_for_model(self.queryset.model, prefix='Nested')
|
||||||
|
logger.debug(f"Using serializer {serializer}")
|
||||||
|
return serializer
|
||||||
except SerializerNotFound:
|
except SerializerNotFound:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Fall back to the hard-coded serializer class
|
# Fall back to the hard-coded serializer class
|
||||||
|
logger.debug(f"Using serializer {self.serializer_class}")
|
||||||
return self.serializer_class
|
return self.serializer_class
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
logger = logging.getLogger('netbox.api.views.ModelViewSet')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
except ProtectedError as e:
|
except ProtectedError as e:
|
||||||
models = ['{} ({})'.format(o, o._meta) for o in e.protected_objects.all()]
|
models = [
|
||||||
|
'{} ({})'.format(o, o._meta) for o in e.protected_objects.all()
|
||||||
|
]
|
||||||
msg = 'Unable to delete object. The following dependent objects were found: {}'.format(', '.join(models))
|
msg = 'Unable to delete object. The following dependent objects were found: {}'.format(', '.join(models))
|
||||||
|
logger.warning(msg)
|
||||||
return self.finalize_response(
|
return self.finalize_response(
|
||||||
request,
|
request,
|
||||||
Response({'detail': msg}, status=409),
|
Response({'detail': msg}, status=409),
|
||||||
|
Reference in New Issue
Block a user