-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Labels
severity: lowDoes not significantly disrupt application functionality, or a workaround is availableDoes not significantly disrupt application functionality, or a workaround is availablestatus: acceptedThis issue has been accepted for implementationThis issue has been accepted for implementationtype: bugA confirmed report of unexpected behavior in the applicationA confirmed report of unexpected behavior in the application
Description
Deployment Type
Self-hosted
NetBox Version
v4.2.3
Python Version
3.11
Steps to Reproduce
- Navigate to IPAM -> IP Addresses in the left menu
- Click the "Add" button in the left column
- Specify any new IP address and mask in the "Address" field, e.g. 192.168.0.2.1/24
- Select any status in the "Status" drop-down
- At the bottom of the page, click "Create & Add Another"
Expected Behavior
The IP address creation form should render for a new IP address, noting that the previous address was successfully created.
Observed Behavior
Internal Server Error: /ipam/ip-addresses/add/
TypeError at /ipam/ip-addresses/add/
'NoneType' object is not iterable
Request Method: POST
Request URL: https://REDACTED/ipam/ip-addresses/add/
Django Version: 5.1.5
Python Executable: /opt/netbox/venv/bin/python
Python Version: 3.11.2
Python Path: ['/opt/netbox/netbox', '/usr/lib/python311.zip', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', '/opt/netbox/venv/lib/python3.11/site-packages']
Server time: Fri, 07 Feb 2025 15:19:59 +1300
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'django.forms',
'corsheaders',
'django_filters',
'django_htmx',
'django_tables2',
'django_prometheus',
'strawberry_django',
'mptt',
'rest_framework',
'social_django',
'taggit',
'timezone_field',
'core',
'account',
'circuits',
'dcim',
'ipam',
'extras',
'tenancy',
'users',
'utilities',
'virtualization',
'vpn',
'wireless',
'django_rq',
'drf_spectacular',
'drf_spectacular_sidecar',
'netbox_documents.NetboxDocuments',
'netbox_qrcode.QRCodeConfig']
Installed Middleware:
['corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'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',
'django_htmx.middleware.HtmxMiddleware',
'netbox.middleware.RemoteUserMiddleware',
'netbox.middleware.CoreMiddleware',
'netbox.middleware.MaintenanceModeMiddleware']
Traceback (most recent call last):
File "/opt/netbox/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 182, in dispatch
return super().dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/netbox/netbox/views/generic/base.py", line 26, in dispatch
return super().dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/netbox/utilities/views.py", line 125, in dispatch
return super().dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/netbox/utilities/views.py", line 39, in dispatch
return super().dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch
return handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 313, in post
params.update(self.get_extra_addanother_params(request))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/netbox/venv/lib/python3.11/site-packages/django/utils/datastructures.py", line 210, in update
for key, value in arg:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Exception Type: TypeError at /ipam/ip-addresses/add/
Exception Value: 'NoneType' object is not iterable
Raised during: ipam.views.IPAddressEditView
Request information:
USER: tom
GET: No GET data
POST:
csrfmiddlewaretoken = 'jnZ0946sXiUPntvXby1xMeZVO4Z18RSTkraBHZ1ribzaCgvSUeRDdNPw4rK3DL2E'
_init_time = '1738894763.097426'
address = '192.0.2.2/24'
status = 'active'
role = ''
vrf = ''
dns_name = ''
description = ''
tenant_group = ''
tenant = ''
interface = ''
vminterface = ''
fhrpgroup = ''
primary_for_parent = ''
oob_for_parent = ''
nat_inside = ''
cf_management_address = ''
cf_oob_management_address = ''
cf_monitoring_bgp = ''
cf_monitoring_bgp_uptime_minimum = ''
cf_monitoring_contact_email = ''
cf_monitoring_contact_phone = ''
cf_monitoring_ftp = ''
cf_monitoring_http = ''
cf_monitoring_http_hostname = ''
cf_monitoring_https = ''
cf_monitoring_https_hostname = ''
cf_monitoring_juniper_vpn = ''
cf_monitoring_juniper_vpn_uptime_minimum = ''
cf_monitoring_mikrotik_voltage = ''
cf_monitoring_mikrotik_voltage_critical = ''
cf_monitoring_mikrotik_voltage_warning = ''
cf_monitoring_mpls = ''
cf_monitoring_ping = ''
cf_monitoring_nagios_check_interval = ''
cf_monitoring_nagios_contactgroup = ''
cf_monitoring_nagios_event_handler = ''
cf_monitoring_nagios_hostgroup = ''
cf_monitoring_nagios_ncpa_token = ''
cf_monitoring_nagios_notification_period = ''
cf_monitoring_nagios_retry_interval = ''
cf_snmp_get_community = ''
cf_treasury_account_id = ''
cf_wireless_suid = ''
comments = ''
_addanother = ''
FILES: No FILES data
COOKIES:
csrftoken = '********************'
_ga_PW5VGEJ76X = 'GS1.1.1737495988.9.0.1737495990.58.0.0'
_ga = 'GA1.1.194355644.1724275695'
_ga_HTNJKCC9NH = 'GS1.1.1725404796.1.1.1725404796.60.0.0'
_fbp = 'fb.2.1725404796354.753919848969322510'
_gcl_au = '1.1.209266393.1736299199'
sessionid = '********************'
META:
CONTENT_LENGTH = '5977'
CONTENT_TYPE = 'multipart/form-data; boundary=---------------------------246652128233119244821296829133'
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
CSRF_COOKIE = 'REDACTED'
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
H2PUSH = 'off'
H2_PUSH = 'off'
H2_PUSHED = ''
H2_PUSHED_ON = ''
H2_STREAM_ID = '11'
H2_STREAM_TAG = '4139228-27338-11'
HTTP2 = 'on'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br, zstd'
HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.5'
HTTP_COOKIE = '********************'
HTTP_DNT = '1'
HTTP_HOST = 'REDACTED'
HTTP_ORIGIN = 'REDACTED'
HTTP_PRIORITY = 'u=0, i'
HTTP_REFERER = 'https://REDACTED/ipam/ip-addresses/add/'
HTTP_SEC_FETCH_DEST = 'document'
HTTP_SEC_FETCH_MODE = 'navigate'
HTTP_SEC_FETCH_SITE = 'same-origin'
HTTP_SEC_FETCH_USER = '?1'
HTTP_TE = 'trailers'
HTTP_UPGRADE_INSECURE_REQUESTS = '1'
HTTP_USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0'
HTTP_X_SSL_CIPHER = 'TLS_AES_256_GCM_SHA384'
HTTP_X_SSL_PROTOCOL = 'TLSv1.3'
PATH_INFO = '/ipam/ip-addresses/add/'
PATH_TRANSLATED = '/opt/netbox/netbox/netbox/[wsgi.py/ipam/ip-addresses/add/](http://wsgi.py/ipam/ip-addresses/add/)'
QUERY_STRING = ''
REMOTE_ADDR = 'REDACTED'
REMOTE_PORT = '56980'
REQUEST_METHOD = 'POST'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/ipam/ip-addresses/add/'
SCRIPT_FILENAME = '/opt/netbox/netbox/netbox/wsgi.py'
SCRIPT_NAME = ''
SERVER_ADDR = 'REDACTED'
SERVER_ADMIN = 'REDACTED'
SERVER_NAME = 'REDACTED'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/2.0'
SERVER_SIGNATURE = '********************'
SERVER_SOFTWARE = 'Apache/2.4.62 (Debian)'
SSL_TLS_SNI = 'REDACTED'
apache.version = '(2, 4, 55)'
mod_wsgi.application_group = 'REDACTED'
mod_wsgi.callable_object = 'application'
mod_wsgi.daemon_connects = '1'
mod_wsgi.daemon_restarts = '0'
mod_wsgi.daemon_start = '1738894799210037'
mod_wsgi.enable_sendfile = '0'
mod_wsgi.handler_script = ''
mod_wsgi.ignore_activity = '0'
mod_wsgi.listener_host = 'REDACTED'
mod_wsgi.listener_port = '443'
mod_wsgi.path_info = '/ipam/ip-addresses/add/'
mod_wsgi.process_group = 'REDACTED'
mod_wsgi.queue_start = '1738894799209823'
mod_wsgi.request_handler = 'wsgi-script'
mod_wsgi.request_id = 'ZwPP/jPBv5U'
mod_wsgi.request_start = '1738894799209319'
mod_wsgi.script_name = ''
mod_wsgi.script_reloading = '1'
mod_wsgi.script_start = '1738894799210262'
mod_wsgi.thread_id = 1
mod_wsgi.thread_requests = 123
mod_wsgi.total_requests = 123
mod_wsgi.version = '(4, 9, 4)'
wsgi.errors = <_io.TextIOWrapper name='<wsgi.errors>' encoding='utf-8'>
wsgi.file_wrapper = <class 'mod_wsgi.FileWrapper'>
wsgi.input = <mod_wsgi.Input object at 0x7fcf8ab1fa60>
wsgi.input_terminated = True
wsgi.multiprocess = True
wsgi.multithread = False
wsgi.run_once = False
wsgi.url_scheme = 'https'
wsgi.version = '(1, 0)'
Settings:
Using settings module netbox.settings
ABSOLUTE_URL_OVERRIDES = {}
ADMINS = [('NetBox Administrator', 'REDACTED')]
ALLOWED_HOSTS = ['REDACTED']
ALLOW_TOKEN_RETRIEVAL = '********************'
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = ['netbox.authentication.RemoteUserBackend', 'netbox.authentication.ObjectPermissionBackend']
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'users.User'
BASE_DIR = '/opt/netbox/netbox'
BASE_PATH = ''
CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache', 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'PASSWORD': '********************'}, 'LOCATION': 'unix:///run/valkey-netbox/valkey-server.sock?db=1'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
CACHING_REDIS_CA_CERT_PATH = False
CACHING_REDIS_DATABASE = 1
CACHING_REDIS_HOST = 'localhost'
CACHING_REDIS_PASSWORD = '********************'
CACHING_REDIS_PORT = 6379
CACHING_REDIS_PROTO = 'redis'
CACHING_REDIS_SENTINELS = []
CACHING_REDIS_SENTINEL_SERVICE = 'default'
CACHING_REDIS_SKIP_TLS_VERIFY = False
CACHING_REDIS_SOCKET = '/run/valkey-netbox/valkey-server.sock'
CACHING_REDIS_URL = 'redis://localhost:6379/1'
CACHING_REDIS_USERNAME = ''
CACHING_REDIS_USERNAME_HOST = 'localhost'
CENSUS_REPORTING_ENABLED = True
CENSUS_URL = 'https://census.netbox.oss.netboxlabs.com/api/v1/'
CHANGELOG_SKIP_EMPTY_CHANGES = True
CONFIG_PARAMS = '(<netbox.config.parameters.ConfigParam object at 0x7fcfa6a31650>, <netbox.config.parameters.ConfigParam object at 0x7fcfa6a4a990>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18490>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18690>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c187d0>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18950>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18ad0>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18c50>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18dd0>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c18f50>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c190d0>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c19450>, <netbox.config.parameters..ConfigParam object at 0x7fcfa5c194d0>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c195d0>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c19850>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c19a90>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c19c10>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c19d90>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c19f10>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c1a090>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c1a210>, <netbox.config.parameters.ConfigParam object at 0x7fcfa5c1a390>)'
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_REGEX_WHITELIST = []
CORS_ORIGIN_WHITELIST = []
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASE = {'NAME': 'netbox', 'USER': 'netbox', 'PASSWORD': '********************', 'HOST': 'REDACTED', 'ENGINE': 'django.db.backends.postgresql', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'CONN_HEALTH_CHECKS': False, 'OPTIONS': {}, 'TIME_ZONE': None, 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}}
DATABASES = {'default': {'NAME': 'netbox', 'USER': 'netbox', 'PASSWORD': '********************', 'HOST': 'REDACTED', 'ENGINE': 'django.db.backends.postgresql', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'CONN_HEALTH_CHECKS': False, 'OPTIONS': {}, 'TIME_ZONE': None, 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = None
DATA_UPLOAD_MAX_NUMBER_FILES = 100
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_DASHBOARD = None
DEFAULT_EXCEPTION_REPORTER = 'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FROM_EMAIL = 'webmaster@localhost'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_PERMISSIONS = {'extras.view_bookmark': ({'user': '$user'},), 'extras.add_bookmark': ({'user': '$user'},), 'extras.change_bookmark': ({'user': '$user'},), 'extras.delete_bookmark': ({'user': '$user'},), 'extras.view_notification': ({'user': '$user'},), 'extras.add_notification': ({'user': '$user'},), 'extras.change_notification': ({'user': '$user'},), 'extras.delete_notification': ({'user': '$user'},), 'extras.view_subscription': ({'user': '$user'},), 'extras.add_subscription': ({'user': '$user'},), 'extras.change_subscription': ({'user': '$user'},), 'extras.delete_subscription': ({'user': '$user'},), 'users.view_token': '********************', 'users.add_token': '********************', 'users.change_token': '********************', 'users.delete_token': '********************'}
DEFAULT_TABLESPACE = ''
DEPLOYMENT_ID = '234bad756cfa9e3a'
DEVELOPER = False
DISALLOWED_USER_AGENTS = []
DOCS_ROOT = '/opt/netbox/docs'
EMAIL = {'SERVER': 'localhost', 'FROM_EMAIL': 'REDACTED'}
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = None
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[NetBox] '
EMAIL_TIMEOUT = 10
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
EVENTS_PIPELINE = ['extras.events.process_event_queue']
EXEMPT_EXCLUDE_MODELS = "(('extras', 'configrevision'), ('users', 'group'), ('users', 'objectpermission'), ('users', 'token'), ('users', 'user'))"
EXEMPT_VIEW_PERMISSIONS = []
FIELD_CHOICES = {}
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = 420
FILE_UPLOAD_TEMP_DIR = None
FILTERS_NULL_CHOICE_LABEL = 'None'
FILTERS_NULL_CHOICE_VALUE = 'null'
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORMS_URLFIELD_ASSUME_HTTPS = False
FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
GRAPHQL_MAX_ALIASES = 10
HOSTNAME = 'intweb02'
HTTP_PROXIES = None
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.forms', 'corsheaders', 'django_filters', 'django_htmx', 'django_tables2', 'django_prometheus', 'strawberry_django', 'mptt', 'rest_framework', 'social_django', 'taggit', 'timezone_field', 'core', 'account', 'circuits', 'dcim', 'ipam', 'extras', 'tenancy', 'users', 'utilities', 'virtualization', 'vpn', 'wireless', 'django_rq', 'drf_spectacular', 'drf_spectacular_sidecar', 'netbox_documents.NetboxDocuments', 'netbox_qrcode.QRCodeConfig']
INTERNAL_IPS = "('127.0.0.1', '::1')"
ISOLATED_DEPLOYMENT = False
JINJA2_FILTERS = {}
LANGUAGES = "(('cs', 'Czech'), ('da', 'Danish'), ('de', 'German'), ('en', 'English'), ('es', 'Spanish'), ('fr', 'French'), ('it', 'Italian'), ('ja', 'Japanese'), ('nl', 'Dutch'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('ru', 'Russian'), ('tr', 'Turkish'), ('uk', 'Ukrainian'), ('zh', 'Chinese'))"
LANGUAGES_BIDI = ['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']
LANGUAGE_CODE = 'en-gb'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_HTTPONLY = False
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LANGUAGE_COOKIE_SAMESITE = None
LANGUAGE_COOKIE_SECURE = False
LOCALE_PATHS = "('/opt/netbox/netbox/translations',)"
LOGGING = {}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_PERSISTENCE = True
LOGIN_REDIRECT_URL = '/'
LOGIN_REQUIRED = True
LOGIN_TIMEOUT = None
LOGIN_URL = '/login/'
LOGOUT_REDIRECT_URL = 'home'
MAINTENANCE_EXEMPT_PATHS = "('/extras/config-revisions/', '/login/', '/', 'home')"
MANAGERS = []
MEDIA_ROOT = '/opt/netbox/netbox/media'
MEDIA_URL = '/media/'
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
METRICS_ENABLED = False
MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', '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', 'django_htmx.middleware.HtmxMiddleware', 'netbox.middleware.RemoteUserMiddleware', 'netbox.middleware.CoreMiddleware', 'netbox.middleware.MaintenanceModeMiddleware']
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT = '********************'
PLUGINS = ['netbox_documents', 'netbox_qrcode']
PLUGINS_CONFIG = {'netbox_documents': {'enable_site_documents': True, 'enable_location_documents': True, 'enable_circuit_documents': True, 'enable_device_documents': True, 'enable_device_type_documents': True, 'enable_vm_documents': True, 'enable_circuit_provider_documents': True, 'enable_navigation_menu': True, 'site_documents_location': 'left', 'location_documents_location': 'left', 'circuit_documents_location': 'left', 'device_documents_location': 'left', 'device_type_documents_location': 'left', 'vm_documents_location': 'left', 'circuit_provider_documents_location': 'left'}, 'netbox_qrcode': {'with_text': True, 'text_fields': ['name', 'serial'], 'font': 'TahomaBold', 'custom_text': None, 'text_location': 'right', 'qr_version': 1, 'qr_error_correction': 0, 'qr_box_size': 6, 'qr_border': 4, 'device': {'text_fields': ['name', 'serial']}, 'rack': {'text_fields': ['name']}, 'cable': {'text_fields': ['_termination_a_device', 'termination_a', '_termination_b_device', 'termination_b', 'a_terminations.device', 'a_terminations', 'b_terminations.device', 'b_terminations']}, 'location': {'text_fields': ['name']}, 'powerfeed': {'text_fields': ['name']}, 'powerpanel': {'text_fields': ['name']}}}
PLUGIN_CATALOG_URL = 'https://api.netbox.oss.netboxlabs.com/v1/plugins'
PREPEND_WWW = False
PROMETHEUS_EXPORT_MIGRATIONS = False
QUEUE_MAPPINGS = {}
REDIS = {'tasks': {'SOCKET': '/run/valkey-netbox/valkey-server.sock', 'DATABASE': 0}, 'caching': {'SOCKET': '/run/valkey-netbox/valkey-server.sock', 'DATABASE': 1}}
RELEASE = ReleaseInfo(version='4.2.3', edition='Community', published=datetime.datetime(2025, 2, 4, 0, 0), designation=None, build=None, features=FeatureSet(commercial=False, help_center=False))
RELEASE_CHECK_URL = 'https://api.github.com/repos/netbox-community/netbox/releases'
REMOTE_AUTH_AUTO_CREATE_GROUPS = False
REMOTE_AUTH_AUTO_CREATE_USER = False
REMOTE_AUTH_BACKEND = ['netbox.authentication.RemoteUserBackend']
REMOTE_AUTH_DEFAULT_GROUPS = []
REMOTE_AUTH_DEFAULT_PERMISSIONS = {}
REMOTE_AUTH_ENABLED = False
REMOTE_AUTH_GROUP_HEADER = 'HTTP_REMOTE_USER_GROUP'
REMOTE_AUTH_GROUP_SEPARATOR = '|'
REMOTE_AUTH_GROUP_SYNC_ENABLED = False
REMOTE_AUTH_HEADER = 'HTTP_REMOTE_USER'
REMOTE_AUTH_STAFF_GROUPS = []
REMOTE_AUTH_STAFF_USERS = []
REMOTE_AUTH_SUPERUSERS = []
REMOTE_AUTH_SUPERUSER_GROUPS = []
REMOTE_AUTH_USER_EMAIL = 'HTTP_REMOTE_USER_EMAIL'
REMOTE_AUTH_USER_FIRST_NAME = 'HTTP_REMOTE_USER_FIRST_NAME'
REMOTE_AUTH_USER_LAST_NAME = 'HTTP_REMOTE_USER_LAST_NAME'
REPORTS_ROOT = '/opt/netbox/netbox/reports'
REST_FRAMEWORK = {'ALLOWED_VERSIONS': ['4.2'], 'COERCE_DECIMAL_TO_STRING': False, 'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.SessionAuthentication', 'netbox.api.authentication.TokenAuthentication'), 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend', 'rest_framework.filters.OrderingFilter'), 'DEFAULT_METADATA_CLASS': 'netbox.api.metadata.BulkOperationMetadata', 'DEFAULT_PAGINATION_CLASS': 'netbox.api.pagination.OptionalLimitOffsetPagination', 'DEFAULT_PARSER_CLASSES': ('rest_framework.parsers.JSONParser', 'rest_framework.parsers.MultiPartParser'), 'DEFAULT_PERMISSION_CLASSES': ('netbox.api.authentication.TokenPermissions',), 'DEFAULT_RENDERER_CLASSES': ('rest_framework.renderers.JSONRenderer', 'netbox.api.renderers.FormlessBrowsableAPIRenderer'), 'DEFAULT_SCHEMA_CLASS': 'core.api.schema.NetBoxAutoSchema', 'DEFAULT_VERSION': '4.2', 'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning', 'SCHEMA_COERCE_METHOD_NAMES': {'retrieve': 'read', 'destroy': 'delete', 'bulk_destroy': 'bulk_delete'}, 'VIEW_NAME_FUNCTION': 'utilities.api.get_view_name'}
REST_FRAMEWORK_VERSION = '4.2'
ROOT_URLCONF = 'netbox.urls'
RQ_DEFAULT_TIMEOUT = 300
RQ_PARAMS = {'UNIX_SOCKET_PATH': '/run/valkey-netbox/valkey-server.sock', 'DB': 0, 'USERNAME': '', 'PASSWORD': '********************', 'DEFAULT_TIMEOUT': 300}
RQ_QUEUES = {'high': {'UNIX_SOCKET_PATH': '/run/valkey-netbox/valkey-server.sock', 'DB': 0, 'USERNAME': '', 'PASSWORD': '********************', 'DEFAULT_TIMEOUT': 300}, 'default': {'UNIX_SOCKET_PATH': '/run/valkey-netbox/valkey-server.sock', 'DB': 0, 'USERNAME': '', 'PASSWORD': '********************', 'DEFAULT_TIMEOUT': 300}, 'low': {'UNIX_SOCKET_PATH': '/run/valkey-netbox/valkey-server.sock', 'DB': 0, 'USERNAME': '', 'PASSWORD': '********************', 'DEFAULT_TIMEOUT': 300}}
RQ_QUEUE_DEFAULT = 'default'
RQ_QUEUE_HIGH = 'high'
RQ_QUEUE_LOW = 'low'
RQ_RETRY_INTERVAL = 60
RQ_RETRY_MAX = 0
SCRIPTS_ROOT = '/opt/netbox/netbox/scripts'
SEARCH_BACKEND = 'netbox.search.backends.CachedValueSearchBackend'
SECRET_KEY = '********************'
SECRET_KEY_FALLBACKS = '********************'
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_CROSS_ORIGIN_OPENER_POLICY = 'same-origin'
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = "('HTTP_X_FORWARDED_PROTO', 'https')"
SECURE_REDIRECT_EXEMPT = []
SECURE_REFERRER_POLICY = 'same-origin'
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = True
SENTRY_DSN = None
SENTRY_ENABLED = False
SENTRY_SAMPLE_RATE = 1.0
SENTRY_SEND_DEFAULT_PII = False
SENTRY_TAGS = {}
SENTRY_TRACES_SAMPLE_RATE = 0
SERIALIZATION_MODULES = {'json': 'utilities.serializers.json'}
SERVER_EMAIL = 'REDACTED'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = True
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = True
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE = 'netbox.settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SOCIAL_AUTH_CLEAN_USERNAME_FUNCTION = 'users.utils.clean_username'
SOCIAL_AUTH_JSONFIELD_ENABLED = True
SOCIAL_AUTH_PIPELINE = "('social_core.pipeline.social_auth.social_details', 'social_core.pipeline.social_auth.social_uid', 'social_core.pipeline.social_auth.social_user', 'social_core.pipeline.user.get_username', 'social_core.pipeline.user.create_user', 'social_core.pipeline.social_auth.associate_user', 'netbox.authentication.user_default_groups_handler', 'social_core.pipeline.social_auth.load_extra_data', 'social_core.pipeline.user.user_details')"
SOCIAL_AUTH_USER_MODEL = 'users.User'
SPECTACULAR_SETTINGS = {'TITLE': 'NetBox REST API', 'LICENSE': {'name': 'Apache v2 License'}, 'VERSION': '4.2.3', 'COMPONENT_SPLIT_REQUEST': True, 'REDOC_DIST': 'SIDECAR', 'SERVERS': [{'url': '', 'description': 'NetBox'}], 'SWAGGER_UI_DIST': 'SIDECAR', 'SWAGGER_UI_FAVICON_HREF': 'SIDECAR', 'POSTPROCESSING_HOOKS': []}
STATICFILES_DIRS = "('/opt/netbox/netbox/project-static/dist', '/opt/netbox/netbox/project-static/img', '/opt/netbox/netbox/project-static/js', ('docs', '/opt/netbox/netbox/project-static/docs'))"
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATIC_ROOT = '/opt/netbox/netbox/static'
STATIC_URL = '/static/'
STORAGES = {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}}
STORAGE_BACKEND = None
STORAGE_CONFIG = {}
STRAWBERRY_DJANGO = {'DEFAULT_PK_FIELD_NAME': 'id', 'TYPE_DESCRIPTION_FROM_MODEL_DOCSTRING': True, 'USE_DEPRECATED_FILTERS': True}
TASKS_REDIS = {'SOCKET': '/run/valkey-netbox/valkey-server.sock', 'DATABASE': 0}
TASKS_REDIS_CA_CERT_PATH = False
TASKS_REDIS_DATABASE = 0
TASKS_REDIS_HOST = 'localhost'
TASKS_REDIS_PASSWORD = '********************'
TASKS_REDIS_PORT = 6379
TASKS_REDIS_SENTINELS = []
TASKS_REDIS_SENTINEL_SERVICE = 'default'
TASKS_REDIS_SENTINEL_TIMEOUT = 10
TASKS_REDIS_SKIP_TLS_VERIFY = False
TASKS_REDIS_SOCKET = '/run/valkey-netbox/valkey-server.sock'
TASKS_REDIS_SSL = False
TASKS_REDIS_URL = None
TASKS_REDIS_USERNAME = ''
TASKS_REDIS_USING_SENTINEL = False
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/opt/netbox/netbox/templates'], 'APP_DIRS': True, 'OPTIONS': {'builtins': ['utilities.templatetags.builtins.filters', 'utilities.templatetags.builtins.tags'], 'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.template.context_processors.media', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'netbox.context_processors.settings', 'netbox.context_processors.config', 'netbox.context_processors.registry', 'netbox.context_processors.preferences']}}]
TEMPLATES_DIR = '/opt/netbox/netbox/templates'
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'Pacific/Auckland'
TRANSLATION_ENABLED = True
USE_I18N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
VERSION = '4.2.3'
WSGI_APPLICATION = 'netbox.wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'
cr4zylemon and lukaschochlovas
Metadata
Metadata
Assignees
Labels
severity: lowDoes not significantly disrupt application functionality, or a workaround is availableDoes not significantly disrupt application functionality, or a workaround is availablestatus: acceptedThis issue has been accepted for implementationThis issue has been accepted for implementationtype: bugA confirmed report of unexpected behavior in the applicationA confirmed report of unexpected behavior in the application