nautobot 2.1.0__py3-none-any.whl → 2.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nautobot/__init__.py +1 -3
- nautobot/apps/__init__.py +1 -2
- nautobot/apps/admin.py +0 -1
- nautobot/apps/api.py +0 -1
- nautobot/apps/change_logging.py +0 -1
- nautobot/apps/choices.py +0 -1
- nautobot/apps/datasources.py +0 -1
- nautobot/apps/exceptions.py +0 -1
- nautobot/apps/factory.py +0 -1
- nautobot/apps/filters.py +6 -9
- nautobot/apps/forms.py +1 -2
- nautobot/apps/graphql.py +0 -1
- nautobot/apps/jobs.py +0 -1
- nautobot/apps/models.py +1 -2
- nautobot/apps/querysets.py +0 -1
- nautobot/apps/secrets.py +0 -1
- nautobot/apps/tables.py +0 -1
- nautobot/apps/testing.py +0 -1
- nautobot/apps/ui.py +1 -3
- nautobot/apps/urls.py +0 -1
- nautobot/apps/utils.py +0 -1
- nautobot/apps/views.py +0 -1
- nautobot/circuits/api/serializers.py +1 -1
- nautobot/circuits/api/urls.py +1 -1
- nautobot/circuits/api/views.py +2 -1
- nautobot/circuits/apps.py +1 -1
- nautobot/circuits/choices.py +0 -1
- nautobot/circuits/factory.py +1 -1
- nautobot/circuits/filters.py +2 -1
- nautobot/circuits/forms.py +2 -2
- nautobot/circuits/homepage.py +0 -1
- nautobot/circuits/migrations/0001_initial_part_1.py +3 -1
- nautobot/circuits/migrations/0002_initial_part_2.py +2 -1
- nautobot/circuits/migrations/0003_auto_slug.py +1 -0
- nautobot/circuits/migrations/0005_providernetwork.py +4 -2
- nautobot/circuits/migrations/0013_alter_circuittermination__path.py +1 -0
- nautobot/circuits/migrations/0014_related_name_changes.py +1 -0
- nautobot/circuits/migrations/0016_tagsfield.py +1 -0
- nautobot/circuits/migrations/0018_status_nonnullable.py +1 -0
- nautobot/circuits/models.py +2 -2
- nautobot/circuits/navigation.py +0 -1
- nautobot/circuits/signals.py +3 -2
- nautobot/circuits/tables.py +1 -0
- nautobot/circuits/tests/integration/test_relationships.py +1 -1
- nautobot/circuits/tests/test_api.py +1 -1
- nautobot/circuits/tests/test_urls.py +1 -1
- nautobot/circuits/tests/test_views.py +1 -0
- nautobot/circuits/urls.py +1 -1
- nautobot/circuits/views.py +0 -2
- nautobot/core/__init__.py +0 -1
- nautobot/core/admin.py +3 -5
- nautobot/core/api/__init__.py +0 -1
- nautobot/core/api/metadata.py +4 -6
- nautobot/core/api/pagination.py +2 -2
- nautobot/core/api/parsers.py +1 -3
- nautobot/core/api/renderers.py +0 -1
- nautobot/core/api/schema.py +2 -3
- nautobot/core/api/serializers.py +9 -7
- nautobot/core/api/urls.py +1 -5
- nautobot/core/api/utils.py +4 -6
- nautobot/core/api/versioning.py +1 -1
- nautobot/core/api/views.py +22 -91
- nautobot/core/apps/__init__.py +5 -7
- nautobot/core/authentication.py +1 -1
- nautobot/core/celery/__init__.py +1 -2
- nautobot/core/celery/control.py +0 -2
- nautobot/core/celery/encoders.py +0 -1
- nautobot/core/celery/schedulers.py +1 -2
- nautobot/core/celery/task.py +1 -1
- nautobot/core/checks.py +1 -2
- nautobot/core/choices.py +2 -2
- nautobot/core/cli/__init__.py +2 -3
- nautobot/core/context_processors.py +1 -5
- nautobot/core/factory.py +2 -2
- nautobot/core/filters.py +1 -1
- nautobot/core/forms/fields.py +2 -4
- nautobot/core/forms/forms.py +1 -1
- nautobot/core/forms/search.py +1 -1
- nautobot/core/forms/utils.py +1 -1
- nautobot/core/graphql/__init__.py +2 -3
- nautobot/core/graphql/generators.py +1 -1
- nautobot/core/graphql/schema.py +6 -7
- nautobot/core/graphql/schema_init.py +0 -1
- nautobot/core/graphql/utils.py +1 -2
- nautobot/core/management/commands/generate_test_data.py +4 -6
- nautobot/core/management/commands/makemigrations.py +1 -1
- nautobot/core/management/commands/migrate.py +1 -1
- nautobot/core/management/commands/post_upgrade.py +0 -15
- nautobot/core/management/commands/refresh_content_type_cache.py +1 -2
- nautobot/core/management/commands/send_installation_metrics.py +2 -3
- nautobot/core/management/commands/validate_models.py +1 -1
- nautobot/core/middleware.py +2 -2
- nautobot/core/models/__init__.py +12 -12
- nautobot/core/models/fields.py +1 -1
- nautobot/core/models/generics.py +2 -3
- nautobot/core/models/managers.py +0 -1
- nautobot/core/models/name_color_content_types.py +2 -2
- nautobot/core/models/tree_queries.py +2 -4
- nautobot/core/models/validators.py +1 -1
- nautobot/core/releases.py +1 -1
- nautobot/core/runner/importer.py +2 -25
- nautobot/core/runner/runner.py +2 -2
- nautobot/core/runner/settings.py +1 -1
- nautobot/core/settings.py +9 -22
- nautobot/core/settings_funcs.py +1 -2
- nautobot/core/signals.py +0 -1
- nautobot/core/tables.py +1 -1
- nautobot/core/templates/graphene/graphiql.html +7 -1
- nautobot/core/templates/inc/footer.html +0 -7
- nautobot/core/templates/nautobot_config.py.j2 +0 -4
- nautobot/core/templatetags/bootstrapped_goodies_tags.py +6 -3
- nautobot/core/templatetags/buttons.py +1 -1
- nautobot/core/templatetags/helpers.py +5 -16
- nautobot/core/testing/__init__.py +1 -2
- nautobot/core/testing/api.py +2 -4
- nautobot/core/testing/filters.py +1 -1
- nautobot/core/testing/integration.py +2 -2
- nautobot/core/testing/migrations.py +1 -0
- nautobot/core/testing/mixins.py +1 -2
- nautobot/core/testing/schema.py +1 -1
- nautobot/core/testing/utils.py +3 -3
- nautobot/core/testing/views.py +4 -7
- nautobot/core/tests/integration/test_plugin_home.py +2 -1
- nautobot/core/tests/integration/test_plugin_navbar.py +1 -1
- nautobot/core/tests/nautobot_config.py +3 -3
- nautobot/core/tests/runner.py +3 -4
- nautobot/core/tests/test_api.py +6 -51
- nautobot/core/tests/test_authentication.py +2 -3
- nautobot/core/tests/test_checks.py +1 -2
- nautobot/core/tests/test_config.py +1 -1
- nautobot/core/tests/test_csv.py +3 -3
- nautobot/core/tests/test_factory.py +1 -3
- nautobot/core/tests/test_filters.py +3 -7
- nautobot/core/tests/test_forms.py +3 -6
- nautobot/core/tests/test_graphql.py +13 -14
- nautobot/core/tests/test_jinja_filters.py +4 -4
- nautobot/core/tests/test_jobs.py +1 -1
- nautobot/core/tests/test_models.py +1 -2
- nautobot/core/tests/test_navigations.py +2 -1
- nautobot/core/tests/test_openapi.py +0 -1
- nautobot/core/tests/test_paginator.py +2 -2
- nautobot/core/tests/test_releases.py +2 -2
- nautobot/core/tests/test_tables.py +1 -1
- nautobot/core/tests/test_templatetags_helpers.py +3 -2
- nautobot/core/tests/test_templatetags_netutils.py +1 -2
- nautobot/core/tests/test_utils.py +4 -8
- nautobot/core/tests/test_views.py +5 -2
- nautobot/core/tests/test_views_utils.py +0 -1
- nautobot/core/urls.py +4 -4
- nautobot/core/utils/color.py +1 -1
- nautobot/core/utils/data.py +1 -2
- nautobot/core/utils/filtering.py +4 -5
- nautobot/core/utils/git.py +3 -2
- nautobot/core/utils/logging.py +2 -1
- nautobot/core/utils/migrations.py +1 -0
- nautobot/core/utils/permissions.py +2 -4
- nautobot/core/views/__init__.py +5 -5
- nautobot/core/views/generic.py +4 -4
- nautobot/core/views/mixins.py +11 -12
- nautobot/core/views/renderers.py +1 -1
- nautobot/core/views/utils.py +2 -1
- nautobot/dcim/api/urls.py +1 -1
- nautobot/dcim/api/views.py +6 -5
- nautobot/dcim/apps.py +1 -1
- nautobot/dcim/choices.py +0 -1
- nautobot/dcim/constants.py +0 -1
- nautobot/dcim/elevations.py +1 -2
- nautobot/dcim/factory.py +10 -13
- nautobot/dcim/fields.py +1 -0
- nautobot/dcim/filters/__init__.py +2 -3
- nautobot/dcim/filters/mixins.py +1 -1
- nautobot/dcim/forms.py +10 -12
- nautobot/dcim/graphql/types.py +16 -17
- nautobot/dcim/migrations/0001_initial_part_1.py +4 -2
- nautobot/dcim/migrations/0002_initial_part_2.py +2 -1
- nautobot/dcim/migrations/0003_initial_part_3.py +2 -1
- nautobot/dcim/migrations/0004_initial_part_4.py +2 -1
- nautobot/dcim/migrations/0006_auto_slug.py +1 -0
- nautobot/dcim/migrations/0009_add_natural_indexing.py +1 -0
- nautobot/dcim/migrations/0010_interface_status.py +1 -0
- nautobot/dcim/migrations/0011_interface_status_data_migration.py +1 -0
- nautobot/dcim/migrations/0013_location_location_type.py +4 -2
- nautobot/dcim/migrations/0014_location_status_data_migration.py +1 -0
- nautobot/dcim/migrations/0016_device_components__timestamp_data_migration.py +0 -1
- nautobot/dcim/migrations/0018_device_redundancy_group.py +4 -2
- nautobot/dcim/migrations/0019_device_redundancy_group_data_migration.py +1 -0
- nautobot/dcim/migrations/0022_interface_redundancy_group.py +3 -1
- nautobot/dcim/migrations/0023_interface_redundancy_group_data_migration.py +1 -0
- nautobot/dcim/migrations/0024_move_site_fields_to_location_model.py +2 -1
- nautobot/dcim/migrations/0027_alter_interface_mac_address.py +1 -0
- nautobot/dcim/migrations/0028_alter_device_and_rack_role_add_new_role.py +1 -0
- nautobot/dcim/migrations/0029_device_and_rack_roles_data_migrations.py +1 -0
- nautobot/dcim/migrations/0033_add_tree_managers_and_foreign_keys_pre_data_migration.py +1 -0
- nautobot/dcim/migrations/0034_migrate_region_and_site_data_to_locations.py +1 -2
- nautobot/dcim/migrations/0038_fixup_fks_and_related_names.py +1 -0
- nautobot/dcim/migrations/0039_related_name_changes.py +1 -0
- nautobot/dcim/migrations/0042_alter_location_managers.py +1 -0
- nautobot/dcim/migrations/0044_tagsfield.py +1 -0
- nautobot/dcim/migrations/0047_status_nonnullable.py +1 -0
- nautobot/dcim/migrations/0051_interface_redundancy_group_nullable_status.py +1 -0
- nautobot/dcim/models/cables.py +3 -3
- nautobot/dcim/models/device_component_templates.py +6 -6
- nautobot/dcim/models/devices.py +9 -4
- nautobot/dcim/models/locations.py +6 -1
- nautobot/dcim/models/power.py +1 -1
- nautobot/dcim/models/racks.py +5 -4
- nautobot/dcim/navigation.py +0 -1
- nautobot/dcim/signals.py +3 -2
- nautobot/dcim/tables/__init__.py +5 -4
- nautobot/dcim/tables/cables.py +1 -0
- nautobot/dcim/tables/devices.py +1 -0
- nautobot/dcim/tables/power.py +1 -0
- nautobot/dcim/tables/racks.py +2 -1
- nautobot/dcim/tests/test_api.py +5 -7
- nautobot/dcim/tests/test_cablepaths.py +0 -1
- nautobot/dcim/tests/test_filters.py +14 -12
- nautobot/dcim/tests/test_forms.py +2 -3
- nautobot/dcim/tests/test_migrations.py +2 -2
- nautobot/dcim/tests/test_models.py +2 -2
- nautobot/dcim/tests/test_views.py +7 -8
- nautobot/dcim/urls.py +3 -2
- nautobot/dcim/utils.py +1 -1
- nautobot/dcim/views.py +4 -3
- nautobot/extras/admin.py +2 -1
- nautobot/extras/api/customfields.py +0 -2
- nautobot/extras/api/mixins.py +0 -1
- nautobot/extras/api/serializers.py +4 -4
- nautobot/extras/api/urls.py +1 -1
- nautobot/extras/api/views.py +1 -1
- nautobot/extras/apps.py +3 -4
- nautobot/extras/choices.py +3 -4
- nautobot/extras/context_managers.py +1 -1
- nautobot/extras/datasources/__init__.py +1 -1
- nautobot/extras/datasources/git.py +6 -6
- nautobot/extras/datasources/utils.py +0 -1
- nautobot/extras/factory.py +1 -1
- nautobot/extras/filters/__init__.py +2 -3
- nautobot/extras/filters/customfields.py +0 -1
- nautobot/extras/filters/mixins.py +1 -1
- nautobot/extras/forms/__init__.py +3 -4
- nautobot/extras/forms/base.py +1 -1
- nautobot/extras/forms/forms.py +3 -3
- nautobot/extras/forms/mixins.py +1 -1
- nautobot/extras/graphql/types.py +2 -2
- nautobot/extras/health_checks.py +1 -1
- nautobot/extras/jobs.py +1 -2
- nautobot/extras/management/__init__.py +0 -1
- nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -1
- nautobot/extras/management/commands/runjob.py +3 -3
- nautobot/extras/management/commands/webhook_receiver.py +1 -2
- nautobot/extras/migrations/0001_initial_part_1.py +2 -1
- nautobot/extras/migrations/0002_initial_part_2.py +2 -1
- nautobot/extras/migrations/0003_initial_part_3.py +1 -0
- nautobot/extras/migrations/0006_graphqlquery.py +2 -1
- nautobot/extras/migrations/0007_configcontextschema.py +3 -1
- nautobot/extras/migrations/0009_computedfield.py +3 -1
- nautobot/extras/migrations/0011_fileattachment_fileproxy.py +3 -1
- nautobot/extras/migrations/0012_healthchecktestmodel.py +2 -1
- nautobot/extras/migrations/0014_auto_slug.py +1 -0
- nautobot/extras/migrations/0015_scheduled_job.py +3 -1
- nautobot/extras/migrations/0016_secret.py +4 -2
- nautobot/extras/migrations/0017_joblogentry.py +2 -1
- nautobot/extras/migrations/0018_joblog_data_migration.py +2 -1
- nautobot/extras/migrations/0021_customfield_changelog_data.py +3 -2
- nautobot/extras/migrations/0022_objectchange_object_datav2.py +1 -0
- nautobot/extras/migrations/0023_job_model.py +4 -2
- nautobot/extras/migrations/0026_job_add_gitrepository_fk.py +1 -0
- nautobot/extras/migrations/0029_dynamicgroup.py +3 -1
- nautobot/extras/migrations/0031_tag_content_types.py +1 -0
- nautobot/extras/migrations/0032_tag_content_types_data_migration.py +1 -0
- nautobot/extras/migrations/0040_dynamicgroup__dynamicgroupmembership.py +2 -1
- nautobot/extras/migrations/0041_jobresult_job_kwargs.py +1 -0
- nautobot/extras/migrations/0043_note.py +3 -1
- nautobot/extras/migrations/0044_add_job_hook.py +3 -1
- nautobot/extras/migrations/0046_populate_custom_field_slug_label.py +1 -0
- nautobot/extras/migrations/0047_enforce_custom_field_slug.py +1 -0
- nautobot/extras/migrations/0051_add_job_task_queues.py +1 -0
- nautobot/extras/migrations/0055_configcontext_dynamic_groups.py +1 -0
- nautobot/extras/migrations/0057_jobbutton.py +3 -1
- nautobot/extras/migrations/0065_configcontext_data_migrations.py +1 -0
- nautobot/extras/migrations/0067_migrate_job_result_status.py +0 -1
- nautobot/extras/migrations/0068_jobresult__add_celery_fields.py +1 -0
- nautobot/extras/migrations/0071_replace_related_names.py +1 -0
- nautobot/extras/migrations/0077_migrate_custom_field_data.py +1 -0
- nautobot/extras/migrations/0078_remove_name_field_and_make_label_field_non_nullable.py +1 -0
- nautobot/extras/migrations/0080_tagsfield.py +1 -0
- nautobot/extras/migrations/0082_rename_relationship_name_to_label.py +1 -0
- nautobot/extras/migrations/0083_ensure_relationship_keys_are_unique.py +1 -0
- nautobot/extras/migrations/0090_joblogentry__log_level_data_migration.py +0 -1
- nautobot/extras/migrations/0095_ensure_note_timestamps_are_unique.py +4 -5
- nautobot/extras/migrations/0097_alter_job_result_remove_result.py +1 -0
- nautobot/extras/migrations/0100_fileproxy_job_result.py +1 -0
- nautobot/extras/migrations/0101_externalintegration.py +3 -1
- nautobot/extras/models/__init__.py +2 -3
- nautobot/extras/models/change_logging.py +0 -1
- nautobot/extras/models/customfields.py +4 -4
- nautobot/extras/models/datasources.py +2 -2
- nautobot/extras/models/groups.py +3 -4
- nautobot/extras/models/jobs.py +12 -6
- nautobot/extras/models/models.py +2 -2
- nautobot/extras/models/relationships.py +3 -4
- nautobot/extras/models/roles.py +1 -1
- nautobot/extras/models/secrets.py +1 -3
- nautobot/extras/models/tags.py +0 -1
- nautobot/extras/navigation.py +0 -1
- nautobot/extras/plugins/__init__.py +6 -7
- nautobot/extras/plugins/tables.py +0 -1
- nautobot/extras/plugins/utils.py +1 -1
- nautobot/extras/plugins/views.py +1 -2
- nautobot/extras/querysets.py +3 -3
- nautobot/extras/signals.py +6 -7
- nautobot/extras/tables.py +4 -4
- nautobot/extras/tasks.py +1 -2
- nautobot/extras/templates/extras/configcontext_edit.html +1 -1
- nautobot/extras/templates/extras/graphqlquery.html +4 -2
- nautobot/extras/templates/extras/secretsgroup_edit.html +40 -45
- nautobot/extras/templatetags/custom_links.py +2 -3
- nautobot/extras/templatetags/job_buttons.py +2 -3
- nautobot/extras/templatetags/log_levels.py +0 -1
- nautobot/extras/templatetags/plugins.py +1 -1
- nautobot/extras/test_jobs/api_test_job.py +1 -2
- nautobot/extras/test_jobs/atomic_transaction.py +1 -2
- nautobot/extras/test_jobs/dry_run.py +1 -2
- nautobot/extras/test_jobs/fail.py +1 -2
- nautobot/extras/test_jobs/field_order.py +1 -1
- nautobot/extras/test_jobs/file_upload_fail.py +1 -2
- nautobot/extras/test_jobs/file_upload_pass.py +1 -2
- nautobot/extras/test_jobs/has_sensitive_variables.py +1 -2
- nautobot/extras/test_jobs/ipaddress_vars.py +1 -4
- nautobot/extras/test_jobs/job_button_receiver.py +1 -2
- nautobot/extras/test_jobs/job_hook_receiver.py +1 -2
- nautobot/extras/test_jobs/job_variables.py +1 -2
- nautobot/extras/test_jobs/location_with_custom_field.py +1 -2
- nautobot/extras/test_jobs/log_redaction.py +1 -2
- nautobot/extras/test_jobs/log_skip_db_logging.py +1 -2
- nautobot/extras/test_jobs/modify_db.py +1 -2
- nautobot/extras/test_jobs/object_var_optional.py +1 -2
- nautobot/extras/test_jobs/object_var_required.py +1 -2
- nautobot/extras/test_jobs/object_vars.py +1 -2
- nautobot/extras/test_jobs/pass.py +1 -2
- nautobot/extras/test_jobs/profiling.py +1 -2
- nautobot/extras/tests/integration/__init__.py +1 -1
- nautobot/extras/tests/integration/test_plugins.py +5 -4
- nautobot/extras/tests/integration/test_tagfilter.py +1 -1
- nautobot/extras/tests/test_api.py +7 -9
- nautobot/extras/tests/test_changelog.py +3 -2
- nautobot/extras/tests/test_context_managers.py +6 -3
- nautobot/extras/tests/test_customfields.py +2 -2
- nautobot/extras/tests/test_datasources.py +1 -1
- nautobot/extras/tests/test_dynamicgroups.py +2 -3
- nautobot/extras/tests/test_filters.py +2 -2
- nautobot/extras/tests/test_forms.py +5 -6
- nautobot/extras/tests/test_git.py +1 -1
- nautobot/extras/tests/test_job_variables.py +0 -1
- nautobot/extras/tests/test_jobs.py +5 -5
- nautobot/extras/tests/test_models.py +2 -2
- nautobot/extras/tests/test_notes.py +0 -1
- nautobot/extras/tests/test_plugins.py +8 -9
- nautobot/extras/tests/test_relationships.py +3 -3
- nautobot/extras/tests/test_tags.py +1 -1
- nautobot/extras/tests/test_views.py +8 -9
- nautobot/extras/tests/test_webhooks.py +4 -5
- nautobot/extras/utils.py +11 -9
- nautobot/extras/views.py +3 -3
- nautobot/generate_secret_key.py +1 -1
- nautobot/ipam/api/serializers.py +1 -2
- nautobot/ipam/api/urls.py +1 -1
- nautobot/ipam/api/views.py +1 -0
- nautobot/ipam/apps.py +2 -1
- nautobot/ipam/factory.py +6 -9
- nautobot/ipam/fields.py +1 -1
- nautobot/ipam/filters.py +4 -3
- nautobot/ipam/formfields.py +1 -2
- nautobot/ipam/forms.py +4 -3
- nautobot/ipam/graphql/types.py +1 -1
- nautobot/ipam/homepage.py +0 -1
- nautobot/ipam/lookups.py +2 -3
- nautobot/ipam/migrations/0002_initial_part_2.py +2 -1
- nautobot/ipam/migrations/0003_remove_max_length.py +1 -0
- nautobot/ipam/migrations/0004_fixup_p2p_broadcast.py +0 -1
- nautobot/ipam/migrations/0005_auto_slug.py +1 -0
- nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -0
- nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +1 -0
- nautobot/ipam/migrations/0020_related_name_changes.py +1 -0
- nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +1 -2
- nautobot/ipam/migrations/0024_interface_to_ipaddress_m2m.py +2 -1
- nautobot/ipam/migrations/0025_interface_ipaddress_m2m_data_migration.py +1 -0
- nautobot/ipam/migrations/0028_tagsfield.py +1 -0
- nautobot/ipam/migrations/0030_ipam__namespaces.py +3 -1
- nautobot/ipam/migrations/0034_status_nonnullable.py +1 -0
- nautobot/ipam/migrations/0037_data_migration_vlan_group_name_uniqueness.py +0 -1
- nautobot/ipam/models.py +7 -7
- nautobot/ipam/navigation.py +0 -1
- nautobot/ipam/querysets.py +2 -2
- nautobot/ipam/tables.py +4 -3
- nautobot/ipam/tests/test_api.py +2 -2
- nautobot/ipam/tests/test_filters.py +7 -7
- nautobot/ipam/tests/test_migrations.py +1 -2
- nautobot/ipam/tests/test_models.py +2 -2
- nautobot/ipam/tests/test_ordering.py +1 -1
- nautobot/ipam/tests/test_querysets.py +2 -2
- nautobot/ipam/tests/test_views.py +6 -6
- nautobot/ipam/urls.py +1 -0
- nautobot/ipam/utils/migrations.py +0 -1
- nautobot/ipam/views.py +6 -6
- nautobot/project-static/docs/404.html +1 -43
- nautobot/project-static/docs/apps/index.html +1 -43
- nautobot/project-static/docs/apps/nautobot-apps.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +389 -431
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +12 -54
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +2452 -2486
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +90 -132
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +26 -68
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +993 -1035
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +170 -212
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +1789 -1831
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +961 -1003
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +2 -44
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +6904 -6946
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +974 -1016
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +1159 -1197
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1796 -1832
- nautobot/project-static/docs/development/apps/api/configuration-view.html +1 -43
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/global-search.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/graphql.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/index.html +1 -43
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +3 -45
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +5 -43
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +1 -43
- nautobot/project-static/docs/development/apps/api/prometheus.html +1 -43
- nautobot/project-static/docs/development/apps/api/setup.html +1 -43
- nautobot/project-static/docs/development/apps/api/testing.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/base-template.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +6 -48
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/index.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/notes.html +3 -45
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/urls.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/view-overrides.html +13 -5357
- nautobot/project-static/docs/development/apps/index.html +1 -43
- nautobot/project-static/docs/development/apps/migration/code-updates.html +1 -43
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +1 -43
- nautobot/project-static/docs/development/apps/migration/from-v1.html +1 -44
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +1 -43
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +1 -43
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +1 -43
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +1 -43
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +1 -43
- nautobot/project-static/docs/development/core/application-registry.html +1 -43
- nautobot/project-static/docs/development/core/best-practices.html +1 -43
- nautobot/project-static/docs/development/core/bootstrap-ui.html +1 -43
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +1 -43
- nautobot/project-static/docs/development/core/extending-models.html +1 -43
- nautobot/project-static/docs/development/core/generic-views.html +1 -43
- nautobot/project-static/docs/development/core/getting-started.html +108 -257
- nautobot/project-static/docs/development/core/homepage.html +1 -43
- nautobot/project-static/docs/development/core/index.html +1 -43
- nautobot/project-static/docs/development/core/model-features.html +1 -43
- nautobot/project-static/docs/development/core/natural-keys.html +1 -43
- nautobot/project-static/docs/development/core/navigation-menu.html +1 -43
- nautobot/project-static/docs/development/core/react-ui.html +13 -5640
- nautobot/project-static/docs/development/core/release-checklist.html +4 -52
- nautobot/project-static/docs/development/core/role-internals.html +4 -46
- nautobot/project-static/docs/development/core/style-guide.html +61 -102
- nautobot/project-static/docs/development/core/templates.html +4 -46
- nautobot/project-static/docs/development/core/testing.html +1 -43
- nautobot/project-static/docs/development/core/user-preferences.html +1 -43
- nautobot/project-static/docs/development/index.html +1 -43
- nautobot/project-static/docs/development/jobs/index.html +1 -43
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +1 -43
- nautobot/project-static/docs/development/react-ui.html +3 -3
- nautobot/project-static/docs/index.html +2 -47
- nautobot/project-static/docs/release-notes/index.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.0.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.1.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.2.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.3.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.4.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.5.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.6.html +1 -43
- nautobot/project-static/docs/release-notes/version-2.0.html +1 -43
- nautobot/project-static/docs/release-notes/version-2.1.html +189 -77
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +236 -251
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +1 -43
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +4 -46
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +1 -43
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +1 -43
- nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +13 -5389
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +1 -65
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/docker.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/index.html +1 -64
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +2 -57
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +5 -94
- nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/services.html +1 -43
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +1 -43
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +1 -43
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +76 -137
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +2 -44
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +23 -79
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +1 -43
- nautobot/project-static/docs/user-guide/index.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +5 -43
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +1 -43
- nautobot/project-static/js/theme.js +0 -5
- nautobot/tenancy/api/urls.py +1 -1
- nautobot/tenancy/api/views.py +1 -0
- nautobot/tenancy/factory.py +2 -2
- nautobot/tenancy/filters/__init__.py +1 -2
- nautobot/tenancy/forms.py +2 -2
- nautobot/tenancy/homepage.py +0 -1
- nautobot/tenancy/migrations/0001_initial.py +2 -1
- nautobot/tenancy/migrations/0002_auto_slug.py +1 -0
- nautobot/tenancy/migrations/0004_change_tree_manager_on_tree_models.py +1 -0
- nautobot/tenancy/migrations/0008_tagsfield.py +1 -0
- nautobot/tenancy/models.py +0 -1
- nautobot/tenancy/navigation.py +0 -1
- nautobot/tenancy/tables.py +1 -0
- nautobot/tenancy/tests/test_filters.py +5 -5
- nautobot/tenancy/urls.py +1 -0
- nautobot/tenancy/views.py +2 -2
- nautobot/users/admin.py +1 -2
- nautobot/users/api/urls.py +1 -1
- nautobot/users/api/views.py +6 -4
- nautobot/users/factory.py +1 -3
- nautobot/users/filters.py +4 -4
- nautobot/users/forms.py +1 -0
- nautobot/users/migrations/0004_alter_user_managers.py +1 -0
- nautobot/users/migrations/0008_make_object_permission_a_changelogged_model.py +22 -0
- nautobot/users/models.py +2 -2
- nautobot/users/tests/test_api.py +7 -6
- nautobot/users/tests/test_filters.py +0 -1
- nautobot/users/tests/test_models.py +0 -1
- nautobot/users/tests/test_password_ui.py +1 -1
- nautobot/users/views.py +2 -2
- nautobot/virtualization/api/urls.py +1 -1
- nautobot/virtualization/api/views.py +2 -1
- nautobot/virtualization/apps.py +1 -1
- nautobot/virtualization/choices.py +0 -1
- nautobot/virtualization/factory.py +1 -1
- nautobot/virtualization/filters.py +1 -1
- nautobot/virtualization/forms.py +6 -6
- nautobot/virtualization/homepage.py +0 -1
- nautobot/virtualization/migrations/0003_vminterface_verbose_name.py +1 -0
- nautobot/virtualization/migrations/0004_auto_slug.py +1 -0
- nautobot/virtualization/migrations/0005_add_natural_indexing.py +1 -0
- nautobot/virtualization/migrations/0006_vminterface_status.py +1 -0
- nautobot/virtualization/migrations/0007_vminterface_status_data_migration.py +1 -0
- nautobot/virtualization/migrations/0011_alter_vminterface_mac_address.py +1 -0
- nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -0
- nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +1 -0
- nautobot/virtualization/migrations/0018_related_name_changes.py +1 -0
- nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +1 -0
- nautobot/virtualization/migrations/0025_status_nonnullable.py +1 -0
- nautobot/virtualization/models.py +1 -2
- nautobot/virtualization/navigation.py +0 -1
- nautobot/virtualization/signals.py +0 -1
- nautobot/virtualization/tables.py +1 -0
- nautobot/virtualization/tests/test_filters.py +3 -3
- nautobot/virtualization/tests/test_models.py +1 -1
- nautobot/virtualization/tests/test_views.py +2 -2
- nautobot/virtualization/urls.py +1 -0
- nautobot/virtualization/views.py +1 -1
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/METADATA +1 -1
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/RECORD +713 -814
- nautobot/core/management/commands/build_ui.py +0 -281
- nautobot/core/templates/base_react.html +0 -55
- nautobot/core/tests/test_cli.py +0 -25
- nautobot/ui/.eslintignore +0 -3
- nautobot/ui/.gitignore +0 -7
- nautobot/ui/.prettierignore +0 -6
- nautobot/ui/.prettierrc +0 -4
- nautobot/ui/README.md +0 -27
- nautobot/ui/config/env.js +0 -102
- nautobot/ui/config/getHttpsConfig.js +0 -68
- nautobot/ui/config/jest/babelTransform.js +0 -14
- nautobot/ui/config/jest/cssTransform.js +0 -12
- nautobot/ui/config/jest/fileTransform.js +0 -38
- nautobot/ui/config/modules.js +0 -151
- nautobot/ui/config/paths.js +0 -67
- nautobot/ui/config/webpack/persistentCache/createEnvironmentHash.js +0 -8
- nautobot/ui/config/webpack.config.js +0 -674
- nautobot/ui/config/webpackDevServer.config.js +0 -127
- nautobot/ui/jest.config.js +0 -35
- nautobot/ui/jsconfig.json +0 -4
- nautobot/ui/package-lock.json +0 -22947
- nautobot/ui/package.json +0 -119
- nautobot/ui/public/index.html +0 -47
- nautobot/ui/public/logo192.png +0 -0
- nautobot/ui/public/logo512.png +0 -0
- nautobot/ui/public/manifest.json +0 -25
- nautobot/ui/public/nautobot_logo.svg +0 -131
- nautobot/ui/public/robots.txt +0 -3
- nautobot/ui/scripts/build.js +0 -224
- nautobot/ui/scripts/start.js +0 -140
- nautobot/ui/scripts/test.js +0 -40
- nautobot/ui/src/App.js +0 -79
- nautobot/ui/src/components/AppFullWidthComponents.js +0 -8
- nautobot/ui/src/components/AppTab.js +0 -40
- nautobot/ui/src/components/Apps.js +0 -60
- nautobot/ui/src/components/FeedbackModal.js +0 -123
- nautobot/ui/src/components/FiltersPanel.js +0 -693
- nautobot/ui/src/components/HomeChangelogPanel.js +0 -98
- nautobot/ui/src/components/HomePanel.js +0 -58
- nautobot/ui/src/components/JobHistoryTable.js +0 -78
- nautobot/ui/src/components/Layout.js +0 -76
- nautobot/ui/src/components/LoadingWidget.js +0 -14
- nautobot/ui/src/components/Navbar.js +0 -204
- nautobot/ui/src/components/NotificationPopover.js +0 -27
- nautobot/ui/src/components/ObjectTable/ObjectListTable.js +0 -300
- nautobot/ui/src/components/ObjectTable/ObjectTable.js +0 -96
- nautobot/ui/src/components/ObjectTable/ObjectTableItem.js +0 -70
- nautobot/ui/src/components/ObjectTable/index.js +0 -3
- nautobot/ui/src/components/Pagination/PageNumberForm.js +0 -228
- nautobot/ui/src/components/Pagination/PageSizeForm.js +0 -65
- nautobot/ui/src/components/Pagination/Pagination.js +0 -67
- nautobot/ui/src/components/Pagination/index.js +0 -3
- nautobot/ui/src/components/ReferenceDataTag.js +0 -35
- nautobot/ui/src/components/Retrieve/RenderChangeLogsTab.js +0 -58
- nautobot/ui/src/components/Retrieve/RenderColumn.js +0 -30
- nautobot/ui/src/components/Retrieve/RenderGroup.js +0 -24
- nautobot/ui/src/components/Retrieve/RenderHeader.js +0 -125
- nautobot/ui/src/components/Retrieve/RenderNotesTab.js +0 -60
- nautobot/ui/src/components/Retrieve/RenderTable.js +0 -33
- nautobot/ui/src/components/Retrieve/RenderTabs.js +0 -56
- nautobot/ui/src/components/Retrieve/index.js +0 -7
- nautobot/ui/src/components/RouterButton.js +0 -10
- nautobot/ui/src/components/RouterLink.js +0 -10
- nautobot/ui/src/components/SidebarNav.js +0 -156
- nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +0 -16
- nautobot/ui/src/components/__tests__/AppTab.test.js +0 -21
- nautobot/ui/src/components/__tests__/Apps.test.js +0 -14
- nautobot/ui/src/components/__tests__/Layout.test.js +0 -33
- nautobot/ui/src/components/__tests__/PageSizeForm.test.js +0 -13
- nautobot/ui/src/components/__tests__/Pagination.test.js +0 -43
- nautobot/ui/src/components/__tests__/Table.test.js +0 -39
- nautobot/ui/src/components/__tests__/TableItem.test.js +0 -39
- nautobot/ui/src/components/index.js +0 -4
- nautobot/ui/src/constants/apiPath.js +0 -13
- nautobot/ui/src/constants/icons.js +0 -15
- nautobot/ui/src/constants/size.js +0 -15
- nautobot/ui/src/file_templates/app_imports.js.j2 +0 -7
- nautobot/ui/src/file_templates/jsconfig-base.json +0 -12
- nautobot/ui/src/index.js +0 -65
- nautobot/ui/src/reportWebVitals.js +0 -15
- nautobot/ui/src/router.js +0 -77
- nautobot/ui/src/utils/api.js +0 -160
- nautobot/ui/src/utils/app-import.js +0 -15
- nautobot/ui/src/utils/color.js +0 -15
- nautobot/ui/src/utils/date.js +0 -14
- nautobot/ui/src/utils/index.js +0 -15
- nautobot/ui/src/utils/navigation.js +0 -48
- nautobot/ui/src/utils/session.js +0 -64
- nautobot/ui/src/utils/store.js +0 -242
- nautobot/ui/src/utils/string.js +0 -6
- nautobot/ui/src/utils/url.js +0 -4
- nautobot/ui/src/views/Home.js +0 -142
- nautobot/ui/src/views/InstalledApps.js +0 -80
- nautobot/ui/src/views/Login.js +0 -48
- nautobot/ui/src/views/Logout.js +0 -20
- nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +0 -11
- nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +0 -107
- nautobot/ui/src/views/__tests__/Login.test.js +0 -15
- nautobot/ui/src/views/generic/GenericView.js +0 -191
- nautobot/ui/src/views/generic/ObjectCreate.js +0 -96
- nautobot/ui/src/views/generic/ObjectList.js +0 -137
- nautobot/ui/src/views/generic/ObjectRetrieve.js +0 -87
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/WHEEL +0 -0
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/entry_points.txt +0 -0
nautobot/dcim/tables/__init__.py
CHANGED
|
@@ -3,6 +3,7 @@ from django_tables2.utils import Accessor
|
|
|
3
3
|
|
|
4
4
|
from nautobot.core.tables import BaseTable, BooleanColumn
|
|
5
5
|
from nautobot.dcim.models import ConsolePort, Interface, PowerPort
|
|
6
|
+
|
|
6
7
|
from .cables import CableTable
|
|
7
8
|
from .devices import (
|
|
8
9
|
ConsolePortTable,
|
|
@@ -15,15 +16,15 @@ from .devices import (
|
|
|
15
16
|
DeviceImportTable,
|
|
16
17
|
DeviceInterfaceTable,
|
|
17
18
|
DeviceInventoryItemTable,
|
|
18
|
-
DevicePowerPortTable,
|
|
19
19
|
DevicePowerOutletTable,
|
|
20
|
+
DevicePowerPortTable,
|
|
20
21
|
DeviceRearPortTable,
|
|
21
22
|
DeviceRedundancyGroupTable,
|
|
22
23
|
DeviceTable,
|
|
23
24
|
FrontPortTable,
|
|
24
|
-
InterfaceTable,
|
|
25
|
-
InterfaceRedundancyGroupTable,
|
|
26
25
|
InterfaceRedundancyGroupAssociationTable,
|
|
26
|
+
InterfaceRedundancyGroupTable,
|
|
27
|
+
InterfaceTable,
|
|
27
28
|
InventoryItemTable,
|
|
28
29
|
PlatformTable,
|
|
29
30
|
PowerOutletTable,
|
|
@@ -46,10 +47,10 @@ from .devicetypes import (
|
|
|
46
47
|
from .locations import LocationTable, LocationTypeTable
|
|
47
48
|
from .power import PowerFeedTable, PowerPanelTable
|
|
48
49
|
from .racks import (
|
|
49
|
-
RackTable,
|
|
50
50
|
RackDetailTable,
|
|
51
51
|
RackGroupTable,
|
|
52
52
|
RackReservationTable,
|
|
53
|
+
RackTable,
|
|
53
54
|
)
|
|
54
55
|
|
|
55
56
|
__all__ = (
|
nautobot/dcim/tables/cables.py
CHANGED
nautobot/dcim/tables/devices.py
CHANGED
|
@@ -30,6 +30,7 @@ from nautobot.dcim.models import (
|
|
|
30
30
|
from nautobot.dcim.utils import cable_status_color_css
|
|
31
31
|
from nautobot.extras.tables import RoleTableMixin, StatusTableMixin
|
|
32
32
|
from nautobot.tenancy.tables import TenantColumn
|
|
33
|
+
|
|
33
34
|
from .template_code import (
|
|
34
35
|
CABLETERMINATION,
|
|
35
36
|
CONSOLEPORT_BUTTONS,
|
nautobot/dcim/tables/power.py
CHANGED
nautobot/dcim/tables/racks.py
CHANGED
|
@@ -11,7 +11,8 @@ from nautobot.core.tables import (
|
|
|
11
11
|
from nautobot.dcim.models import Rack, RackGroup, RackReservation
|
|
12
12
|
from nautobot.extras.tables import RoleTableMixin, StatusTableMixin
|
|
13
13
|
from nautobot.tenancy.tables import TenantColumn
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
from .template_code import RACKGROUP_ELEVATIONS, TREE_LINK, UTILIZATION_GRAPH
|
|
15
16
|
|
|
16
17
|
__all__ = (
|
|
17
18
|
"RackTable",
|
nautobot/dcim/tests/test_api.py
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from unittest import skip
|
|
3
3
|
|
|
4
|
+
from constance.test import override_config
|
|
4
5
|
from django.contrib.auth import get_user_model
|
|
5
6
|
from django.contrib.contenttypes.models import ContentType
|
|
6
7
|
from django.test import override_settings
|
|
7
8
|
from django.urls import reverse
|
|
8
9
|
from rest_framework import status
|
|
9
10
|
|
|
10
|
-
from constance.test import override_config
|
|
11
|
-
|
|
12
11
|
from nautobot.core.testing import APITestCase, APIViewTestCases
|
|
13
12
|
from nautobot.core.testing.utils import generate_random_device_asset_tag_of_specified_size
|
|
14
13
|
from nautobot.dcim.choices import (
|
|
@@ -34,17 +33,17 @@ from nautobot.dcim.models import (
|
|
|
34
33
|
Interface,
|
|
35
34
|
InterfaceRedundancyGroup,
|
|
36
35
|
InterfaceTemplate,
|
|
36
|
+
InventoryItem,
|
|
37
37
|
Location,
|
|
38
38
|
LocationType,
|
|
39
39
|
Manufacturer,
|
|
40
|
-
InventoryItem,
|
|
41
40
|
Platform,
|
|
42
41
|
PowerFeed,
|
|
43
|
-
PowerPort,
|
|
44
|
-
PowerPortTemplate,
|
|
45
42
|
PowerOutlet,
|
|
46
43
|
PowerOutletTemplate,
|
|
47
44
|
PowerPanel,
|
|
45
|
+
PowerPort,
|
|
46
|
+
PowerPortTemplate,
|
|
48
47
|
Rack,
|
|
49
48
|
RackGroup,
|
|
50
49
|
RackReservation,
|
|
@@ -53,11 +52,10 @@ from nautobot.dcim.models import (
|
|
|
53
52
|
VirtualChassis,
|
|
54
53
|
)
|
|
55
54
|
from nautobot.extras.models import ConfigContextSchema, Role, SecretsGroup, Status
|
|
56
|
-
from nautobot.ipam.models import IPAddress,
|
|
55
|
+
from nautobot.ipam.models import IPAddress, Namespace, Prefix, VLAN, VLANGroup
|
|
57
56
|
from nautobot.tenancy.models import Tenant
|
|
58
57
|
from nautobot.virtualization.models import Cluster, ClusterType
|
|
59
58
|
|
|
60
|
-
|
|
61
59
|
# Use the proper swappable User model
|
|
62
60
|
User = get_user_model()
|
|
63
61
|
|
|
@@ -34,8 +34,8 @@ from nautobot.dcim.filters import (
|
|
|
34
34
|
FrontPortFilterSet,
|
|
35
35
|
FrontPortTemplateFilterSet,
|
|
36
36
|
InterfaceFilterSet,
|
|
37
|
-
InterfaceRedundancyGroupFilterSet,
|
|
38
37
|
InterfaceRedundancyGroupAssociationFilterSet,
|
|
38
|
+
InterfaceRedundancyGroupFilterSet,
|
|
39
39
|
InterfaceTemplateFilterSet,
|
|
40
40
|
InventoryItemFilterSet,
|
|
41
41
|
LocationFilterSet,
|
|
@@ -43,11 +43,11 @@ from nautobot.dcim.filters import (
|
|
|
43
43
|
ManufacturerFilterSet,
|
|
44
44
|
PlatformFilterSet,
|
|
45
45
|
PowerFeedFilterSet,
|
|
46
|
+
PowerOutletFilterSet,
|
|
47
|
+
PowerOutletTemplateFilterSet,
|
|
46
48
|
PowerPanelFilterSet,
|
|
47
49
|
PowerPortFilterSet,
|
|
48
50
|
PowerPortTemplateFilterSet,
|
|
49
|
-
PowerOutletFilterSet,
|
|
50
|
-
PowerOutletTemplateFilterSet,
|
|
51
51
|
RackFilterSet,
|
|
52
52
|
RackGroupFilterSet,
|
|
53
53
|
RackReservationFilterSet,
|
|
@@ -55,7 +55,6 @@ from nautobot.dcim.filters import (
|
|
|
55
55
|
RearPortTemplateFilterSet,
|
|
56
56
|
VirtualChassisFilterSet,
|
|
57
57
|
)
|
|
58
|
-
|
|
59
58
|
from nautobot.dcim.models import (
|
|
60
59
|
Cable,
|
|
61
60
|
ConsolePort,
|
|
@@ -79,11 +78,11 @@ from nautobot.dcim.models import (
|
|
|
79
78
|
Manufacturer,
|
|
80
79
|
Platform,
|
|
81
80
|
PowerFeed,
|
|
81
|
+
PowerOutlet,
|
|
82
|
+
PowerOutletTemplate,
|
|
82
83
|
PowerPanel,
|
|
83
84
|
PowerPort,
|
|
84
85
|
PowerPortTemplate,
|
|
85
|
-
PowerOutlet,
|
|
86
|
-
PowerOutletTemplate,
|
|
87
86
|
Rack,
|
|
88
87
|
RackGroup,
|
|
89
88
|
RackReservation,
|
|
@@ -92,11 +91,10 @@ from nautobot.dcim.models import (
|
|
|
92
91
|
VirtualChassis,
|
|
93
92
|
)
|
|
94
93
|
from nautobot.extras.models import Role, SecretsGroup, Status, Tag
|
|
95
|
-
from nautobot.ipam.models import IPAddress, Prefix, Service, VLAN, VLANGroup
|
|
94
|
+
from nautobot.ipam.models import IPAddress, Namespace, Prefix, Service, VLAN, VLANGroup
|
|
96
95
|
from nautobot.tenancy.models import Tenant
|
|
97
96
|
from nautobot.virtualization.models import Cluster, ClusterType, VirtualMachine
|
|
98
97
|
|
|
99
|
-
|
|
100
98
|
# Use the proper swappable User model
|
|
101
99
|
User = get_user_model()
|
|
102
100
|
|
|
@@ -1090,7 +1088,8 @@ class ConsoleServerPortTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
|
1090
1088
|
class PowerPortTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
1091
1089
|
queryset = PowerPortTemplate.objects.all()
|
|
1092
1090
|
filterset = PowerPortTemplateFilterSet
|
|
1093
|
-
generic_filter_tests =
|
|
1091
|
+
generic_filter_tests = [
|
|
1092
|
+
*Mixins.ComponentTemplateMixin.generic_filter_tests,
|
|
1094
1093
|
("allocated_draw",),
|
|
1095
1094
|
("maximum_draw",),
|
|
1096
1095
|
("power_outlet_templates", "power_outlet_templates__id"),
|
|
@@ -1115,7 +1114,8 @@ class PowerPortTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
|
1115
1114
|
class PowerOutletTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
1116
1115
|
queryset = PowerOutletTemplate.objects.all()
|
|
1117
1116
|
filterset = PowerOutletTemplateFilterSet
|
|
1118
|
-
generic_filter_tests =
|
|
1117
|
+
generic_filter_tests = [
|
|
1118
|
+
*Mixins.ComponentTemplateMixin.generic_filter_tests,
|
|
1119
1119
|
("power_port_template", "power_port_template__id"),
|
|
1120
1120
|
("power_port_template", "power_port_template__name"),
|
|
1121
1121
|
]
|
|
@@ -1173,7 +1173,8 @@ class InterfaceTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
|
1173
1173
|
class FrontPortTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
1174
1174
|
queryset = FrontPortTemplate.objects.all()
|
|
1175
1175
|
filterset = FrontPortTemplateFilterSet
|
|
1176
|
-
generic_filter_tests =
|
|
1176
|
+
generic_filter_tests = [
|
|
1177
|
+
*Mixins.ComponentTemplateMixin.generic_filter_tests,
|
|
1177
1178
|
("rear_port_position",),
|
|
1178
1179
|
("rear_port_template", "rear_port_template__id"),
|
|
1179
1180
|
]
|
|
@@ -1190,7 +1191,8 @@ class FrontPortTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
|
1190
1191
|
class RearPortTemplateTestCase(Mixins.ComponentTemplateMixin):
|
|
1191
1192
|
queryset = RearPortTemplate.objects.all()
|
|
1192
1193
|
filterset = RearPortTemplateFilterSet
|
|
1193
|
-
generic_filter_tests =
|
|
1194
|
+
generic_filter_tests = [
|
|
1195
|
+
*Mixins.ComponentTemplateMixin.generic_filter_tests,
|
|
1194
1196
|
("front_port_templates", "front_port_templates__id"),
|
|
1195
1197
|
]
|
|
1196
1198
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from django.test import TestCase
|
|
2
2
|
|
|
3
|
-
from nautobot.dcim.forms import DeviceForm, DeviceFilterForm, InterfaceCreateForm, RackForm
|
|
4
3
|
from nautobot.dcim.choices import DeviceFaceChoices, InterfaceTypeChoices, RackWidthChoices
|
|
5
|
-
|
|
4
|
+
from nautobot.dcim.forms import DeviceFilterForm, DeviceForm, InterfaceCreateForm, RackForm
|
|
6
5
|
from nautobot.dcim.models import (
|
|
7
6
|
Device,
|
|
8
7
|
DeviceType,
|
|
@@ -13,8 +12,8 @@ from nautobot.dcim.models import (
|
|
|
13
12
|
Platform,
|
|
14
13
|
Rack,
|
|
15
14
|
)
|
|
16
|
-
from nautobot.tenancy.models import Tenant
|
|
17
15
|
from nautobot.extras.models import Role, SecretsGroup, Status
|
|
16
|
+
from nautobot.tenancy.models import Tenant
|
|
18
17
|
from nautobot.virtualization.models import Cluster, ClusterGroup, ClusterType
|
|
19
18
|
|
|
20
19
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import uuid
|
|
2
1
|
from unittest import skip, skipIf
|
|
2
|
+
import uuid
|
|
3
3
|
|
|
4
4
|
from django.db import connection
|
|
5
5
|
|
|
6
|
+
from nautobot.circuits.choices import CircuitTerminationSideChoices
|
|
6
7
|
from nautobot.core.models.fields import TagsField
|
|
7
8
|
from nautobot.core.testing.migrations import NautobotDataMigrationTest
|
|
8
|
-
from nautobot.circuits.choices import CircuitTerminationSideChoices
|
|
9
9
|
from nautobot.extras.choices import CustomFieldTypeChoices, ObjectChangeActionChoices, RelationshipTypeChoices
|
|
10
10
|
|
|
11
11
|
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
from decimal import Decimal
|
|
2
2
|
import unittest
|
|
3
3
|
|
|
4
|
-
import pytz
|
|
5
|
-
import yaml
|
|
6
|
-
|
|
7
4
|
from django.contrib.auth import get_user_model
|
|
8
5
|
from django.contrib.contenttypes.models import ContentType
|
|
9
6
|
from django.db.models import Q
|
|
10
7
|
from django.test import override_settings
|
|
11
8
|
from django.urls import reverse
|
|
12
9
|
from netaddr import EUI
|
|
10
|
+
import pytz
|
|
11
|
+
import yaml
|
|
13
12
|
|
|
14
13
|
from nautobot.circuits.choices import CircuitTerminationSideChoices
|
|
15
14
|
from nautobot.circuits.models import Circuit, CircuitTermination, CircuitType, Provider
|
|
16
|
-
from nautobot.core.testing import
|
|
15
|
+
from nautobot.core.testing import extract_page_body, ModelViewTestCase, post_data, ViewTestCases
|
|
17
16
|
from nautobot.core.testing.utils import generate_random_device_asset_tag_of_specified_size
|
|
18
17
|
from nautobot.dcim.choices import (
|
|
19
18
|
CableLengthUnitChoices,
|
|
@@ -52,20 +51,20 @@ from nautobot.dcim.models import (
|
|
|
52
51
|
FrontPort,
|
|
53
52
|
FrontPortTemplate,
|
|
54
53
|
Interface,
|
|
55
|
-
InterfaceTemplate,
|
|
56
54
|
InterfaceRedundancyGroup,
|
|
57
55
|
InterfaceRedundancyGroupAssociation,
|
|
58
|
-
|
|
56
|
+
InterfaceTemplate,
|
|
59
57
|
InventoryItem,
|
|
60
58
|
Location,
|
|
61
59
|
LocationType,
|
|
60
|
+
Manufacturer,
|
|
62
61
|
Platform,
|
|
63
62
|
PowerFeed,
|
|
64
|
-
PowerPort,
|
|
65
|
-
PowerPortTemplate,
|
|
66
63
|
PowerOutlet,
|
|
67
64
|
PowerOutletTemplate,
|
|
68
65
|
PowerPanel,
|
|
66
|
+
PowerPort,
|
|
67
|
+
PowerPortTemplate,
|
|
69
68
|
Rack,
|
|
70
69
|
RackGroup,
|
|
71
70
|
RackReservation,
|
nautobot/dcim/urls.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from django.urls import path
|
|
2
2
|
|
|
3
3
|
from nautobot.core.views.routers import NautobotUIViewSetRouter
|
|
4
|
-
from nautobot.extras.views import ObjectChangeLogView, ObjectDynamicGroupsView, ObjectNotesView
|
|
4
|
+
from nautobot.extras.views import ImageAttachmentEditView, ObjectChangeLogView, ObjectDynamicGroupsView, ObjectNotesView
|
|
5
5
|
from nautobot.ipam.views import ServiceEditView
|
|
6
|
+
|
|
6
7
|
from . import views
|
|
7
8
|
from .models import (
|
|
8
9
|
Cable,
|
|
@@ -19,9 +20,9 @@ from .models import (
|
|
|
19
20
|
Manufacturer,
|
|
20
21
|
Platform,
|
|
21
22
|
PowerFeed,
|
|
23
|
+
PowerOutlet,
|
|
22
24
|
PowerPanel,
|
|
23
25
|
PowerPort,
|
|
24
|
-
PowerOutlet,
|
|
25
26
|
Rack,
|
|
26
27
|
RackGroup,
|
|
27
28
|
RackReservation,
|
nautobot/dcim/utils.py
CHANGED
|
@@ -14,8 +14,8 @@ from netutils.lib_mapper import (
|
|
|
14
14
|
SCRAPLI_LIB_MAPPER_REVERSE,
|
|
15
15
|
)
|
|
16
16
|
|
|
17
|
-
from nautobot.core.utils.config import get_settings_or_config
|
|
18
17
|
from nautobot.core.utils.color import hex_to_rgb, lighten_color, rgb_to_hex
|
|
18
|
+
from nautobot.core.utils.config import get_settings_or_config
|
|
19
19
|
from nautobot.dcim.choices import InterfaceModeChoices
|
|
20
20
|
from nautobot.dcim.constants import NETUTILS_NETWORK_DRIVER_MAPPING_NAMES
|
|
21
21
|
|
nautobot/dcim/views.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import uuid
|
|
2
1
|
from collections import OrderedDict
|
|
2
|
+
import uuid
|
|
3
3
|
|
|
4
4
|
from django.contrib import messages
|
|
5
5
|
from django.contrib.contenttypes.models import ContentType
|
|
@@ -7,9 +7,9 @@ from django.core.paginator import EmptyPage, PageNotAnInteger
|
|
|
7
7
|
from django.db import transaction
|
|
8
8
|
from django.db.models import F, Prefetch
|
|
9
9
|
from django.forms import (
|
|
10
|
+
modelformset_factory,
|
|
10
11
|
ModelMultipleChoiceField,
|
|
11
12
|
MultipleHiddenInput,
|
|
12
|
-
modelformset_factory,
|
|
13
13
|
)
|
|
14
14
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
15
15
|
from django.utils.functional import cached_property
|
|
@@ -30,11 +30,12 @@ from nautobot.core.views.mixins import (
|
|
|
30
30
|
)
|
|
31
31
|
from nautobot.core.views.paginator import EnhancedPaginator, get_paginate_count
|
|
32
32
|
from nautobot.core.views.viewsets import NautobotUIViewSet
|
|
33
|
-
from nautobot.dcim.utils import
|
|
33
|
+
from nautobot.dcim.utils import get_all_network_driver_mappings, get_network_driver_mapping_tool_names
|
|
34
34
|
from nautobot.extras.views import ObjectChangeLogView, ObjectConfigContextView, ObjectDynamicGroupsView
|
|
35
35
|
from nautobot.ipam.models import IPAddress, Prefix, Service, VLAN
|
|
36
36
|
from nautobot.ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable, VRFDeviceAssignmentTable
|
|
37
37
|
from nautobot.virtualization.models import VirtualMachine
|
|
38
|
+
|
|
38
39
|
from . import filters, forms, tables
|
|
39
40
|
from .api import serializers
|
|
40
41
|
from .choices import DeviceFaceChoices
|
nautobot/extras/admin.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from db_file_storage.form_widgets import DBAdminClearableFileInput
|
|
2
2
|
from django import forms
|
|
3
3
|
from django.contrib import admin
|
|
4
|
+
|
|
4
5
|
from nautobot.core.admin import NautobotModelAdmin
|
|
5
6
|
|
|
6
7
|
from .models import FileProxy, JobResult
|
|
@@ -22,7 +23,7 @@ def order_content_types(field):
|
|
|
22
23
|
class FileProxyForm(forms.ModelForm):
|
|
23
24
|
class Meta:
|
|
24
25
|
model = FileProxy
|
|
25
|
-
|
|
26
|
+
fields = ["name", "file"]
|
|
26
27
|
widgets = {
|
|
27
28
|
"file": DBAdminClearableFileInput,
|
|
28
29
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
from django.contrib.contenttypes.models import ContentType
|
|
2
|
-
|
|
3
2
|
from drf_spectacular.types import OpenApiTypes
|
|
4
3
|
from drf_spectacular.utils import extend_schema_field
|
|
5
4
|
from rest_framework.fields import Field
|
|
6
5
|
|
|
7
6
|
from nautobot.extras.models import CustomField
|
|
8
7
|
|
|
9
|
-
|
|
10
8
|
#
|
|
11
9
|
# Custom fields
|
|
12
10
|
#
|
nautobot/extras/api/mixins.py
CHANGED
|
@@ -30,6 +30,9 @@ from nautobot.dcim.api.serializers import (
|
|
|
30
30
|
RackSerializer,
|
|
31
31
|
)
|
|
32
32
|
from nautobot.extras import choices, models
|
|
33
|
+
from nautobot.extras.api.mixins import (
|
|
34
|
+
TaggedModelSerializerMixin,
|
|
35
|
+
)
|
|
33
36
|
from nautobot.extras.choices import (
|
|
34
37
|
CustomFieldFilterLogicChoices,
|
|
35
38
|
CustomFieldTypeChoices,
|
|
@@ -37,9 +40,6 @@ from nautobot.extras.choices import (
|
|
|
37
40
|
JobResultStatusChoices,
|
|
38
41
|
ObjectChangeActionChoices,
|
|
39
42
|
)
|
|
40
|
-
from nautobot.extras.api.mixins import (
|
|
41
|
-
TaggedModelSerializerMixin,
|
|
42
|
-
)
|
|
43
43
|
from nautobot.extras.datasources import get_datasource_content_choices
|
|
44
44
|
from nautobot.extras.models import (
|
|
45
45
|
ComputedField,
|
|
@@ -342,7 +342,7 @@ class GitRepositorySerializer(NautobotModelSerializer):
|
|
|
342
342
|
|
|
343
343
|
|
|
344
344
|
class GraphQLQuerySerializer(ValidatedModelSerializer, NotesSerializerMixin):
|
|
345
|
-
variables = serializers.DictField(
|
|
345
|
+
variables = serializers.DictField(read_only=True)
|
|
346
346
|
|
|
347
347
|
class Meta:
|
|
348
348
|
model = GraphQLQuery
|
nautobot/extras/api/urls.py
CHANGED
nautobot/extras/api/views.py
CHANGED
|
@@ -7,7 +7,7 @@ from django.http import FileResponse, Http404
|
|
|
7
7
|
from django.shortcuts import get_object_or_404
|
|
8
8
|
from django.utils import timezone
|
|
9
9
|
from drf_spectacular.types import OpenApiTypes
|
|
10
|
-
from drf_spectacular.utils import
|
|
10
|
+
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter
|
|
11
11
|
from graphene_django.views import GraphQLView
|
|
12
12
|
from graphql import GraphQLError
|
|
13
13
|
from rest_framework import mixins, status, viewsets
|
nautobot/extras/apps.py
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
|
|
3
3
|
from django.db.utils import ProgrammingError
|
|
4
|
-
|
|
5
4
|
import graphene
|
|
6
5
|
from health_check.plugins import plugin_dir
|
|
7
6
|
|
|
8
7
|
from nautobot.core.apps import NautobotConfig
|
|
9
8
|
from nautobot.core.signals import nautobot_database_ready
|
|
10
9
|
|
|
11
|
-
|
|
12
10
|
logger = logging.getLogger(__name__)
|
|
13
11
|
|
|
14
12
|
|
|
@@ -17,12 +15,13 @@ class ExtrasConfig(NautobotConfig):
|
|
|
17
15
|
|
|
18
16
|
def ready(self):
|
|
19
17
|
super().ready()
|
|
20
|
-
import nautobot.extras.signals # noqa
|
|
18
|
+
import nautobot.extras.signals # noqa: F401 # unused-import -- but this import installs the signals
|
|
21
19
|
from nautobot.extras.signals import refresh_job_models
|
|
22
20
|
|
|
23
21
|
nautobot_database_ready.connect(refresh_job_models, sender=self)
|
|
24
22
|
|
|
25
23
|
from graphene_django.converter import convert_django_field
|
|
24
|
+
|
|
26
25
|
from nautobot.core.models.fields import TagsField
|
|
27
26
|
from nautobot.extras.graphql.types import TagType
|
|
28
27
|
|
|
@@ -51,8 +50,8 @@ class ExtrasConfig(NautobotConfig):
|
|
|
51
50
|
plugin_dir.register(RedisBackend)
|
|
52
51
|
|
|
53
52
|
# Register built-in SecretsProvider classes
|
|
54
|
-
from nautobot.extras.secrets.providers import EnvironmentVariableSecretsProvider, TextFileSecretsProvider
|
|
55
53
|
from nautobot.extras.secrets import register_secrets_provider
|
|
54
|
+
from nautobot.extras.secrets.providers import EnvironmentVariableSecretsProvider, TextFileSecretsProvider
|
|
56
55
|
|
|
57
56
|
register_secrets_provider(EnvironmentVariableSecretsProvider)
|
|
58
57
|
register_secrets_provider(TextFileSecretsProvider)
|
nautobot/extras/choices.py
CHANGED
|
@@ -3,7 +3,6 @@ from celery import states
|
|
|
3
3
|
from nautobot.core.choices import ChoiceSet
|
|
4
4
|
from nautobot.core.utils.deprecation import class_deprecated_in_favor_of
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#
|
|
8
7
|
# Banners (currently plugin-specific)
|
|
9
8
|
#
|
|
@@ -375,9 +374,9 @@ class SecretsGroupAccessTypeChoices(ChoiceSet):
|
|
|
375
374
|
|
|
376
375
|
class SecretsGroupSecretTypeChoices(ChoiceSet):
|
|
377
376
|
TYPE_KEY = "key"
|
|
378
|
-
TYPE_PASSWORD = "password"
|
|
379
|
-
TYPE_SECRET = "secret"
|
|
380
|
-
TYPE_TOKEN = "token"
|
|
377
|
+
TYPE_PASSWORD = "password" # noqa: S105 # hardcoded-password-string -- false positive
|
|
378
|
+
TYPE_SECRET = "secret" # noqa: S105 # hardcoded-password-string -- false positive
|
|
379
|
+
TYPE_TOKEN = "token" # noqa: S105 # hardcoded-password-string -- false positive
|
|
381
380
|
TYPE_USERNAME = "username"
|
|
382
381
|
|
|
383
382
|
CHOICES = (
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"""Git data source functionality."""
|
|
2
2
|
|
|
3
3
|
from collections import defaultdict, namedtuple
|
|
4
|
+
from contextlib import suppress
|
|
4
5
|
import logging
|
|
5
6
|
import mimetypes
|
|
6
7
|
import os
|
|
8
|
+
from pathlib import Path
|
|
7
9
|
import re
|
|
8
10
|
import sys
|
|
9
|
-
from contextlib import suppress
|
|
10
|
-
from pathlib import Path
|
|
11
11
|
from urllib.parse import quote
|
|
12
12
|
|
|
13
13
|
from django.conf import settings
|
|
14
14
|
from django.contrib.contenttypes.models import ContentType
|
|
15
15
|
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
|
|
16
16
|
from django.db import transaction
|
|
17
|
+
from git import InvalidGitRepositoryError, Repo
|
|
17
18
|
import yaml
|
|
18
|
-
from git import Repo, InvalidGitRepositoryError
|
|
19
19
|
|
|
20
20
|
from nautobot.core.celery import app as celery_app
|
|
21
21
|
from nautobot.core.utils.git import GitRepo
|
|
@@ -38,10 +38,10 @@ from nautobot.extras.models import (
|
|
|
38
38
|
)
|
|
39
39
|
from nautobot.extras.registry import DatasourceContent, register_datasource_contents
|
|
40
40
|
from nautobot.extras.utils import refresh_job_model_from_job_class
|
|
41
|
-
from nautobot.tenancy.models import
|
|
42
|
-
from nautobot.virtualization.models import
|
|
43
|
-
from .utils import files_from_contenttype_directories
|
|
41
|
+
from nautobot.tenancy.models import Tenant, TenantGroup
|
|
42
|
+
from nautobot.virtualization.models import Cluster, ClusterGroup, VirtualMachine
|
|
44
43
|
|
|
44
|
+
from .utils import files_from_contenttype_directories
|
|
45
45
|
|
|
46
46
|
logger = logging.getLogger(__name__)
|
|
47
47
|
|
nautobot/extras/factory.py
CHANGED
|
@@ -10,9 +10,9 @@ from nautobot.core.factory import (
|
|
|
10
10
|
PrimaryModelFactory,
|
|
11
11
|
UniqueFaker,
|
|
12
12
|
)
|
|
13
|
+
from nautobot.extras.choices import WebhookHttpMethodChoices
|
|
13
14
|
from nautobot.extras.models import ExternalIntegration, Role, Status, Tag
|
|
14
15
|
from nautobot.extras.utils import FeatureQuery, RoleModelsQuery, TaggableClassesQuery
|
|
15
|
-
from nautobot.extras.choices import WebhookHttpMethodChoices
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class ExternalIntegrationFactory(PrimaryModelFactory):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import django_filters
|
|
2
1
|
from django.conf import settings
|
|
3
2
|
from django.contrib.auth import get_user_model
|
|
4
3
|
from django.contrib.contenttypes.models import ContentType
|
|
4
|
+
import django_filters
|
|
5
5
|
|
|
6
6
|
from nautobot.core.filters import (
|
|
7
7
|
BaseFilterSet,
|
|
@@ -34,8 +34,8 @@ from nautobot.extras.filters.customfields import (
|
|
|
34
34
|
)
|
|
35
35
|
from nautobot.extras.filters.mixins import (
|
|
36
36
|
ConfigContextRoleFilter,
|
|
37
|
-
CustomFieldModelFilterSetMixin,
|
|
38
37
|
CreatedUpdatedModelFilterSetMixin,
|
|
38
|
+
CustomFieldModelFilterSetMixin,
|
|
39
39
|
LocalContextModelFilterSetMixin,
|
|
40
40
|
RelationshipFilter,
|
|
41
41
|
RelationshipModelFilterSetMixin,
|
|
@@ -80,7 +80,6 @@ from nautobot.extras.utils import ChangeLoggedModelsQuery, FeatureQuery, RoleMod
|
|
|
80
80
|
from nautobot.tenancy.models import Tenant, TenantGroup
|
|
81
81
|
from nautobot.virtualization.models import Cluster, ClusterGroup
|
|
82
82
|
|
|
83
|
-
|
|
84
83
|
__all__ = (
|
|
85
84
|
"ComputedFieldFilterSet",
|
|
86
85
|
"ConfigContextFilterSet",
|
|
@@ -11,7 +11,6 @@ from nautobot.core.forms import NullableDateField
|
|
|
11
11
|
from nautobot.core.forms.widgets import StaticSelect2Multiple
|
|
12
12
|
from nautobot.extras.choices import CustomFieldFilterLogicChoices, CustomFieldTypeChoices
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
EXACT_FILTER_TYPES = (
|
|
16
15
|
CustomFieldTypeChoices.TYPE_BOOLEAN,
|
|
17
16
|
CustomFieldTypeChoices.TYPE_DATE,
|
|
@@ -213,7 +213,7 @@ class RelationshipFilter(django_filters.ModelMultipleChoiceFilter):
|
|
|
213
213
|
# unioned queryset is also distinct. We also need to conditionally check if the incoming
|
|
214
214
|
# `qs` is distinct in the case that a caller is manually passing in a queryset that may
|
|
215
215
|
# not be distinct. (Ref: https://github.com/nautobot/nautobot/issues/2963)
|
|
216
|
-
union_qs = self.get_method(self.qs)(Q(
|
|
216
|
+
union_qs = self.get_method(self.qs)(Q(id__in=values))
|
|
217
217
|
if qs.query.distinct:
|
|
218
218
|
union_qs = union_qs.distinct()
|
|
219
219
|
|