/api/docs raises AttributeError #3079

Closed
opened 2025-12-29 18:25:26 +01:00 by adam · 0 comments
Owner

Originally created by @netsandbox on GitHub (Dec 19, 2019).

Environment

  • Python version: 3.6.9
  • NetBox version: 2.6.9

Just upgraded from 2.6.8 to 2.6.9 and found that the api docs are broken.
I think commit a22c7c15 is responsible for this.

Steps to Reproduce

  1. open api docs link

Expected Behavior

see api docs

Observed Behavior

Internal Server Error: /api/docs/

AttributeError at /api/docs/
'VirtualMachineSerializer' object has no attribute 'initial_data'

Request Method: GET
Request URL: https://netbox-t.linux.msys.net/api/docs/?format=openapi
Django Version: 2.2.9
Python Executable: /usr/bin/python3
Python Version: 3.6.9
Python Path: ['/', '/opt/netbox/netbox', '/usr/bin', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
Server time: Thu, 19 Dec 2019 16:23:39 +0000
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'cacheops',
 'corsheaders',
 'debug_toolbar',
 'django_filters',
 'django_tables2',
 'django_prometheus',
 'mptt',
 'rest_framework',
 'taggit',
 'taggit_serializer',
 'timezone_field',
 'circuits',
 'dcim',
 'ipam',
 'extras',
 'secrets',
 'tenancy',
 'users',
 'utilities',
 'virtualization',
 'drf_yasg',
 'django_rq']
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
 'django_prometheus.middleware.PrometheusBeforeMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'utilities.middleware.ExceptionHandlingMiddleware',
 'utilities.middleware.LoginRequiredMiddleware',
 'utilities.middleware.APIVersionMiddleware',
 'extras.middleware.ObjectChangeMiddleware',
 'django_prometheus.middleware.PrometheusAfterMiddleware')


Traceback:

File "/usr/local/lib/python3.6/dist-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.6/dist-packages/django/views/decorators/csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "/usr/local/lib/python3.6/dist-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.6/dist-packages/rest_framework/views.py" in dispatch
  495.             response = self.handle_exception(exc)

File "/usr/local/lib/python3.6/dist-packages/rest_framework/views.py" in handle_exception
  455.             self.raise_uncaught_exception(exc)

File "/usr/local/lib/python3.6/dist-packages/rest_framework/views.py" in dispatch
  492.             response = handler(request, *args, **kwargs)

File "/usr/local/lib/python3.6/dist-packages/drf_yasg/views.py" in get
  95.             schema = generator.get_schema(request, self.public)

File "/usr/local/lib/python3.6/dist-packages/drf_yasg/generators.py" in get_schema
  241.         endpoints = self.get_endpoints(request)

File "/usr/local/lib/python3.6/dist-packages/drf_yasg/generators.py" in get_endpoints
  316.             view = self.create_view(callback, method, request)

File "/usr/local/lib/python3.6/dist-packages/drf_yasg/generators.py" in create_view
  272.         view = self._gen.create_view(callback, method, request)

File "/usr/local/lib/python3.6/dist-packages/rest_framework/schemas/generators.py" in create_view
  363.         view = callback.cls(**getattr(callback, 'initkwargs', {}))

File "/opt/netbox/netbox/utilities/api.py" in __init__
  324.                 serializer = get_serializer_for_model(cls)()

File "/opt/netbox/netbox/extras/api/customfields.py" in __init__
  128.             if fields and 'custom_fields' not in self.initial_data:

Exception Type: AttributeError at /api/docs/
Exception Value: 'VirtualMachineSerializer' object has no attribute 'initial_data'
Originally created by @netsandbox on GitHub (Dec 19, 2019). ### Environment * Python version: 3.6.9 * NetBox version: 2.6.9 Just upgraded from 2.6.8 to 2.6.9 and found that the api docs are broken. I think commit a22c7c15 is responsible for this. ### Steps to Reproduce 1. open api docs link ### Expected Behavior see api docs ### Observed Behavior ``` Internal Server Error: /api/docs/ AttributeError at /api/docs/ 'VirtualMachineSerializer' object has no attribute 'initial_data' Request Method: GET Request URL: https://netbox-t.linux.msys.net/api/docs/?format=openapi Django Version: 2.2.9 Python Executable: /usr/bin/python3 Python Version: 3.6.9 Python Path: ['/', '/opt/netbox/netbox', '/usr/bin', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages'] Server time: Thu, 19 Dec 2019 16:23:39 +0000 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'cacheops', 'corsheaders', 'debug_toolbar', 'django_filters', 'django_tables2', 'django_prometheus', 'mptt', 'rest_framework', 'taggit', 'taggit_serializer', 'timezone_field', 'circuits', 'dcim', 'ipam', 'extras', 'secrets', 'tenancy', 'users', 'utilities', 'virtualization', 'drf_yasg', 'django_rq'] Installed Middleware: ('debug_toolbar.middleware.DebugToolbarMiddleware', 'django_prometheus.middleware.PrometheusBeforeMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'utilities.middleware.ExceptionHandlingMiddleware', 'utilities.middleware.LoginRequiredMiddleware', 'utilities.middleware.APIVersionMiddleware', 'extras.middleware.ObjectChangeMiddleware', 'django_prometheus.middleware.PrometheusAfterMiddleware') Traceback: File "/usr/local/lib/python3.6/dist-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request) File "/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py" in _get_response 115. response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py" in _get_response 113. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.6/dist-packages/django/views/decorators/csrf.py" in wrapped_view 54. return view_func(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/django/views/generic/base.py" in view 71. return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/rest_framework/views.py" in dispatch 495. response = self.handle_exception(exc) File "/usr/local/lib/python3.6/dist-packages/rest_framework/views.py" in handle_exception 455. self.raise_uncaught_exception(exc) File "/usr/local/lib/python3.6/dist-packages/rest_framework/views.py" in dispatch 492. response = handler(request, *args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/drf_yasg/views.py" in get 95. schema = generator.get_schema(request, self.public) File "/usr/local/lib/python3.6/dist-packages/drf_yasg/generators.py" in get_schema 241. endpoints = self.get_endpoints(request) File "/usr/local/lib/python3.6/dist-packages/drf_yasg/generators.py" in get_endpoints 316. view = self.create_view(callback, method, request) File "/usr/local/lib/python3.6/dist-packages/drf_yasg/generators.py" in create_view 272. view = self._gen.create_view(callback, method, request) File "/usr/local/lib/python3.6/dist-packages/rest_framework/schemas/generators.py" in create_view 363. view = callback.cls(**getattr(callback, 'initkwargs', {})) File "/opt/netbox/netbox/utilities/api.py" in __init__ 324. serializer = get_serializer_for_model(cls)() File "/opt/netbox/netbox/extras/api/customfields.py" in __init__ 128. if fields and 'custom_fields' not in self.initial_data: Exception Type: AttributeError at /api/docs/ Exception Value: 'VirtualMachineSerializer' object has no attribute 'initial_data' ```
adam added the type: bugstatus: accepted labels 2025-12-29 18:25:26 +01:00
adam closed this issue 2025-12-29 18:25:26 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3079