The premier source of truth powering network automation. Open source under Apache 2. Try NetBox Cloud free: https://netboxlabs.com/products/free-netbox-cloud/
This report summarizes scanner evidence for netbox-community/netbox, a Python project with 21,677 GitHub stars. SynthScan examined 332,551 lines of code across 1805 source files, recording 5046 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 18.2 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 3844 finding(s).
Are imports declared and package/API names verified? 1087 finding(s).
Are wrappers, guards, and repeated structures necessary? 3607 finding(s).
Which changes need focused human review? 5046 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 5046 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/utils.py | 61 | def register_request_processor(func): | CODE |
| LOW | netbox/netbox/settings_utils.py | 105 | def validate_webhook_default_timeout(timeout, job_timeout): | CODE |
| LOW | netbox/netbox/event_rules.py | 141 | def register_event_rule_action(cls, *, is_plugin_provided=True): | CODE |
| LOW | netbox/netbox/event_rules.py | 196 | def get_event_rule_action_choices(): | CODE |
| LOW | netbox/netbox/event_rules.py | 203 | def get_event_rule_action_slugs(): | CODE |
| LOW | netbox/netbox/middleware.py | 46 | def should_redirect_with_slash(self, request): | CODE |
| LOW | netbox/netbox/ui/attrs.py | 651 | def compute_flow_rate_display(flow_rate, flow_rate_unit, abs_flow_rate, system): | CODE |
| LOW | netbox/netbox/tables/tables.py | 162 | def _get_custom_field_ordering_columns(self, order_by): | CODE |
| LOW | netbox/netbox/tables/tables.py | 180 | def _apply_ordering_annotations(self, ordering_columns): | CODE |
| LOW | netbox/netbox/tables/tables.py | 197 | def _apply_ordering_tie_breaker(self): | CODE |
| LOW | netbox/netbox/tables/tables.py | 361 | def _restrict_customlink_columns(self, user): | CODE |
| LOW | netbox/netbox/forms/mixins.py | 77 | def _append_customfield_fields(self): | CODE |
| LOW | netbox/netbox/plugins/registration.py | 49 | def register_template_extensions(class_list): | CODE |
| LOW | netbox/netbox/plugins/registration.py | 110 | def _register_graphql_extensions(class_list, store): | CODE |
| LOW⚡ | netbox/netbox/plugins/registration.py | 217 | def register_graphql_type_extensions(class_list): | CODE |
| LOW⚡ | netbox/netbox/plugins/registration.py | 225 | def register_graphql_filter_extensions(class_list): | CODE |
| LOW⚡ | netbox/netbox/plugins/registration.py | 233 | def register_user_preferences(plugin_name, preferences): | CODE |
| LOW⚡ | netbox/netbox/plugins/registration.py | 240 | def register_serializer_resolver(app_label, resolver): | CODE |
| LOW | netbox/netbox/plugins/__init__.py | 224 | def _load_plugin_graphql_schemas(): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 53 | def test_empty_string_to_none_nullable_charfield(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 66 | def test_empty_string_to_none_nullable_integerfield(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 79 | def test_empty_string_to_none_nullable_smallintegerfield(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 92 | def test_empty_string_to_none_nullable_decimalfield(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 107 | def test_empty_string_to_none_nullable_foreignkey(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 126 | def test_empty_string_preserved_non_nullable_charfield(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 142 | def test_empty_string_not_converted_for_required_fields(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 156 | def test_non_string_none_value_preserved(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 171 | def test_non_string_numeric_values_preserved(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 186 | def test_manytomany_fields_skipped(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 199 | def test_fields_not_in_cleaned_data_skipped(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 213 | def test_valid_string_values_preserved(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 231 | def test_multiple_nullable_fields_with_empty_strings(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 255 | def test_mixed_nullable_and_non_nullable_empty_strings(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 276 | def test_wireless_fields_nullable(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 323 | def test_missing_field_validation_error_becomes_non_field_error(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 342 | def test_non_field_error_not_overwritten_by_remapped_missing_field_error(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 361 | def test_remapped_error_preserves_code_and_params(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 390 | def test_remapped_error_preserves_pluralized_message(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 466 | def test_partial_swap_fields_target_their_fieldset(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 481 | def test_interface_mode_retains_option_descriptions(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 487 | def test_full_form_fields_do_not_partial_swap(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 556 | def test_meta_config_does_not_shadow_declared_fields(self): | CODE |
| LOW | netbox/netbox/tests/test_forms.py | 574 | def test_localized_fields_all_sentinel_expands_to_declared(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 16 | def test_explicit_module_wins(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 24 | def test_checkout_uses_default_module(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 31 | def test_checkout_missing_module_raises_improperly_configured(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 41 | def test_wheel_prefers_conf_dir(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 104 | def test_import_from_path_removes_module_on_failure(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 113 | def test_import_from_path_rejects_unloadable_path(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 121 | def test_import_from_path_preserves_preexisting_sys_path_entry(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 251 | def test_wheel_mode_suggests_console_command(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 254 | def test_checkout_mode_suggests_generate_secret_key_script(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 264 | def test_integer_is_returned_unchanged(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 267 | def test_numeric_string_is_coerced(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 270 | def test_duration_string_is_normalized(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 275 | def test_absent_or_zero_timeout_falls_back_to_queue_default(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 282 | def test_negative_timeout_is_unbounded(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 288 | def test_invalid_value_raises(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 298 | def test_valid_timeout_below_job_timeout(self): | CODE |
| LOW⚡ | netbox/netbox/tests/test_settings_utils.py | 301 | def test_timeout_at_or_above_job_timeout_raises(self): | CODE |
| 3424 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | netbox/netbox/tests/test_forms.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | netbox/netbox/tests/test_model_features.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/netbox/models/mixins.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/core/tests/test_signals.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/core/tests/test_signals.py | 559 | autosync_model.objects.filter.return_value.order_by.assert_called_once_with('pk') | CODE |
| CRITICAL | netbox/core/tests/test_management_commands.py | 295 | data_source_model.objects.filter.return_value.update.assert_called_once_with( | CODE |
| CRITICAL | netbox/core/models/files.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/core/models/change_logging.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/core/models/jobs.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/core/models/data.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/virtualization/forms/model_forms.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/virtualization/tests/test_models.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/virtualization/models/clusters.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/virtualization/models/virtualmachines.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/circuits/models/virtual_circuits.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/circuits/models/circuits.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/tenancy/models/contacts.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/vpn/forms/model_forms.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/vpn/forms/bulk_import.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/vpn/tests/test_models.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/vpn/models/tunnels.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/vpn/models/crypto.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/vpn/models/l2vpn.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/fields.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/cable_profiles.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/views.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/svg/racks.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/forms/mixins.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/forms/common.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/tests/test_channelization.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/tests/test_models.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/tests/test_module_moves.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/mixins.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/device_component_templates.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/cooling.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/module_moves.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/sites.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/modules.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/racks.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/cables.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/cables.py | 780 | termination = self.termination._meta.model.objects.get(pk=self.termination_id) | CODE |
| CRITICAL | netbox/dcim/models/cables.py | 788 | termination = self.termination._meta.model.objects.get(pk=self.termination_id) | CODE |
| CRITICAL | netbox/dcim/models/devices.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/power.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/models/base.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/dcim/api/serializers_/mixins.py | 1 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | netbox/utilities/password_validation.py | 1 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/utilities/validators.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/utilities/jinja2.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/utilities/jsonschema.py | 7 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/utilities/filters.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/utilities/templatetags/form_helpers.py | 67 | return field.field.widget.__class__.__name__.lower() | CODE |
| CRITICAL | netbox/utilities/forms/fields/csv.py | 3 | from django.core.exceptions import FieldError, MultipleObjectsReturned, ObjectDoesNotExist | CODE |
| CRITICAL | netbox/utilities/tests/test_jsonschema.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL⚡ | netbox/utilities/tests/test_ltree.py | 183 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL⚡ | netbox/utilities/tests/test_ltree.py | 194 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL⚡ | netbox/utilities/tests/test_ltree.py | 206 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/utilities/tests/test_ltree.py | 826 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/wireless/models.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | netbox/users/views.py | 1 | from django.core.exceptions import ValidationError | CODE |
| 34 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/settings.py | 1061 | CODE | |
| LOW | netbox/netbox/settings.py | 365 | CODE | |
| LOW | netbox/netbox/tables/__init__.py | 1 | CODE | |
| LOW | netbox/netbox/tables/__init__.py | 2 | CODE | |
| LOW | netbox/netbox/tables/tables.py | 18 | CODE | |
| LOW | netbox/netbox/tables/tables.py | 28 | CODE | |
| LOW | netbox/netbox/forms/model_forms.py | 7 | CODE | |
| LOW | netbox/netbox/forms/mixins.py | 5 | CODE | |
| LOW | netbox/netbox/forms/mixins.py | 6 | CODE | |
| LOW | netbox/netbox/forms/filtersets.py | 4 | CODE | |
| LOW | netbox/netbox/forms/__init__.py | 1 | CODE | |
| LOW | netbox/netbox/forms/__init__.py | 2 | CODE | |
| LOW | netbox/netbox/forms/__init__.py | 3 | CODE | |
| LOW | netbox/netbox/forms/__init__.py | 4 | CODE | |
| LOW | netbox/netbox/forms/__init__.py | 5 | CODE | |
| LOW | netbox/netbox/forms/__init__.py | 6 | CODE | |
| LOW | netbox/netbox/forms/bulk_import.py | 6 | CODE | |
| LOW | netbox/netbox/forms/bulk_edit.py | 5 | CODE | |
| LOW | netbox/netbox/plugins/__init__.py | 15 | CODE | |
| LOW | netbox/netbox/plugins/__init__.py | 16 | CODE | |
| LOW | netbox/netbox/plugins/__init__.py | 17 | CODE | |
| LOW | netbox/netbox/plugins/__init__.py | 18 | CODE | |
| LOW | netbox/netbox/tests/test_import.py | 2 | CODE | |
| LOW | netbox/netbox/tests/test_jobs.py | 19 | CODE | |
| LOW | netbox/netbox/tests/dummy_plugin/__init__.py | 30 | CODE | |
| LOW | netbox/netbox/tests/dummy_plugin/__init__.py | 30 | CODE | |
| LOW | netbox/netbox/tests/dummy_plugin/__init__.py | 30 | CODE | |
| LOW | netbox/netbox/tests/dummy_plugin/graphql_extensions.py | 12 | CODE | |
| LOW | netbox/netbox/tests/dummy_plugin/broken_import.py | 2 | CODE | |
| LOW | netbox/netbox/tests/dummy_plugin/views.py | 14 | CODE | |
| LOW | netbox/netbox/navigation/menu.py | 7 | CODE | |
| LOW | netbox/netbox/models/mixins.py | 5 | CODE | |
| LOW | netbox/netbox/models/__init__.py | 10 | CODE | |
| LOW | netbox/netbox/models/features.py | 15 | CODE | |
| LOW | netbox/netbox/graphql/enums.py | 3 | CODE | |
| LOW | netbox/netbox/graphql/filter_mixins.py | 19 | CODE | |
| LOW | netbox/netbox/graphql/filter_mixins.py | 20 | CODE | |
| LOW | netbox/netbox/graphql/filter_mixins.py | 22 | CODE | |
| LOW | netbox/netbox/graphql/filters.py | 13 | CODE | |
| LOW | netbox/netbox/api/serializers/__init__.py | 1 | CODE | |
| LOW | netbox/netbox/api/serializers/__init__.py | 2 | CODE | |
| LOW | netbox/netbox/api/serializers/__init__.py | 3 | CODE | |
| LOW | netbox/netbox/api/serializers/__init__.py | 4 | CODE | |
| LOW | netbox/netbox/api/serializers/__init__.py | 6 | CODE | |
| LOW | netbox/netbox/api/serializers/__init__.py | 7 | CODE | |
| LOW | netbox/netbox/views/__init__.py | 1 | CODE | |
| LOW | netbox/netbox/views/__init__.py | 2 | CODE | |
| LOW | netbox/netbox/views/generic/__init__.py | 1 | CODE | |
| LOW | netbox/netbox/views/generic/__init__.py | 2 | CODE | |
| LOW | netbox/netbox/views/generic/__init__.py | 3 | CODE | |
| LOW | netbox/core/signals.py | 18 | CODE | |
| LOW | netbox/core/filtersets.py | 12 | CODE | |
| LOW | netbox/core/filtersets.py | 13 | CODE | |
| LOW | netbox/core/apps.py | 9 | CODE | |
| LOW | netbox/core/apps.py | 31 | CODE | |
| LOW | netbox/core/apps.py | 32 | CODE | |
| LOW | netbox/core/apps.py | 32 | CODE | |
| LOW | netbox/core/apps.py | 32 | CODE | |
| LOW | netbox/core/apps.py | 37 | CODE | |
| LOW | netbox/core/apps.py | 39 | CODE | |
| 881 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | upgrade.sh | 50 | # Create a new virtual environment | COMMENT |
| MEDIUM | netbox/netbox/configuration_example.py | 71 | # Define a mapping of cryptographic peppers to use when hashing API tokens. A minimum of one pepper is required to | COMMENT |
| MEDIUM | netbox/netbox/tables/columns.py | 328 | # Create the actions dropdown menu | COMMENT |
| MEDIUM | netbox/netbox/tables/tables.py | 331 | # Create a copy to avoid modifying the original Column | COMMENT |
| MEDIUM | netbox/netbox/tests/test_authentication.py | 43 | # Create a v1 token | COMMENT |
| MEDIUM | netbox/netbox/tests/test_authentication.py | 65 | # Create a v2 token | COMMENT |
| MEDIUM | netbox/netbox/tests/test_authentication.py | 724 | # Create a permitted object | COMMENT |
| MEDIUM⚡ | netbox/netbox/tests/test_config.py | 65 | # Creating the first ConfigRevision fires the post_save handler, which activates it and | COMMENT |
| MEDIUM⚡ | netbox/netbox/tests/test_config.py | 107 | # Create a config but don't load it into the cache | COMMENT |
| MEDIUM⚡ | netbox/netbox/tests/test_config.py | 117 | # Create a config and load it into the cache | COMMENT |
| MEDIUM | netbox/netbox/tests/test_config.py | 129 | # Create a config and load it into the cache | COMMENT |
| MEDIUM | netbox/netbox/models/deletion.py | 120 | # Create a unique key for this relation | COMMENT |
| MEDIUM | netbox/netbox/search/deferred.py | 11 | # This module is internal plumbing for the search signal handlers; nothing here | COMMENT |
| MEDIUM | netbox/netbox/views/generic/object_views.py | 610 | # Create the new components | COMMENT |
| MEDIUM | netbox/netbox/authentication/__init__.py | 106 | # Create a dictionary mapping permissions to their constraints | COMMENT |
| MEDIUM | netbox/netbox/authentication/__init__.py | 314 | # Create a new instance of django-auth-ldap's LDAPBackend with our own ObjectPermissions | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 48 | # Create a custom field on the Site model | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 58 | # Create a select custom field on the Site model | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 236 | # Create a Site | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 266 | # Create a Site | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 337 | # Create a cable between the interfaces | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 407 | # Create a custom field on the Site model | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 417 | # Create a select custom field on the Site model | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 656 | # Create a new Module | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 668 | # Create an Interface on the Module | COMMENT |
| MEDIUM | netbox/core/tests/test_changelog.py | 716 | # Create a FrontPort mapped to the RearPort (creates a PortMapping) | COMMENT |
| MEDIUM | netbox/virtualization/tests/test_views.py | 715 | # Create a child interface | COMMENT |
| MEDIUM⚡ | netbox/virtualization/tests/test_models.py | 115 | # Create the first VM | COMMENT |
| MEDIUM⚡ | netbox/virtualization/tests/test_models.py | 124 | # Create the second VM | COMMENT |
| MEDIUM | netbox/virtualization/tests/test_models.py | 161 | # Create the cluster type | COMMENT |
| MEDIUM | netbox/virtualization/tests/test_models.py | 700 | # Create a VM pinned to device_in_cluster | COMMENT |
| MEDIUM | netbox/virtualization/tests/test_models.py | 718 | # Create a VM pinned to a device | COMMENT |
| MEDIUM | netbox/virtualization/tests/test_api.py | 856 | # Create a child interface | COMMENT |
| MEDIUM | netbox/tenancy/tests/test_models.py | 108 | # Create a tree of contact groups: | COMMENT |
| MEDIUM | netbox/dcim/views.py | 122 | # Create a new Form class from ConfirmationForm | COMMENT |
| MEDIUM | netbox/dcim/svg/cables.py | 446 | # Create the connector | COMMENT |
| MEDIUM | netbox/dcim/tests/test_cablepaths2.py | 1246 | # Create a 2-connector trunk cable with both A-side connectors | COMMENT |
| MEDIUM | netbox/dcim/tests/test_cablepaths2.py | 2345 | # Create a PortMapping between frontport1 and rearport1 | COMMENT |
| MEDIUM | netbox/dcim/tests/test_cablepaths2.py | 2707 | # Create the mid-span cable without a profile | COMMENT |
| MEDIUM | netbox/dcim/tests/test_cablepaths2.py | 2865 | # Creating the cable warms both caches and saving it resets the flag | COMMENT |
| MEDIUM | netbox/dcim/tests/test_signals.py | 877 | # Creating a PortMapping connecting the front and rear ports should retrace paths | COMMENT |
| MEDIUM | netbox/dcim/tests/test_tables.py | 212 | # Create the servers in ascending order, then cable them in descending order, so that | COMMENT |
| MEDIUM⚡ | netbox/dcim/tests/test_views.py | 3506 | # Create a module *without* replicating components | COMMENT |
| MEDIUM⚡ | netbox/dcim/tests/test_views.py | 3515 | # Create a second module (in the next bay) with replicated components | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 3543 | # Create a module *without* replicating components | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 3564 | # Create a second module (in the next bay) with replicated components | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 3602 | # Create an interface to be adopted | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 3609 | # Create a module with adopted components | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 3646 | # Create an interface to be adopted | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 3653 | # Create a module with adopted components | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 4173 | # Create a child interface | COMMENT |
| MEDIUM | netbox/dcim/tests/test_views.py | 1126 | # Create the manufacturer and platform | STRING |
| MEDIUM | netbox/dcim/tests/test_views.py | 1873 | # Create the manufacturer | STRING |
| MEDIUM⚡ | netbox/dcim/tests/test_models.py | 2195 | # Create a module type with a rear port template | COMMENT |
| MEDIUM⚡ | netbox/dcim/tests/test_models.py | 2201 | # Create a rear port template with 12 positions (splice) | COMMENT |
| MEDIUM⚡ | netbox/dcim/tests/test_models.py | 2280 | # Create a module type without any port template mappings | COMMENT |
| MEDIUM⚡ | netbox/dcim/tests/test_models.py | 2286 | # Create a rear port template | COMMENT |
| MEDIUM | netbox/dcim/tests/test_models.py | 803 | # Create a CustomField with a default value & assign it to all component models | COMMENT |
| MEDIUM | netbox/dcim/tests/test_models.py | 1314 | # Create a disabled device bay with a device being installed | COMMENT |
| MEDIUM | netbox/dcim/tests/test_models.py | 1355 | # Create an enabled device bay with a device installed | COMMENT |
| 78 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | netbox/netbox/filtersets.py | 126 | except (ValueError, TypeError): | CODE |
| HIGH | netbox/netbox/settings.py | 1063 | except ImportError: | CODE |
| HIGH | netbox/netbox/tables/columns.py | 739 | except Exception: | CODE |
| HIGH | netbox/netbox/tables/tables.py | 393 | except NoReverseMatch: | CODE |
| HIGH | netbox/netbox/tests/test_search.py | 646 | except RuntimeError: | CODE |
| HIGH | netbox/netbox/tests/test_search.py | 747 | except RuntimeError: | CODE |
| HIGH | netbox/netbox/tests/test_search.py | 785 | except RuntimeError: | CODE |
| HIGH | netbox/netbox/models/features.py | 674 | except DataFile.DoesNotExist: | CODE |
| HIGH | netbox/netbox/search/backends.py | 193 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/netbox/api/metadata.py | 29 | except (exceptions.APIException, PermissionDenied, Http404): | CODE |
| HIGH | netbox/netbox/api/fields.py | 93 | except TypeError: # Input is an unhashable type | CODE |
| HIGH | netbox/netbox/api/fields.py | 87 | except ValueError: | CODE |
| HIGH | netbox/netbox/api/pagination.py | 132 | except (KeyError, ValueError): | CODE |
| HIGH | netbox/netbox/views/misc.py | 112 | except re.error: | CODE |
| HIGH | netbox/netbox/authentication/__init__.py | 331 | except ModuleNotFoundError: | CODE |
| HIGH | netbox/netbox/authentication/__init__.py | 237 | except User.DoesNotExist: | CODE |
| HIGH | netbox/core/plugins.py | 238 | except requests.exceptions.RequestException: | CODE |
| HIGH | netbox/core/checks.py | 156 | except Exception: | CODE |
| HIGH | netbox/core/apps.py | 59 | except Exception: | CODE |
| HIGH | netbox/core/jobs.py | 108 | except requests.exceptions.RequestException: | CODE |
| HIGH | netbox/core/utils.py | 203 | except DatabaseError: | CODE |
| HIGH | netbox/core/utils.py | 69 | except NoSuchJobError: | CODE |
| HIGH | netbox/core/views.py | 725 | except (DatabaseError, IndexError): | CODE |
| HIGH | netbox/core/forms/model_forms.py | 191 | except TypeError: | CODE |
| HIGH | netbox/core/tests/test_data_backends.py | 78 | except Exception: | CODE |
| HIGH | netbox/core/management/commands/nbshell.py | 153 | except ModuleNotFoundError: # pragma: no cover | CODE |
| HIGH | netbox/core/models/files.py | 119 | except FileNotFoundError: | CODE |
| HIGH | netbox/core/models/object_types.py | 32 | except ObjectDoesNotExist: | CODE |
| HIGH | netbox/core/models/jobs.py | 214 | except InvalidJobOperation: | CODE |
| HIGH | netbox/virtualization/filtersets.py | 317 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/vpn/filtersets.py | 380 | except ValueError: | CODE |
| HIGH | netbox/dcim/filtersets.py | 239 | except ValueError: | CODE |
| HIGH | netbox/dcim/filtersets.py | 1649 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/dcim/filtersets.py | 1744 | except ValueError: | CODE |
| HIGH | netbox/dcim/views.py | 1987 | except ModuleType.DoesNotExist: | CODE |
| HIGH | netbox/dcim/views.py | 4410 | except ModuleBay.DoesNotExist: | CODE |
| HIGH | netbox/dcim/forms/bulk_import.py | 1552 | except forms.ValidationError: | CODE |
| HIGH | netbox/dcim/models/racks.py | 601 | except ValueError: | CODE |
| HIGH | netbox/dcim/models/devices.py | 928 | except DeviceType.DoesNotExist: | CODE |
| HIGH | netbox/utilities/fields.py | 336 | except ObjectDoesNotExist: | CODE |
| HIGH | netbox/utilities/paginator.py | 86 | except ValueError: | CODE |
| HIGH | netbox/utilities/json.py | 51 | except ValueError: | CODE |
| HIGH | netbox/utilities/views.py | 182 | except NoReverseMatch: | CODE |
| HIGH | netbox/utilities/forms/bulk_import.py | 100 | except IndexError: | CODE |
| HIGH | netbox/utilities/forms/widgets/modifiers.py | 121 | except (ValueError, TypeError): | CODE |
| HIGH | netbox/users/models/preferences.py | 49 | except (TypeError, KeyError): | CODE |
| HIGH | netbox/users/models/preferences.py | 59 | except (TypeError, KeyError): | CODE |
| HIGH | netbox/ipam/filtersets.py | 201 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/ipam/filtersets.py | 315 | except ValueError: | CODE |
| HIGH | netbox/ipam/filtersets.py | 446 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/ipam/filtersets.py | 566 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/ipam/filtersets.py | 1140 | except ValueError: | CODE |
| HIGH | netbox/ipam/filtersets.py | 1235 | except ValueError: | CODE |
| HIGH | netbox/ipam/filtersets.py | 455 | except (AddrFormatError, ValueError): | CODE |
| HIGH | netbox/ipam/views.py | 1210 | except (ValueError, Interface.DoesNotExist): | CODE |
| HIGH | netbox/ipam/views.py | 1216 | except (ValueError, VMInterface.DoesNotExist): | CODE |
| HIGH | netbox/ipam/views.py | 1222 | except (ValueError, FHRPGroup.DoesNotExist): | CODE |
| HIGH | netbox/extras/filtersets.py | 609 | except ValueError: | CODE |
| HIGH | netbox/extras/models/models.py | 923 | except ImportError: | CODE |
| HIGH | netbox/extras/dashboard/widgets.py | 303 | except ValueError: | CODE |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | netbox/netbox/models/ltree.py | 531 | SELECT r.id, r.parent_id, t.sort_path || chr(9) || r.{name_col} | CODE |
| HIGH | netbox/netbox/api/pagination.py | 24 | offset-based pagination. In cursor mode, `count` is omitted (null) for performance. | STRING |
| HIGH | netbox/dcim/forms/bulk_edit.py | 2067 | # Query for VLANs assigned to the same site and VLANs with no site assigned (null). | COMMENT |
| HIGH | netbox/dcim/tests/test_api.py | 4572 | An interface with no primary MAC round-trips both fields as null; echoing both back is accepted. | STRING |
| HIGH⚡ | netbox/dcim/models/cables.py | 1023 | # If not null, push cable positions onto the stack | COMMENT |
| HIGH | netbox/utilities/ltree.py | 132 | NEW.path := parent_path || lpad(NEW.id::text, 19, '0')::ltree; | CODE |
| HIGH | netbox/utilities/ltree.py | 148 | 'UPDATE %%I SET path = $1 || subpath(path, nlevel($2))' | CODE |
| HIGH | netbox/utilities/ltree.py | 202 | NEW.path := parent_path || lpad(NEW.id::text, 19, '0')::ltree; | CODE |
| HIGH | netbox/utilities/ltree.py | 203 | NEW.sort_path := parent_sort_path || chr(9) || NEW."{name_col}"; | CODE |
| HIGH | netbox/utilities/ltree.py | 224 | ' path = $1 || subpath(path, nlevel($2)), ' | STRING |
| HIGH | netbox/utilities/mptt_to_ltree.py | 103 | t.path || lpad(r.id::text, {_PATH_LABEL_WIDTH}, '0')::ltree, | CODE |
| HIGH | netbox/utilities/mptt_to_ltree.py | 104 | t.sort_path || chr(9) || r.name | CODE |
| HIGH | netbox/utilities/mptt_to_ltree.py | 115 | SELECT r.id, r.parent_id, t.path || lpad(r.id::text, {_PATH_LABEL_WIDTH}, '0')::ltree | CODE |
| HIGH | netbox/utilities/mptt_to_ltree.py | 145 | f" WHERE c.path <> p.path || lpad(c.id::text, {_PATH_LABEL_WIDTH}, '0')::ltree" | STRING |
| HIGH | netbox/utilities/mptt_to_ltree.py | 153 | f' WHERE c.sort_path <> p.sort_path || chr(9) || c.name' | STRING |
| HIGH | netbox/utilities/tests/test_filter_modifiers.py | 113 | # Simulate a query for objects with no tenant assigned (?tenant_id=null) | COMMENT |
| HIGH | netbox/ipam/tests/test_forms.py | 293 | '[null]', # a null row | CODE |
| HIGH | netbox/extras/lookups.py | 90 | A key is considered empty if it is "", null, or does not exist. | STRING |
| HIGH | netbox/extras/conditions.py | 199 | # The referenced snapshot is null, which excuses only data the event would otherwise | COMMENT |
| HIGH | netbox/extras/conditions.py | 301 | # An absent snapshot resolves to null, which satisfies only a comparison against | COMMENT |
| HIGH | netbox/extras/filters.py | 60 | # `<key>__isnull` matches only a missing key and `<key>=None` only a JSON null, so together | COMMENT |
| HIGH | netbox/extras/tests/test_customfields.py | 2737 | # do an object holding an explicit null; see MissingKeyAwareFilterMixin. | COMMENT |
| HIGH | netbox/extras/tests/test_customfields.py | 122 | site_c = Site.objects.get(name='Site C') # no value (null) | CODE |
| HIGH | netbox/extras/tests/test_customfields.py | 2514 | null, which CustomField.validate() rejects for a required field. | STRING |
| HIGH⚡ | netbox/extras/tests/test_models.py | 1678 | clean() should accept a JSON object (or null) as action_data. | STRING |
| HIGH | netbox/extras/models/models.py | 181 | # action_data must be a JSON object (or null) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/filtersets.py | 111 | CODE | |
| LOW | netbox/netbox/filtersets.py | 198 | CODE | |
| LOW | netbox/netbox/filtersets.py | 410 | CODE | |
| LOW | netbox/netbox/jobs.py | 110 | CODE | |
| LOW | netbox/netbox/settings_utils.py | 147 | CODE | |
| LOW | netbox/netbox/tables/tables.py | 120 | CODE | |
| LOW | netbox/netbox/forms/bulk_import.py | 74 | CODE | |
| LOW | netbox/netbox/tests/test_forms.py | 513 | CODE | |
| LOW | netbox/netbox/tests/test_model_features.py | 108 | CODE | |
| LOW | netbox/netbox/tests/test_search.py | 762 | CODE | |
| LOW | netbox/netbox/tests/test_api_background.py | 311 | CODE | |
| LOW | netbox/netbox/models/__init__.py | 86 | CODE | |
| LOW | netbox/netbox/models/features.py | 140 | CODE | |
| LOW | netbox/netbox/models/deletion.py | 82 | CODE | |
| LOW | netbox/netbox/search/backends.py | 176 | CODE | |
| LOW | netbox/netbox/search/backends.py | 262 | CODE | |
| LOW | netbox/netbox/search/backends.py | 410 | CODE | |
| LOW | netbox/netbox/graphql/utils.py | 86 | CODE | |
| LOW | netbox/netbox/graphql/pagination.py | 84 | CODE | |
| LOW | netbox/netbox/api/fields.py | 66 | CODE | |
| LOW | netbox/netbox/api/pagination.py | 113 | CODE | |
| LOW | netbox/netbox/views/generic/object_views.py | 275 | CODE | |
| LOW | netbox/netbox/views/generic/object_views.py | 575 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 428 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 521 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 586 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 733 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 834 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 933 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 1076 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 1110 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 1208 | CODE | |
| LOW | netbox/netbox/views/generic/bulk_views.py | 1333 | CODE | |
| LOW | netbox/core/signals.py | 94 | CODE | |
| LOW | netbox/core/signals.py | 171 | CODE | |
| LOW | netbox/core/signals.py | 313 | CODE | |
| LOW | netbox/core/models/data.py | 180 | CODE | |
| LOW | netbox/virtualization/forms/model_forms.py | 160 | CODE | |
| LOW | netbox/virtualization/forms/bulk_edit.py | 301 | CODE | |
| LOW | netbox/virtualization/models/virtualmachines.py | 288 | CODE | |
| LOW | netbox/circuits/models/circuits.py | 463 | CODE | |
| LOW | netbox/vpn/forms/model_forms.py | 526 | CODE | |
| LOW | netbox/dcim/signals.py | 403 | CODE | |
| LOW | netbox/dcim/utils.py | 156 | CODE | |
| LOW | netbox/dcim/utils.py | 356 | CODE | |
| LOW | netbox/dcim/views.py | 134 | CODE | |
| LOW | netbox/dcim/svg/cables.py | 168 | CODE | |
| LOW | netbox/dcim/svg/cables.py | 352 | CODE | |
| LOW | netbox/dcim/tables/cables.py | 30 | CODE | |
| LOW | netbox/dcim/forms/model_forms.py | 1791 | CODE | |
| LOW | netbox/dcim/forms/model_forms.py | 2410 | CODE | |
| LOW | netbox/dcim/forms/connections.py | 12 | CODE | |
| LOW | netbox/dcim/forms/connections.py | 16 | CODE | |
| LOW | netbox/dcim/forms/common.py | 114 | CODE | |
| LOW | netbox/dcim/forms/bulk_edit.py | 2049 | CODE | |
| LOW | netbox/dcim/tests/test_api.py | 3316 | CODE | |
| LOW | netbox/dcim/tests/test_api.py | 4685 | CODE | |
| LOW | netbox/dcim/tests/test_api.py | 136 | CODE | |
| LOW | netbox/dcim/tests/test_cablepath_rebuilds.py | 179 | CODE | |
| LOW | netbox/dcim/tests/test_cablepath_rebuilds.py | 1069 | CODE | |
| 69 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/jobs.py | 128 | except Exception as e: | CODE |
| LOW | netbox/netbox/settings_utils.py | 172 | except Exception: | CODE |
| LOW | netbox/netbox/tables/columns.py | 728 | except Exception as e: | STRING |
| LOW | netbox/netbox/tables/columns.py | 739 | except Exception: | STRING |
| MEDIUM | netbox/netbox/tables/columns.py | 724 | def render(self, record, table, **kwargs): | CODE |
| MEDIUM | netbox/netbox/tables/columns.py | 735 | def value(self, record, table, **kwargs): | CODE |
| LOW | netbox/netbox/models/ltree.py | 134 | except Exception: | CODE |
| LOW | netbox/netbox/search/deferred.py | 71 | except Exception: | CODE |
| LOW | netbox/netbox/api/viewsets/mixins.py | 272 | except Exception: | CODE |
| LOW | netbox/netbox/views/misc.py | 52 | except Exception: | CODE |
| LOW | netbox/netbox/views/misc.py | 64 | except Exception: | CODE |
| LOW | netbox/netbox/views/generic/bulk_views.py | 169 | except Exception as e: | CODE |
| LOW | netbox/core/signals.py | 347 | except Exception as e: | CODE |
| LOW | netbox/core/checks.py | 156 | except Exception: | CODE |
| LOW | netbox/core/apps.py | 59 | except Exception: | CODE |
| LOW | netbox/core/jobs.py | 53 | except Exception as e: | CODE |
| LOW | netbox/core/tables/tasks.py | 110 | except Exception as e: | CODE |
| MEDIUM | netbox/core/tables/tasks.py | 107 | def render_callable(self, value, record): | CODE |
| LOW⚡ | netbox/core/tests/test_data_backends.py | 78 | except Exception: | CODE |
| LOW | netbox/core/management/commands/syncdatasource.py | 41 | except Exception as e: | CODE |
| LOW | netbox/utilities/request.py | 144 | except Exception as e: | CODE |
| LOW | netbox/utilities/api.py | 69 | except Exception: | CODE |
| LOW | netbox/utilities/rqworker.py | 59 | except Exception: | CODE |
| MEDIUM | netbox/utilities/rqworker.py | 46 | def heartbeat(self, *args, **kwargs): | CODE |
| LOW | netbox/utilities/templatetags/plugins.py | 45 | except Exception as e: | CODE |
| LOW | netbox/extras/events.py | 240 | except Exception: | CODE |
| LOW | netbox/extras/jobs.py | 336 | except Exception as e: | CODE |
| LOW | netbox/extras/scripts.py | 673 | except Exception as e: | CODE |
| LOW | netbox/extras/webhooks.py | 72 | except Exception as e: | CODE |
| LOW | netbox/extras/views.py | 1326 | except Exception as e: | CODE |
| LOW | netbox/extras/templatetags/dashboard.py | 15 | except Exception as e: | CODE |
| LOW | netbox/extras/templatetags/custom_links.py | 70 | except Exception as e: | STRING |
| LOW | netbox/extras/templatetags/custom_links.py | 85 | except Exception as e: | STRING |
| LOW | netbox/extras/forms/scripts.py | 89 | except Exception as e: | CODE |
| LOW | netbox/extras/forms/scripts.py | 98 | except Exception as e: | CODE |
| LOW | netbox/extras/models/mixins.py | 150 | except Exception: | CODE |
| LOW | netbox/extras/models/scripts.py | 164 | except Exception as e: | CODE |
| LOW | netbox/extras/api/mixins.py | 67 | except Exception as e: | CODE |
| MEDIUM | netbox/extras/api/mixins.py | 64 | def render_configtemplate(self, request, configtemplate, context): | CODE |
| LOW | netbox/extras/api/serializers_/scripts.py | 65 | except Exception as e: | CODE |
| LOW | netbox/extras/api/serializers_/scripts.py | 95 | except Exception: | CODE |
| LOW | netbox/extras/api/serializers_/scripts.py | 109 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | netbox/netbox/tests/test_search.py | 20 | # each registered callback as a (savepoint_ids, func, robust) tuple. | COMMENT |
| MEDIUM⚡ | netbox/netbox/tests/test_views.py | 521 | # super().delete(). Note what this detects: every test here runs inside the harness' | COMMENT |
| MEDIUM⚡ | netbox/netbox/tests/test_views.py | 524 | # escapes the collector's atomic(savepoint=False) and marks the harness' transaction as | COMMENT |
| MEDIUM | netbox/netbox/search/backends.py | 248 | # Omit any results pertaining to an object the user does not have permission to view | COMMENT |
| MEDIUM | netbox/netbox/search/deferred.py | 62 | # On the transactional path below, transaction.on_commit(..., robust=True) | COMMENT |
| MEDIUM | netbox/netbox/search/deferred.py | 90 | # robust=True is required, not just belt-and-suspenders: Django runs | COMMENT |
| MEDIUM | netbox/netbox/search/deferred.py | 94 | # _flush handles the recoverable Redis fault itself; robust=True is the | COMMENT |
| MEDIUM | netbox/core/signals.py | 126 | # This will impact changes that utilize clear() however so we may want to give consideration for this branch | COMMENT |
| MEDIUM | netbox/core/models/data.py | 359 | # TODO: Something more robust | COMMENT |
| LOW | netbox/core/api/schema.py | 142 | # if not bulk - just return normal id | COMMENT |
| MEDIUM | netbox/dcim/tests/test_models.py | 415 | # A non-robust on-commit callback would re-raise the OSError here | COMMENT |
| MEDIUM | netbox/dcim/models/cables.py | 249 | # Query self.terminations.all() to leverage cached results | COMMENT |
| LOW | netbox/utilities/paginator.py | 48 | # When dealing with five or fewer pages, simply return the whole list. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | base_requirements.txt | 21 | # HTMX utilities for Django | COMMENT |
| LOW | base_requirements.txt | 61 | COMMENT | |
| LOW | netbox/netbox/jobs.py | 161 | # Reschedule the next occurrence. If the object's configuration has become invalid since this run was | COMMENT |
| LOW | netbox/netbox/jobs.py | 381 | # Re-apply object-level permission restriction exactly as BaseViewSet.initial() does. | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 1 | ######################### | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 41 | # Set this to True to skip TLS certificate verification | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 61 | # 'CA_CERT_PATH': '/etc/ssl/certs/ca.crt', | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 81 | COMMENT | |
| LOW | netbox/netbox/configuration_example.py | 141 | } | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 181 | # the default value of this setting is derived from the installed location. | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 221 | COMMENT | |
| LOW | netbox/netbox/configuration_example.py | 241 | # If you would like to use base 2 (e.g. 1024 MB = 1 GB) set this to 1024. | COMMENT |
| LOW | netbox/netbox/search/backends.py | 121 | COMMENT | |
| LOW | netbox/netbox/search/backends.py | 341 | try: | COMMENT |
| LOW | netbox/netbox/search/backends.py | 361 | # deliberately not to reads of the model being indexed; see _STALE_INDEX_TARGET_SQLSTATES for | COMMENT |
| LOW | netbox/netbox/search/backends.py | 461 | # (and NetBox's) READ COMMITTED isolation takes a fresh snapshot per statement | COMMENT |
| LOW | netbox/netbox/graphql/pagination.py | 101 | # and force ordering by primary key to ensure consistent pagination across all records. | COMMENT |
| LOW | netbox/netbox/authentication/misc.py | 1 | # Copyright (c) 2009, Peter Sagerson | COMMENT |
| LOW | netbox/core/signals.py | 201 | COMMENT | |
| LOW | netbox/core/api/schema.py | 381 | remove_fields = [] | COMMENT |
| LOW | netbox/utilities/ltree.py | 161 | # ICU collations with default variable weighting treat U+0001..U+0008 as | COMMENT |
| LOW | netbox/utilities/ltree.py | 241 | # node recomputes its sort_path. The cascade trigger then propagates the new | COMMENT |
| LOW | netbox/utilities/ltree.py | 261 | # — which runs with `search_path` set to the empty string and schema-qualifies | COMMENT |
| LOW | netbox/templates/graphql/graphiql.html | 61 | COMMENT | |
| LOW | netbox/ipam/constants.py | 1 | from django.db.models import Q | COMMENT |
| LOW | netbox/extras/signals.py | 381 | COMMENT | |
| LOW | netbox/extras/cache.py | 41 | # on a deployment whose router writes elsewhere the callback would be registered against a | COMMENT |
| LOW | netbox/extras/cache.py | 61 | # in which case the callback runs immediately. | COMMENT |
| LOW | scripts/save_database.sh | 1 | #!/bin/sh | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/configuration_example.py | 91 | # ('John Doe', 'jdoe@example.com'), | COMMENT |
| LOW⚡ | netbox/netbox/tests/test_search.py | 40 | comments='Lorem ipsum etcetera' | CODE |
| LOW⚡ | netbox/netbox/tests/test_search.py | 49 | comments='Lorem ipsum etcetera' | CODE |
| LOW⚡ | netbox/netbox/tests/test_search.py | 58 | comments='Lorem ipsum etcetera' | CODE |
| LOW⚡ | netbox/netbox/tests/test_search.py | 590 | comments='Lorem ipsum', | CODE |
| LOW | netbox/netbox/tests/test_search.py | 121 | comments='Lorem ipsum etcetera' | CODE |
| LOW | netbox/netbox/tests/test_search.py | 346 | comments='Lorem ipsum', | CODE |
| LOW | netbox/netbox/tests/test_search.py | 419 | comments='Lorem ipsum', | CODE |
| LOW | netbox/netbox/tests/test_search.py | 448 | comments='Lorem ipsum', | CODE |
| LOW | netbox/netbox/tests/test_search.py | 676 | comments='Lorem ipsum', | CODE |
| LOW | netbox/core/forms/model_forms.py | 47 | 'placeholder': '.cache\n*.txt\nsubdir/*' | CODE |
| LOW | netbox/project-static/src/forms/filterModifiers.ts | 69 | valueInput.setAttribute('placeholder', placeholder); | CODE |
| LOW | netbox/project-static/src/forms/filterModifiers.ts | 72 | valueInput.removeAttribute('placeholder'); | CODE |
| LOW | netbox/utilities/templatetags/builtins/filters.py | 31 | 'placeholder', | CODE |
| LOW | netbox/utilities/forms/fields/fields.py | 144 | self.widget.attrs['placeholder'] = '' | CODE |
| LOW⚡ | netbox/utilities/forms/widgets/datetime.py | 17 | self.attrs['placeholder'] = 'YYYY-MM-DD' | CODE |
| LOW⚡ | netbox/utilities/forms/widgets/datetime.py | 27 | self.attrs['placeholder'] = 'YYYY-MM-DD hh:mm:ss' | CODE |
| LOW⚡ | netbox/utilities/forms/widgets/datetime.py | 37 | self.attrs['placeholder'] = 'hh:mm:ss' | CODE |
| LOW⚡ | netbox/utilities/tests/test_jsonschema.py | 247 | ('email', forms.EmailField, 'user@example.com'), | CODE |
| LOW | netbox/ipam/forms/filtersets.py | 212 | 'placeholder': 'Prefix', | CODE |
| LOW | netbox/ipam/forms/filtersets.py | 365 | 'placeholder': 'Prefix', | CODE |
| LOW | netbox/ipam/forms/filtersets.py | 659 | 'placeholder': 'e.g. tcp/80', | CODE |
| LOW | netbox/extras/tests/test_management_commands.py | 257 | email='admin@example.com', | CODE |
| LOW | netbox/extras/tests/test_api.py | 1744 | 'data': {'placeholder': True}, | CODE |
| LOW | netbox/extras/tests/test_api.py | 1829 | 'data': {'placeholder': True}, | CODE |
| LOW | docs/plugins/development/index.md | 171 | {name = "John Doe", email = "test@netboxlabs.com"}, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/configuration_example.py | 41 | # Set this to True to skip TLS certificate verification | COMMENT |
| LOW | netbox/netbox/configuration_example.py | 57 | # Set this to True to skip TLS certificate verification | COMMENT |
| LOW | netbox/netbox/plugins/urls.py | 25 | # Check if the plugin specifies any base URLs | COMMENT |
| LOW | netbox/netbox/plugins/urls.py | 32 | # Check if the plugin specifies any API URLs | COMMENT |
| LOW | netbox/netbox/plugins/views.py | 55 | # Check if the plugin specifies any API URLs | COMMENT |
| LOW | netbox/netbox/views/generic/bulk_views.py | 754 | # Iterate through data and bind each record to a new model form instance. Object-level | COMMENT |
| LOW | netbox/dcim/tests/test_models.py | 2172 | # Assign bay2 to module1 and verify parent is now set to bay1 (module1's bay) | COMMENT |
| LOW | netbox/dcim/models/modules.py | 568 | # Check if there's a component with the same name already | COMMENT |
| LOW | netbox/dcim/models/modules.py | 570 | # Assign it to the module | COMMENT |
| LOW | netbox/utilities/fields.py | 122 | # Check if the content type actually exists | COMMENT |
| LOW | netbox/utilities/templatetags/buttons.py | 42 | # Check if this user has already bookmarked the object | COMMENT |
| LOW | netbox/utilities/templatetags/buttons.py | 77 | # Check if this user has already subscribed to the object | COMMENT |
| LOW | netbox/utilities/templatetags/helpers.py | 498 | # Check if this is a modifier-enhanced field | COMMENT |
| LOW | netbox/utilities/forms/fields/csv.py | 27 | # Check if value is omitted using parent behavior | COMMENT |
| LOW | netbox/ipam/forms/model_forms.py | 607 | # Check if we need to create a new IPAddress for the group | COMMENT |
| LOW | netbox/ipam/tests/test_filtersets.py | 2170 | # Assign VLANs to device interfaces | COMMENT |
| LOW | netbox/ipam/tests/test_filtersets.py | 2178 | # Assign VLANs to VM interfaces | COMMENT |
| LOW | netbox/extras/tests/test_customfields.py | 115 | # Assign values to two of the three sites, leaving the third null | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | netbox/dcim/models/cables.py | 1019 | # Step 1: Record the near-end termination object(s) | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1027 | # Step 2: Determine the attached links (Cable or WirelessLink), if any | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1043 | # Step 3: Record asymmetric paths as split | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1049 | # Step 4: Record the links, keeping cables in order to allow for SVG rendering | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1056 | # Step 5: Update the path status if a link is not connected | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1061 | # Step 6: Determine the far-end terminations | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1157 | # Step 7: Record the far-end termination object(s) | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1162 | # Step 8: Determine the "next hop" terminations, if applicable | COMMENT |
| LOW | docs/customization/reports.md | 10 | ### Step 1: Update Class Definition | COMMENT |
| LOW | docs/customization/reports.md | 26 | ### Step 2: Update Logging Calls | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | netbox/netbox/graphql/filter_lookups.py | 22 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | netbox/netbox/graphql/filter_lookups.py | 24 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | netbox/project-static/styles/custom/_misc.scss | 100 | // ── Sticky action bars ────────────────────────────────────── | COMMENT |
| MEDIUM | netbox/project-static/styles/custom/_misc.scss | 182 | // ── /Sticky action bars ───────────────────────────────────── | COMMENT |
| MEDIUM | netbox/project-static/styles/custom/_misc.scss | 184 | // ── Port mapping widget ───────────────────────────────────── | COMMENT |
| MEDIUM | netbox/project-static/styles/custom/_misc.scss | 202 | // ── /Port mapping widget ──────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | netbox/dcim/models/cables.py | 1019 | # Step 1: Record the near-end termination object(s) | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1027 | # Step 2: Determine the attached links (Cable or WirelessLink), if any | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1043 | # Step 3: Record asymmetric paths as split | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1049 | # Step 4: Record the links, keeping cables in order to allow for SVG rendering | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1056 | # Step 5: Update the path status if a link is not connected | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1061 | # Step 6: Determine the far-end terminations | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1157 | # Step 7: Record the far-end termination object(s) | COMMENT |
| LOW⚡ | netbox/dcim/models/cables.py | 1162 | # Step 8: Determine the "next hop" terminations, if applicable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | netbox/netbox/jobs.py | 364 | # Instantiate the viewset and apply the minimal scaffolding that DRF's as_view() | COMMENT |
| MEDIUM | netbox/netbox/cli.py | 66 | # `setup` owns its own parser (netbox.scaffold); dispatch before the wrapper parser. | COMMENT |
| MEDIUM | netbox/netbox/tests/test_api_background.py | 137 | # Apply the same minimal scaffolding as AsyncAPIJob does when it invokes an action directly | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/core/models/jobs.py | 278 | CODE | |
| LOW | netbox/dcim/svg/racks.py | 99 | CODE | |
| LOW | netbox/dcim/models/racks.py | 623 | CODE | |
| LOW | netbox/utilities/forms/fields/dynamic.py | 88 | CODE | |
| LOW | netbox/users/utils.py | 76 | CODE | |
| LOW | netbox/extras/models/mixins.py | 250 | CODE | |
| LOW | netbox/extras/dashboard/widgets.py | 126 | CODE | |
| LOW | netbox/extras/api/serializers_/scripts.py | 169 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netbox/netbox/plugins/registration.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | netbox/netbox/search/jobs.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | netbox/netbox/search/backends.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | netbox/netbox/search/deferred.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | netbox/extras/models/mixins.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | netbox/extras/api/serializers_/scripts.py | 16 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | netbox/utilities/templatetags/helpers.py | 100 | Render the action URL node. Args: context: The template context Returns: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | upgrade.sh | 155 | echo "Upgrade complete! Don't forget to restart the NetBox services:" | CODE |
| MEDIUM | netbox/extras/constants.py | 123 | 'This is your personal dashboard. Feel free to customize it by rearranging, resizing, or removing ' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | netbox/netbox/tests/test_model_test_coverage.py | 278 | def helper(self): | CODE |