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
|
@@ -977,20 +977,6 @@
|
|
|
977
977
|
|
|
978
978
|
|
|
979
979
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
<li class="md-nav__item">
|
|
986
|
-
<a href="../../../user-guide/administration/configuration/node-configuration.html" class="md-nav__link">
|
|
987
|
-
Node.js Configuration
|
|
988
|
-
</a>
|
|
989
|
-
</li>
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
980
|
</ul>
|
|
995
981
|
</nav>
|
|
996
982
|
</li>
|
|
@@ -3528,23 +3514,9 @@
|
|
|
3528
3514
|
|
|
3529
3515
|
|
|
3530
3516
|
|
|
3531
|
-
<li class="md-nav__item">
|
|
3532
|
-
<a href="../../../development/apps/api/views/view-overrides.html" class="md-nav__link">
|
|
3533
|
-
View Overrides
|
|
3534
|
-
</a>
|
|
3535
|
-
</li>
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
3517
|
<li class="md-nav__item">
|
|
3546
3518
|
<a href="../../../development/apps/api/views/core-view-overrides.html" class="md-nav__link">
|
|
3547
|
-
|
|
3519
|
+
View Overrides
|
|
3548
3520
|
</a>
|
|
3549
3521
|
</li>
|
|
3550
3522
|
|
|
@@ -4708,20 +4680,6 @@
|
|
|
4708
4680
|
|
|
4709
4681
|
|
|
4710
4682
|
|
|
4711
|
-
<li class="md-nav__item">
|
|
4712
|
-
<a href="../../../development/core/react-ui.html" class="md-nav__link">
|
|
4713
|
-
React UI
|
|
4714
|
-
</a>
|
|
4715
|
-
</li>
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
4683
|
<li class="md-nav__item">
|
|
4726
4684
|
<a href="../../../development/core/role-internals.html" class="md-nav__link">
|
|
4727
4685
|
Role Internals
|
|
@@ -5348,7 +5306,8 @@ Relationships, etc.</p>
|
|
|
5348
5306
|
|
|
5349
5307
|
<details class="quote">
|
|
5350
5308
|
<summary>Source code in <code>nautobot/extras/plugins/__init__.py</code></summary>
|
|
5351
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
5309
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-43"> 43</a></span>
|
|
5310
|
+
<span class="normal"><a href="#__codelineno-0-44"> 44</a></span>
|
|
5352
5311
|
<span class="normal"><a href="#__codelineno-0-45"> 45</a></span>
|
|
5353
5312
|
<span class="normal"><a href="#__codelineno-0-46"> 46</a></span>
|
|
5354
5313
|
<span class="normal"><a href="#__codelineno-0-47"> 47</a></span>
|
|
@@ -5565,226 +5524,225 @@ Relationships, etc.</p>
|
|
|
5565
5524
|
<span class="normal"><a href="#__codelineno-0-258">258</a></span>
|
|
5566
5525
|
<span class="normal"><a href="#__codelineno-0-259">259</a></span>
|
|
5567
5526
|
<span class="normal"><a href="#__codelineno-0-260">260</a></span>
|
|
5568
|
-
<span class="normal"><a href="#__codelineno-0-261">261</a></span>
|
|
5569
|
-
<
|
|
5570
|
-
<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="
|
|
5571
|
-
<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd">
|
|
5572
|
-
<a id="__codelineno-0-47" name="__codelineno-0-47"></a
|
|
5573
|
-
<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
|
|
5574
|
-
<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="
|
|
5575
|
-
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">
|
|
5576
|
-
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">
|
|
5577
|
-
<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">
|
|
5578
|
-
<a id="__codelineno-0-53" name="__codelineno-0-53"></a>
|
|
5579
|
-
<a id="__codelineno-0-54" name="__codelineno-0-54"></a>
|
|
5580
|
-
<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="
|
|
5581
|
-
<a id="__codelineno-0-56" name="__codelineno-0-56"></a>
|
|
5582
|
-
<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
|
|
5583
|
-
<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="
|
|
5584
|
-
<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">
|
|
5585
|
-
<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
|
|
5586
|
-
<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
|
|
5587
|
-
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="
|
|
5588
|
-
<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
|
|
5589
|
-
<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
|
|
5590
|
-
<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="
|
|
5591
|
-
<a id="__codelineno-0-66" name="__codelineno-0-66"></a>
|
|
5592
|
-
<a id="__codelineno-0-67" name="__codelineno-0-67"></a>
|
|
5593
|
-
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="
|
|
5594
|
-
<a id="__codelineno-0-69" name="__codelineno-0-69"></a>
|
|
5595
|
-
<a id="__codelineno-0-70" name="__codelineno-0-70"></a>
|
|
5596
|
-
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="c1">#
|
|
5597
|
-
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="
|
|
5598
|
-
<a id="__codelineno-0-73" name="__codelineno-0-73"></a>
|
|
5599
|
-
<a id="__codelineno-0-74" name="__codelineno-0-74"></a>
|
|
5600
|
-
<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="
|
|
5601
|
-
<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
|
|
5602
|
-
<a id="__codelineno-0-77" name="__codelineno-0-77"></a>
|
|
5603
|
-
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="
|
|
5604
|
-
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">
|
|
5605
|
-
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">
|
|
5606
|
-
<a id="__codelineno-0-81" name="__codelineno-0-81"></a>
|
|
5607
|
-
<a id="__codelineno-0-82" name="__codelineno-0-82"></a>
|
|
5608
|
-
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="c1">#
|
|
5609
|
-
<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="
|
|
5610
|
-
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">
|
|
5611
|
-
<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">
|
|
5612
|
-
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">
|
|
5613
|
-
<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">
|
|
5614
|
-
<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">
|
|
5615
|
-
<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">
|
|
5616
|
-
<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="n">
|
|
5617
|
-
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">
|
|
5618
|
-
<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">
|
|
5619
|
-
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">
|
|
5620
|
-
<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">
|
|
5621
|
-
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">
|
|
5622
|
-
<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
|
|
5623
|
-
<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
|
|
5624
|
-
<a id="__codelineno-0-99" name="__codelineno-0-99"></a
|
|
5625
|
-
<a id="__codelineno-0-100" name="__codelineno-0-100"></a
|
|
5626
|
-
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
|
|
5627
|
-
<a id="__codelineno-0-102" name="__codelineno-0-102"></a>
|
|
5628
|
-
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="
|
|
5629
|
-
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">
|
|
5630
|
-
<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
|
|
5631
|
-
<a id="__codelineno-0-106" name="__codelineno-0-106"></a>
|
|
5632
|
-
<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
|
|
5633
|
-
<a id="__codelineno-0-108" name="__codelineno-0-108"></a>
|
|
5634
|
-
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="
|
|
5635
|
-
<a id="__codelineno-0-110" name="__codelineno-0-110"></a>
|
|
5636
|
-
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="p">),</span>
|
|
5637
|
-
<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="s2">"
|
|
5638
|
-
<a id="__codelineno-0-113" name="__codelineno-0-113"></a>
|
|
5639
|
-
<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="
|
|
5640
|
-
<a id="__codelineno-0-115" name="__codelineno-0-115"></a>
|
|
5641
|
-
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">
|
|
5642
|
-
<a id="__codelineno-0-117" name="__codelineno-0-117"></a>
|
|
5643
|
-
<a id="__codelineno-0-118" name="__codelineno-0-118"></a>
|
|
5644
|
-
<a id="__codelineno-0-119" name="__codelineno-0-119"></a>
|
|
5645
|
-
<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="
|
|
5646
|
-
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="
|
|
5647
|
-
<a id="__codelineno-0-122" name="__codelineno-0-122"></a>
|
|
5648
|
-
<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="
|
|
5649
|
-
<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
|
|
5650
|
-
<a id="__codelineno-0-125" name="__codelineno-0-125"></a>
|
|
5651
|
-
<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="
|
|
5652
|
-
<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="
|
|
5653
|
-
<a id="__codelineno-0-128" name="__codelineno-0-128"></a>
|
|
5654
|
-
<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">
|
|
5655
|
-
<a id="__codelineno-0-130" name="__codelineno-0-130"></a>
|
|
5656
|
-
<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
|
|
5657
|
-
<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="
|
|
5658
|
-
<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="
|
|
5659
|
-
<a id="__codelineno-0-134" name="__codelineno-0-134"></a>
|
|
5660
|
-
<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="n">
|
|
5661
|
-
<a id="__codelineno-0-136" name="__codelineno-0-136"></a>
|
|
5662
|
-
<a id="__codelineno-0-137" name="__codelineno-0-137"></a>
|
|
5663
|
-
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="
|
|
5664
|
-
<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="
|
|
5665
|
-
<a id="__codelineno-0-140" name="__codelineno-0-140"></a>
|
|
5666
|
-
<a id="__codelineno-0-141" name="__codelineno-0-141"></a>
|
|
5667
|
-
<a id="__codelineno-0-142" name="__codelineno-0-142"></a>
|
|
5668
|
-
<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="
|
|
5669
|
-
<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="
|
|
5670
|
-
<a id="__codelineno-0-145" name="__codelineno-0-145"></a>
|
|
5671
|
-
<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="n">
|
|
5672
|
-
<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
|
|
5673
|
-
<a id="__codelineno-0-148" name="__codelineno-0-148"></a>
|
|
5674
|
-
<a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="
|
|
5675
|
-
<a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="
|
|
5676
|
-
<a id="__codelineno-0-151" name="__codelineno-0-151"></a>
|
|
5677
|
-
<a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="n">
|
|
5678
|
-
<a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="
|
|
5679
|
-
<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="
|
|
5680
|
-
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">
|
|
5681
|
-
<a id="__codelineno-0-156" name="__codelineno-0-156"></a>
|
|
5682
|
-
<a id="__codelineno-0-157" name="__codelineno-0-157"></a>
|
|
5683
|
-
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="
|
|
5684
|
-
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="
|
|
5685
|
-
<a id="__codelineno-0-160" name="__codelineno-0-160"></a>
|
|
5686
|
-
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="
|
|
5687
|
-
<a id="__codelineno-0-162" name="__codelineno-0-162"></a>
|
|
5688
|
-
<a id="__codelineno-0-163" name="__codelineno-0-163"></a>
|
|
5689
|
-
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="
|
|
5690
|
-
<a id="__codelineno-0-165" name="__codelineno-0-165"></a>
|
|
5691
|
-
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="
|
|
5692
|
-
<a id="__codelineno-0-167" name="__codelineno-0-167"></a>
|
|
5693
|
-
<a id="__codelineno-0-168" name="__codelineno-0-168"></a>
|
|
5694
|
-
<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="
|
|
5695
|
-
<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="
|
|
5696
|
-
<a id="__codelineno-0-171" name="__codelineno-0-171"></a>
|
|
5697
|
-
<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="n">
|
|
5698
|
-
<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
|
|
5699
|
-
<a id="__codelineno-0-174" name="__codelineno-0-174"></a>
|
|
5700
|
-
<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="
|
|
5701
|
-
<a id="__codelineno-0-176" name="__codelineno-0-176"></a>
|
|
5702
|
-
<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="
|
|
5703
|
-
<a id="__codelineno-0-178" name="__codelineno-0-178"></a>
|
|
5704
|
-
<a id="__codelineno-0-179" name="__codelineno-0-179"></a>
|
|
5705
|
-
<a id="__codelineno-0-180" name="__codelineno-0-180"></a>
|
|
5706
|
-
<a id="__codelineno-0-181" name="__codelineno-0-181"></a>
|
|
5707
|
-
<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="
|
|
5708
|
-
<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="
|
|
5709
|
-
<a id="__codelineno-0-184" name="__codelineno-0-184"></a>
|
|
5710
|
-
<a id="__codelineno-0-185" name="__codelineno-0-185"></a>
|
|
5711
|
-
<a id="__codelineno-0-186" name="__codelineno-0-186"></a>
|
|
5712
|
-
<a id="__codelineno-0-187" name="__codelineno-0-187"></a>
|
|
5713
|
-
<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
|
|
5714
|
-
<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="
|
|
5715
|
-
<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="
|
|
5716
|
-
<a id="__codelineno-0-191" name="__codelineno-0-191"></a>
|
|
5717
|
-
<a id="__codelineno-0-192" name="__codelineno-0-192"></a> <span class="n">
|
|
5718
|
-
<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="
|
|
5719
|
-
<a id="__codelineno-0-194" name="__codelineno-0-194"></a>
|
|
5720
|
-
<a id="__codelineno-0-195" name="__codelineno-0-195"></a>
|
|
5721
|
-
<a id="__codelineno-0-196" name="__codelineno-0-196"></a>
|
|
5722
|
-
<a id="__codelineno-0-197" name="__codelineno-0-197"></a>
|
|
5723
|
-
<a id="__codelineno-0-198" name="__codelineno-0-198"></a>
|
|
5724
|
-
<a id="__codelineno-0-199" name="__codelineno-0-199"></a>
|
|
5725
|
-
<a id="__codelineno-0-200" name="__codelineno-0-200"></a>
|
|
5726
|
-
<a id="__codelineno-0-201" name="__codelineno-0-201"></a>
|
|
5727
|
-
<a id="__codelineno-0-202" name="__codelineno-0-202"></a>
|
|
5728
|
-
<a id="__codelineno-0-203" name="__codelineno-0-203"></a>
|
|
5729
|
-
<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="
|
|
5730
|
-
<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="
|
|
5731
|
-
<a id="__codelineno-0-206" name="__codelineno-0-206"></a>
|
|
5732
|
-
<a id="__codelineno-0-207" name="__codelineno-0-207"></a>
|
|
5733
|
-
<a id="__codelineno-0-208" name="__codelineno-0-208"></a>
|
|
5734
|
-
<a id="__codelineno-0-209" name="__codelineno-0-209"></a>
|
|
5735
|
-
<a id="__codelineno-0-210" name="__codelineno-0-210"></a>
|
|
5736
|
-
<a id="__codelineno-0-211" name="__codelineno-0-211"></a>
|
|
5737
|
-
<a id="__codelineno-0-212" name="__codelineno-0-212"></a>
|
|
5738
|
-
<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="
|
|
5739
|
-
<a id="__codelineno-0-214" name="__codelineno-0-214"></a
|
|
5740
|
-
<a id="__codelineno-0-215" name="__codelineno-0-215"></a
|
|
5741
|
-
<a id="__codelineno-0-216" name="__codelineno-0-216"></a>
|
|
5742
|
-
<a id="__codelineno-0-217" name="__codelineno-0-217"></a>
|
|
5743
|
-
<a id="__codelineno-0-218" name="__codelineno-0-218"></a>
|
|
5744
|
-
<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="
|
|
5745
|
-
<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="
|
|
5746
|
-
<a id="__codelineno-0-221" name="__codelineno-0-221"></a>
|
|
5747
|
-
<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="
|
|
5748
|
-
<a id="__codelineno-0-223" name="__codelineno-0-223"></a>
|
|
5749
|
-
<a id="__codelineno-0-224" name="__codelineno-0-224"></a>
|
|
5750
|
-
<a id="__codelineno-0-225" name="__codelineno-0-225"></a>
|
|
5751
|
-
<a id="__codelineno-0-226" name="__codelineno-0-226"></a>
|
|
5752
|
-
<a id="__codelineno-0-227" name="__codelineno-0-227"></a>
|
|
5753
|
-
<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="
|
|
5754
|
-
<a id="__codelineno-0-229" name="__codelineno-0-229"></a>
|
|
5755
|
-
<a id="__codelineno-0-230" name="__codelineno-0-230"></a>
|
|
5756
|
-
<a id="__codelineno-0-231" name="__codelineno-0-231"></a>
|
|
5757
|
-
<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
|
|
5758
|
-
<a id="__codelineno-0-233" name="__codelineno-0-233"></a>
|
|
5759
|
-
<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="c1">#
|
|
5760
|
-
<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="c1">#
|
|
5761
|
-
<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="
|
|
5762
|
-
<a id="__codelineno-0-237" name="__codelineno-0-237"></a>
|
|
5763
|
-
<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="s2">"
|
|
5764
|
-
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="s2">"
|
|
5765
|
-
<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="s2">"
|
|
5766
|
-
<a id="__codelineno-0-241" name="__codelineno-0-241"></a>
|
|
5767
|
-
<a id="__codelineno-0-242" name="__codelineno-0-242"></a>
|
|
5768
|
-
<a id="__codelineno-0-243" name="__codelineno-0-243"></a>
|
|
5769
|
-
<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="
|
|
5770
|
-
<a id="__codelineno-0-245" name="__codelineno-0-245"></a>
|
|
5771
|
-
<a id="__codelineno-0-246" name="__codelineno-0-246"></a>
|
|
5772
|
-
<a id="__codelineno-0-247" name="__codelineno-0-247"></a>
|
|
5773
|
-
<a id="__codelineno-0-248" name="__codelineno-0-248"></a>
|
|
5774
|
-
<a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="
|
|
5775
|
-
<a id="__codelineno-0-250" name="__codelineno-0-250"></a>
|
|
5776
|
-
<a id="__codelineno-0-251" name="__codelineno-0-251"></a>
|
|
5777
|
-
<a id="__codelineno-0-252" name="__codelineno-0-252"></a>
|
|
5778
|
-
<a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="sa">f</span><span class="s2">"
|
|
5779
|
-
<a id="__codelineno-0-254" name="__codelineno-0-254"></a>
|
|
5780
|
-
<a id="__codelineno-0-255" name="__codelineno-0-255"></a>
|
|
5781
|
-
<a id="__codelineno-0-256" name="__codelineno-0-256"></a>
|
|
5782
|
-
<a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="
|
|
5783
|
-
<a id="__codelineno-0-258" name="__codelineno-0-258"></a>
|
|
5784
|
-
<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="c1">#
|
|
5785
|
-
<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="
|
|
5786
|
-
<a id="__codelineno-0-261" name="__codelineno-0-261"></a>
|
|
5787
|
-
<a id="__codelineno-0-262" name="__codelineno-0-262"></a> <span class="n">user_config</span><span class="p">[</span><span class="n">setting</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
|
5527
|
+
<span class="normal"><a href="#__codelineno-0-261">261</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="k">class</span> <span class="nc">NautobotAppConfig</span><span class="p">(</span><span class="n">NautobotConfig</span><span class="p">):</span>
|
|
5528
|
+
<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="w"> </span><span class="sd">"""</span>
|
|
5529
|
+
<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Subclass of Django's built-in AppConfig class, to be used for Nautobot plugins.</span>
|
|
5530
|
+
<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> """</span>
|
|
5531
|
+
<a id="__codelineno-0-47" name="__codelineno-0-47"></a>
|
|
5532
|
+
<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="c1"># Plugin metadata</span>
|
|
5533
|
+
<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">author</span> <span class="o">=</span> <span class="s2">""</span>
|
|
5534
|
+
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">author_email</span> <span class="o">=</span> <span class="s2">""</span>
|
|
5535
|
+
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">description</span> <span class="o">=</span> <span class="s2">""</span>
|
|
5536
|
+
<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">version</span> <span class="o">=</span> <span class="s2">""</span>
|
|
5537
|
+
<a id="__codelineno-0-53" name="__codelineno-0-53"></a>
|
|
5538
|
+
<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="c1"># Root URL path under /plugins. If not set, the plugin's label will be used.</span>
|
|
5539
|
+
<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="n">base_url</span> <span class="o">=</span> <span class="kc">None</span>
|
|
5540
|
+
<a id="__codelineno-0-56" name="__codelineno-0-56"></a>
|
|
5541
|
+
<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="c1"># Minimum/maximum compatible versions of Nautobot</span>
|
|
5542
|
+
<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">min_version</span> <span class="o">=</span> <span class="kc">None</span>
|
|
5543
|
+
<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">max_version</span> <span class="o">=</span> <span class="kc">None</span>
|
|
5544
|
+
<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
|
|
5545
|
+
<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="c1"># Default configuration parameters</span>
|
|
5546
|
+
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">default_settings</span> <span class="o">=</span> <span class="p">{}</span>
|
|
5547
|
+
<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
|
|
5548
|
+
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="c1"># Mandatory configuration parameters</span>
|
|
5549
|
+
<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">required_settings</span> <span class="o">=</span> <span class="p">[]</span>
|
|
5550
|
+
<a id="__codelineno-0-66" name="__codelineno-0-66"></a>
|
|
5551
|
+
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="c1"># Middleware classes provided by the plugin</span>
|
|
5552
|
+
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">middleware</span> <span class="o">=</span> <span class="p">[]</span>
|
|
5553
|
+
<a id="__codelineno-0-69" name="__codelineno-0-69"></a>
|
|
5554
|
+
<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="c1"># Extra installed apps provided or required by the plugin. These will be registered</span>
|
|
5555
|
+
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="c1"># along with the plugin.</span>
|
|
5556
|
+
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">installed_apps</span> <span class="o">=</span> <span class="p">[]</span>
|
|
5557
|
+
<a id="__codelineno-0-73" name="__codelineno-0-73"></a>
|
|
5558
|
+
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="c1"># Default constance configuration parameters</span>
|
|
5559
|
+
<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">constance_config</span> <span class="o">=</span> <span class="p">{}</span>
|
|
5560
|
+
<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
|
|
5561
|
+
<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="c1"># URL reverse lookup names, a la "plugins:myplugin:home", "plugins:myplugin:configure", "plugins:myplugin:docs"</span>
|
|
5562
|
+
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">home_view_name</span> <span class="o">=</span> <span class="kc">None</span>
|
|
5563
|
+
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">config_view_name</span> <span class="o">=</span> <span class="kc">None</span>
|
|
5564
|
+
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">docs_view_name</span> <span class="o">=</span> <span class="kc">None</span>
|
|
5565
|
+
<a id="__codelineno-0-81" name="__codelineno-0-81"></a>
|
|
5566
|
+
<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="c1"># Default integration paths. Plugin authors can override these to customize the paths to</span>
|
|
5567
|
+
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="c1"># integrated components.</span>
|
|
5568
|
+
<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">banner_function</span> <span class="o">=</span> <span class="s2">"banner.banner"</span>
|
|
5569
|
+
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">custom_validators</span> <span class="o">=</span> <span class="s2">"custom_validators.custom_validators"</span>
|
|
5570
|
+
<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">datasource_contents</span> <span class="o">=</span> <span class="s2">"datasources.datasource_contents"</span>
|
|
5571
|
+
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">filter_extensions</span> <span class="o">=</span> <span class="s2">"filter_extensions.filter_extensions"</span>
|
|
5572
|
+
<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">graphql_types</span> <span class="o">=</span> <span class="s2">"graphql.types.graphql_types"</span>
|
|
5573
|
+
<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">homepage_layout</span> <span class="o">=</span> <span class="s2">"homepage.layout"</span>
|
|
5574
|
+
<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">jinja_filters</span> <span class="o">=</span> <span class="s2">"jinja_filters"</span>
|
|
5575
|
+
<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="n">jobs</span> <span class="o">=</span> <span class="s2">"jobs.jobs"</span>
|
|
5576
|
+
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">metrics</span> <span class="o">=</span> <span class="s2">"metrics.metrics"</span>
|
|
5577
|
+
<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">menu_items</span> <span class="o">=</span> <span class="s2">"navigation.menu_items"</span>
|
|
5578
|
+
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">secrets_providers</span> <span class="o">=</span> <span class="s2">"secrets.secrets_providers"</span>
|
|
5579
|
+
<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">template_extensions</span> <span class="o">=</span> <span class="s2">"template_content.template_extensions"</span>
|
|
5580
|
+
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">override_views</span> <span class="o">=</span> <span class="s2">"views.override_views"</span>
|
|
5581
|
+
<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
|
|
5582
|
+
<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">def</span> <span class="nf">ready</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
5583
|
+
<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="w"> </span><span class="sd">"""Callback after plugin app is loaded."""</span>
|
|
5584
|
+
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="c1"># We don't call super().ready here because we don't need or use the on-ready behavior of a core Nautobot app</span>
|
|
5585
|
+
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
|
|
5586
|
+
<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="c1"># Introspect URL patterns and models to make available to the installed-plugins detail UI view.</span>
|
|
5587
|
+
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">urlpatterns</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.urls.urlpatterns"</span><span class="p">)</span>
|
|
5588
|
+
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">api_urlpatterns</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.api.urls.urlpatterns"</span><span class="p">)</span>
|
|
5589
|
+
<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
|
|
5590
|
+
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span> <span class="o">=</span> <span class="p">{</span>
|
|
5591
|
+
<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="s2">"api_urlpatterns"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span>
|
|
5592
|
+
<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="p">(</span><span class="n">urlp</span> <span class="k">for</span> <span class="n">urlp</span> <span class="ow">in</span> <span class="p">(</span><span class="n">api_urlpatterns</span> <span class="ow">or</span> <span class="p">[])</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">urlp</span><span class="p">,</span> <span class="n">URLPattern</span><span class="p">)),</span>
|
|
5593
|
+
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">urlp</span><span class="p">:</span> <span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">pattern</span><span class="p">)),</span>
|
|
5594
|
+
<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="p">),</span>
|
|
5595
|
+
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="s2">"models"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">verbose_name</span> <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_models</span><span class="p">()),</span>
|
|
5596
|
+
<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="s2">"urlpatterns"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span>
|
|
5597
|
+
<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="p">(</span><span class="n">urlp</span> <span class="k">for</span> <span class="n">urlp</span> <span class="ow">in</span> <span class="p">(</span><span class="n">urlpatterns</span> <span class="ow">or</span> <span class="p">[])</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">urlp</span><span class="p">,</span> <span class="n">URLPattern</span><span class="p">)),</span>
|
|
5598
|
+
<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">urlp</span><span class="p">:</span> <span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">pattern</span><span class="p">)),</span>
|
|
5599
|
+
<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="p">),</span>
|
|
5600
|
+
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="s2">"constance_config"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">constance_config</span><span class="p">,</span>
|
|
5601
|
+
<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="p">}</span>
|
|
5602
|
+
<a id="__codelineno-0-118" name="__codelineno-0-118"></a>
|
|
5603
|
+
<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="c1"># Register banner function (if defined)</span>
|
|
5604
|
+
<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">banner_function</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">banner_function</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5605
|
+
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">if</span> <span class="n">banner_function</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5606
|
+
<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">register_banner_function</span><span class="p">(</span><span class="n">banner_function</span><span class="p">)</span>
|
|
5607
|
+
<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"banner"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
|
5608
|
+
<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
|
|
5609
|
+
<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="c1"># Register model validators (if defined)</span>
|
|
5610
|
+
<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">validators</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">custom_validators</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5611
|
+
<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="k">if</span> <span class="n">validators</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5612
|
+
<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">register_custom_validators</span><span class="p">(</span><span class="n">validators</span><span class="p">)</span>
|
|
5613
|
+
<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"custom_validators"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">validator</span><span class="o">.</span><span class="n">model</span> <span class="k">for</span> <span class="n">validator</span> <span class="ow">in</span> <span class="n">validators</span><span class="p">))</span>
|
|
5614
|
+
<a id="__codelineno-0-130" name="__codelineno-0-130"></a>
|
|
5615
|
+
<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="c1"># Register datasource contents (if defined)</span>
|
|
5616
|
+
<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">datasource_contents</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">datasource_contents</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5617
|
+
<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">if</span> <span class="n">datasource_contents</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5618
|
+
<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">register_datasource_contents</span><span class="p">(</span><span class="n">datasource_contents</span><span class="p">)</span>
|
|
5619
|
+
<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"datasource_contents"</span><span class="p">]</span> <span class="o">=</span> <span class="n">datasource_contents</span>
|
|
5620
|
+
<a id="__codelineno-0-136" name="__codelineno-0-136"></a>
|
|
5621
|
+
<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="c1"># Register GraphQL types (if defined)</span>
|
|
5622
|
+
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="n">graphql_types</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">graphql_types</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5623
|
+
<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">if</span> <span class="n">graphql_types</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5624
|
+
<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="n">register_graphql_types</span><span class="p">(</span><span class="n">graphql_types</span><span class="p">)</span>
|
|
5625
|
+
<a id="__codelineno-0-141" name="__codelineno-0-141"></a>
|
|
5626
|
+
<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="c1"># Import jobs (if present)</span>
|
|
5627
|
+
<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="n">jobs</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">jobs</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5628
|
+
<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="k">if</span> <span class="n">jobs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5629
|
+
<a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="n">register_jobs</span><span class="p">(</span><span class="n">jobs</span><span class="p">)</span>
|
|
5630
|
+
<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"jobs"</span><span class="p">]</span> <span class="o">=</span> <span class="n">jobs</span>
|
|
5631
|
+
<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
|
|
5632
|
+
<a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="c1"># Import metrics (if present)</span>
|
|
5633
|
+
<a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="n">metrics</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">metrics</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5634
|
+
<a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="k">if</span> <span class="n">metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5635
|
+
<a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="n">register_metrics</span><span class="p">(</span><span class="n">metrics</span><span class="p">)</span>
|
|
5636
|
+
<a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"metrics"</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># Initialize as empty, to be filled by the signal handler</span>
|
|
5637
|
+
<a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="c1"># Inject the metrics to discover into the signal handler.</span>
|
|
5638
|
+
<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="n">signal_callback</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="n">discover_metrics</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="n">metrics</span><span class="p">)</span>
|
|
5639
|
+
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">nautobot_database_ready</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">signal_callback</span><span class="p">,</span> <span class="n">sender</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
|
|
5640
|
+
<a id="__codelineno-0-156" name="__codelineno-0-156"></a>
|
|
5641
|
+
<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="c1"># Register plugin navigation menu items (if defined)</span>
|
|
5642
|
+
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="n">menu_items</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">menu_items</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5643
|
+
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="k">if</span> <span class="n">menu_items</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5644
|
+
<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="n">register_plugin_menu_items</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">,</span> <span class="n">menu_items</span><span class="p">)</span>
|
|
5645
|
+
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"nav_menu"</span><span class="p">]</span> <span class="o">=</span> <span class="n">menu_items</span>
|
|
5646
|
+
<a id="__codelineno-0-162" name="__codelineno-0-162"></a>
|
|
5647
|
+
<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="n">homepage_layout</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">homepage_layout</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5648
|
+
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="k">if</span> <span class="n">homepage_layout</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5649
|
+
<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="n">register_homepage_panels</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">homepage_layout</span><span class="p">)</span>
|
|
5650
|
+
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"home_page"</span><span class="p">]</span> <span class="o">=</span> <span class="n">homepage_layout</span>
|
|
5651
|
+
<a id="__codelineno-0-167" name="__codelineno-0-167"></a>
|
|
5652
|
+
<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="c1"># Register template content (if defined)</span>
|
|
5653
|
+
<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="n">template_extensions</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template_extensions</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5654
|
+
<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="k">if</span> <span class="n">template_extensions</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5655
|
+
<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="n">register_template_extensions</span><span class="p">(</span><span class="n">template_extensions</span><span class="p">)</span>
|
|
5656
|
+
<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"template_extensions"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">extension</span><span class="o">.</span><span class="n">model</span> <span class="k">for</span> <span class="n">extension</span> <span class="ow">in</span> <span class="n">template_extensions</span><span class="p">))</span>
|
|
5657
|
+
<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
|
|
5658
|
+
<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="c1"># Register custom jinja filters</span>
|
|
5659
|
+
<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="k">try</span><span class="p">:</span>
|
|
5660
|
+
<a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="n">import_module</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">jinja_filters</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5661
|
+
<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"jinja_filters"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
|
5662
|
+
<a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="k">except</span> <span class="ne">ModuleNotFoundError</span><span class="p">:</span>
|
|
5663
|
+
<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">pass</span>
|
|
5664
|
+
<a id="__codelineno-0-180" name="__codelineno-0-180"></a>
|
|
5665
|
+
<a id="__codelineno-0-181" name="__codelineno-0-181"></a> <span class="c1"># Register secrets providers (if any)</span>
|
|
5666
|
+
<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="n">secrets_providers</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">secrets_providers</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5667
|
+
<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="k">if</span> <span class="n">secrets_providers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5668
|
+
<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="k">for</span> <span class="n">secrets_provider</span> <span class="ow">in</span> <span class="n">secrets_providers</span><span class="p">:</span>
|
|
5669
|
+
<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="n">register_secrets_provider</span><span class="p">(</span><span class="n">secrets_provider</span><span class="p">)</span>
|
|
5670
|
+
<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"secrets_providers"</span><span class="p">]</span> <span class="o">=</span> <span class="n">secrets_providers</span>
|
|
5671
|
+
<a id="__codelineno-0-187" name="__codelineno-0-187"></a>
|
|
5672
|
+
<a id="__codelineno-0-188" name="__codelineno-0-188"></a> <span class="c1"># Register custom filters (if any)</span>
|
|
5673
|
+
<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="n">filter_extensions</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">filter_extensions</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5674
|
+
<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="k">if</span> <span class="n">filter_extensions</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5675
|
+
<a id="__codelineno-0-191" name="__codelineno-0-191"></a> <span class="n">register_filter_extensions</span><span class="p">(</span><span class="n">filter_extensions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
5676
|
+
<a id="__codelineno-0-192" name="__codelineno-0-192"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"filter_extensions"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"filterset_fields"</span><span class="p">:</span> <span class="p">[],</span> <span class="s2">"filterform_fields"</span><span class="p">:</span> <span class="p">[]}</span>
|
|
5677
|
+
<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="k">for</span> <span class="n">filter_extension</span> <span class="ow">in</span> <span class="n">filter_extensions</span><span class="p">:</span>
|
|
5678
|
+
<a id="__codelineno-0-194" name="__codelineno-0-194"></a> <span class="k">for</span> <span class="n">filterset_field_name</span> <span class="ow">in</span> <span class="n">filter_extension</span><span class="o">.</span><span class="n">filterset_fields</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
5679
|
+
<a id="__codelineno-0-195" name="__codelineno-0-195"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"filter_extensions"</span><span class="p">][</span><span class="s2">"filterset_fields"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
5680
|
+
<a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">filter_extension</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2"> -> </span><span class="si">{</span><span class="n">filterset_field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
5681
|
+
<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="p">)</span>
|
|
5682
|
+
<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="k">for</span> <span class="n">filterform_field_name</span> <span class="ow">in</span> <span class="n">filter_extension</span><span class="o">.</span><span class="n">filterform_fields</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
5683
|
+
<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"filter_extensions"</span><span class="p">][</span><span class="s2">"filterform_fields"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
5684
|
+
<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">filter_extension</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2"> -> </span><span class="si">{</span><span class="n">filterform_field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
5685
|
+
<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="p">)</span>
|
|
5686
|
+
<a id="__codelineno-0-202" name="__codelineno-0-202"></a>
|
|
5687
|
+
<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="c1"># Register override view (if any)</span>
|
|
5688
|
+
<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="n">override_views</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">override_views</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5689
|
+
<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="k">if</span> <span class="n">override_views</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5690
|
+
<a id="__codelineno-0-206" name="__codelineno-0-206"></a> <span class="k">for</span> <span class="n">qualified_view_name</span><span class="p">,</span> <span class="n">view</span> <span class="ow">in</span> <span class="n">override_views</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
5691
|
+
<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"overridden_views"</span><span class="p">,</span> <span class="p">[])</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
5692
|
+
<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="p">(</span><span class="n">qualified_view_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">view</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">view</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5693
|
+
<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="p">)</span>
|
|
5694
|
+
<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="n">register_override_views</span><span class="p">(</span><span class="n">override_views</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
5695
|
+
<a id="__codelineno-0-211" name="__codelineno-0-211"></a>
|
|
5696
|
+
<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="nd">@classmethod</span>
|
|
5697
|
+
<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">user_config</span><span class="p">,</span> <span class="n">nautobot_version</span><span class="p">):</span>
|
|
5698
|
+
<a id="__codelineno-0-214" name="__codelineno-0-214"></a><span class="w"> </span><span class="sd">"""Validate the user_config for baseline correctness."""</span>
|
|
5699
|
+
<a id="__codelineno-0-215" name="__codelineno-0-215"></a>
|
|
5700
|
+
<a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="n">plugin_name</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__module__</span>
|
|
5701
|
+
<a id="__codelineno-0-217" name="__codelineno-0-217"></a>
|
|
5702
|
+
<a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="c1"># Enforce version constraints</span>
|
|
5703
|
+
<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">current_version</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">nautobot_version</span><span class="p">)</span>
|
|
5704
|
+
<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">min_version</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5705
|
+
<a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="n">min_version</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">min_version</span><span class="p">)</span>
|
|
5706
|
+
<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="k">if</span> <span class="n">current_version</span> <span class="o"><</span> <span class="n">min_version</span><span class="p">:</span>
|
|
5707
|
+
<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span>
|
|
5708
|
+
<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> requires Nautobot minimum version </span><span class="si">{</span><span class="bp">cls</span><span class="o">.</span><span class="n">min_version</span><span class="si">}</span><span class="s2">"</span>
|
|
5709
|
+
<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="p">)</span>
|
|
5710
|
+
<a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">max_version</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5711
|
+
<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="n">max_version</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">max_version</span><span class="p">)</span>
|
|
5712
|
+
<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="k">if</span> <span class="n">current_version</span> <span class="o">></span> <span class="n">max_version</span><span class="p">:</span>
|
|
5713
|
+
<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span>
|
|
5714
|
+
<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> requires Nautobot maximum version </span><span class="si">{</span><span class="bp">cls</span><span class="o">.</span><span class="n">max_version</span><span class="si">}</span><span class="s2">"</span>
|
|
5715
|
+
<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="p">)</span>
|
|
5716
|
+
<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
|
|
5717
|
+
<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="c1"># Mapping of {setting_name: setting_type} used to validate user configs</span>
|
|
5718
|
+
<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="c1"># TODO(jathan): This is fine for now, but as we expand the functionality</span>
|
|
5719
|
+
<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="c1"># of plugins, we'll need to consider something like pydantic or attrs.</span>
|
|
5720
|
+
<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="n">setting_validations</span> <span class="o">=</span> <span class="p">{</span>
|
|
5721
|
+
<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="s2">"default_settings"</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
|
|
5722
|
+
<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="s2">"installed_apps"</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
|
5723
|
+
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="s2">"middleware"</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
|
5724
|
+
<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="s2">"required_settings"</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
|
5725
|
+
<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="p">}</span>
|
|
5726
|
+
<a id="__codelineno-0-242" name="__codelineno-0-242"></a>
|
|
5727
|
+
<a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="c1"># Validate user settings</span>
|
|
5728
|
+
<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="k">for</span> <span class="n">setting_name</span><span class="p">,</span> <span class="n">setting_type</span> <span class="ow">in</span> <span class="n">setting_validations</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
5729
|
+
<a id="__codelineno-0-245" name="__codelineno-0-245"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">setting_name</span><span class="p">),</span> <span class="n">setting_type</span><span class="p">):</span>
|
|
5730
|
+
<a id="__codelineno-0-246" name="__codelineno-0-246"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">setting_name</span><span class="si">}</span><span class="s2"> must be a </span><span class="si">{</span><span class="n">setting_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5731
|
+
<a id="__codelineno-0-247" name="__codelineno-0-247"></a>
|
|
5732
|
+
<a id="__codelineno-0-248" name="__codelineno-0-248"></a> <span class="c1"># Validate the required_settings</span>
|
|
5733
|
+
<a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="k">for</span> <span class="n">setting</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">required_settings</span><span class="p">:</span>
|
|
5734
|
+
<a id="__codelineno-0-250" name="__codelineno-0-250"></a> <span class="k">if</span> <span class="n">setting</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">user_config</span><span class="p">:</span>
|
|
5735
|
+
<a id="__codelineno-0-251" name="__codelineno-0-251"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span>
|
|
5736
|
+
<a id="__codelineno-0-252" name="__codelineno-0-252"></a> <span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> requires '</span><span class="si">{</span><span class="n">setting</span><span class="si">}</span><span class="s2">' to be present in "</span>
|
|
5737
|
+
<a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="sa">f</span><span class="s2">"the PLUGINS_CONFIG['</span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">'] section of your settings."</span>
|
|
5738
|
+
<a id="__codelineno-0-254" name="__codelineno-0-254"></a> <span class="p">)</span>
|
|
5739
|
+
<a id="__codelineno-0-255" name="__codelineno-0-255"></a>
|
|
5740
|
+
<a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="c1"># Apply default configuration values</span>
|
|
5741
|
+
<a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="k">for</span> <span class="n">setting</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">default_settings</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
5742
|
+
<a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="c1"># user_config and constance_config take precedence</span>
|
|
5743
|
+
<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="c1"># this is to support legacy apps that supply default_settings and constance_config</span>
|
|
5744
|
+
<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="k">if</span> <span class="n">setting</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">user_config</span> <span class="ow">and</span> <span class="n">setting</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">constance_config</span><span class="p">:</span>
|
|
5745
|
+
<a id="__codelineno-0-261" name="__codelineno-0-261"></a> <span class="n">user_config</span><span class="p">[</span><span class="n">setting</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
|
5788
5746
|
</code></pre></div></td></tr></table></div>
|
|
5789
5747
|
</details>
|
|
5790
5748
|
|
|
@@ -5817,7 +5775,8 @@ Relationships, etc.</p>
|
|
|
5817
5775
|
|
|
5818
5776
|
<details class="quote">
|
|
5819
5777
|
<summary>Source code in <code>nautobot/extras/plugins/__init__.py</code></summary>
|
|
5820
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
5778
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
|
|
5779
|
+
<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
|
|
5821
5780
|
<span class="normal"><a href="#__codelineno-0-100">100</a></span>
|
|
5822
5781
|
<span class="normal"><a href="#__codelineno-0-101">101</a></span>
|
|
5823
5782
|
<span class="normal"><a href="#__codelineno-0-102">102</a></span>
|
|
@@ -5928,120 +5887,119 @@ Relationships, etc.</p>
|
|
|
5928
5887
|
<span class="normal"><a href="#__codelineno-0-207">207</a></span>
|
|
5929
5888
|
<span class="normal"><a href="#__codelineno-0-208">208</a></span>
|
|
5930
5889
|
<span class="normal"><a href="#__codelineno-0-209">209</a></span>
|
|
5931
|
-
<span class="normal"><a href="#__codelineno-0-210">210</a></span>
|
|
5932
|
-
<
|
|
5933
|
-
<a id="__codelineno-0-100" name="__codelineno-0-100"></a
|
|
5934
|
-
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
|
|
5935
|
-
<a id="__codelineno-0-102" name="__codelineno-0-102"></a>
|
|
5936
|
-
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="
|
|
5937
|
-
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">
|
|
5938
|
-
<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
|
|
5939
|
-
<a id="__codelineno-0-106" name="__codelineno-0-106"></a>
|
|
5940
|
-
<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
|
|
5941
|
-
<a id="__codelineno-0-108" name="__codelineno-0-108"></a>
|
|
5942
|
-
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="
|
|
5943
|
-
<a id="__codelineno-0-110" name="__codelineno-0-110"></a>
|
|
5944
|
-
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="p">),</span>
|
|
5945
|
-
<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="s2">"
|
|
5946
|
-
<a id="__codelineno-0-113" name="__codelineno-0-113"></a>
|
|
5947
|
-
<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="
|
|
5948
|
-
<a id="__codelineno-0-115" name="__codelineno-0-115"></a>
|
|
5949
|
-
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">
|
|
5950
|
-
<a id="__codelineno-0-117" name="__codelineno-0-117"></a>
|
|
5951
|
-
<a id="__codelineno-0-118" name="__codelineno-0-118"></a>
|
|
5952
|
-
<a id="__codelineno-0-119" name="__codelineno-0-119"></a>
|
|
5953
|
-
<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="
|
|
5954
|
-
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="
|
|
5955
|
-
<a id="__codelineno-0-122" name="__codelineno-0-122"></a>
|
|
5956
|
-
<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="
|
|
5957
|
-
<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
|
|
5958
|
-
<a id="__codelineno-0-125" name="__codelineno-0-125"></a>
|
|
5959
|
-
<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="
|
|
5960
|
-
<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="
|
|
5961
|
-
<a id="__codelineno-0-128" name="__codelineno-0-128"></a>
|
|
5962
|
-
<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">
|
|
5963
|
-
<a id="__codelineno-0-130" name="__codelineno-0-130"></a>
|
|
5964
|
-
<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
|
|
5965
|
-
<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="
|
|
5966
|
-
<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="
|
|
5967
|
-
<a id="__codelineno-0-134" name="__codelineno-0-134"></a>
|
|
5968
|
-
<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="n">
|
|
5969
|
-
<a id="__codelineno-0-136" name="__codelineno-0-136"></a>
|
|
5970
|
-
<a id="__codelineno-0-137" name="__codelineno-0-137"></a>
|
|
5971
|
-
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="
|
|
5972
|
-
<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="
|
|
5973
|
-
<a id="__codelineno-0-140" name="__codelineno-0-140"></a>
|
|
5974
|
-
<a id="__codelineno-0-141" name="__codelineno-0-141"></a>
|
|
5975
|
-
<a id="__codelineno-0-142" name="__codelineno-0-142"></a>
|
|
5976
|
-
<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="
|
|
5977
|
-
<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="
|
|
5978
|
-
<a id="__codelineno-0-145" name="__codelineno-0-145"></a>
|
|
5979
|
-
<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="n">
|
|
5980
|
-
<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
|
|
5981
|
-
<a id="__codelineno-0-148" name="__codelineno-0-148"></a>
|
|
5982
|
-
<a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="
|
|
5983
|
-
<a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="
|
|
5984
|
-
<a id="__codelineno-0-151" name="__codelineno-0-151"></a>
|
|
5985
|
-
<a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="n">
|
|
5986
|
-
<a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="
|
|
5987
|
-
<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="
|
|
5988
|
-
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">
|
|
5989
|
-
<a id="__codelineno-0-156" name="__codelineno-0-156"></a>
|
|
5990
|
-
<a id="__codelineno-0-157" name="__codelineno-0-157"></a>
|
|
5991
|
-
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="
|
|
5992
|
-
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="
|
|
5993
|
-
<a id="__codelineno-0-160" name="__codelineno-0-160"></a>
|
|
5994
|
-
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="
|
|
5995
|
-
<a id="__codelineno-0-162" name="__codelineno-0-162"></a>
|
|
5996
|
-
<a id="__codelineno-0-163" name="__codelineno-0-163"></a>
|
|
5997
|
-
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="
|
|
5998
|
-
<a id="__codelineno-0-165" name="__codelineno-0-165"></a>
|
|
5999
|
-
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="
|
|
6000
|
-
<a id="__codelineno-0-167" name="__codelineno-0-167"></a>
|
|
6001
|
-
<a id="__codelineno-0-168" name="__codelineno-0-168"></a>
|
|
6002
|
-
<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="
|
|
6003
|
-
<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="
|
|
6004
|
-
<a id="__codelineno-0-171" name="__codelineno-0-171"></a>
|
|
6005
|
-
<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="n">
|
|
6006
|
-
<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
|
|
6007
|
-
<a id="__codelineno-0-174" name="__codelineno-0-174"></a>
|
|
6008
|
-
<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="
|
|
6009
|
-
<a id="__codelineno-0-176" name="__codelineno-0-176"></a>
|
|
6010
|
-
<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="
|
|
6011
|
-
<a id="__codelineno-0-178" name="__codelineno-0-178"></a>
|
|
6012
|
-
<a id="__codelineno-0-179" name="__codelineno-0-179"></a>
|
|
6013
|
-
<a id="__codelineno-0-180" name="__codelineno-0-180"></a>
|
|
6014
|
-
<a id="__codelineno-0-181" name="__codelineno-0-181"></a>
|
|
6015
|
-
<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="
|
|
6016
|
-
<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="
|
|
6017
|
-
<a id="__codelineno-0-184" name="__codelineno-0-184"></a>
|
|
6018
|
-
<a id="__codelineno-0-185" name="__codelineno-0-185"></a>
|
|
6019
|
-
<a id="__codelineno-0-186" name="__codelineno-0-186"></a>
|
|
6020
|
-
<a id="__codelineno-0-187" name="__codelineno-0-187"></a>
|
|
6021
|
-
<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
|
|
6022
|
-
<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="
|
|
6023
|
-
<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="
|
|
6024
|
-
<a id="__codelineno-0-191" name="__codelineno-0-191"></a>
|
|
6025
|
-
<a id="__codelineno-0-192" name="__codelineno-0-192"></a> <span class="n">
|
|
6026
|
-
<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="
|
|
6027
|
-
<a id="__codelineno-0-194" name="__codelineno-0-194"></a>
|
|
6028
|
-
<a id="__codelineno-0-195" name="__codelineno-0-195"></a>
|
|
6029
|
-
<a id="__codelineno-0-196" name="__codelineno-0-196"></a>
|
|
6030
|
-
<a id="__codelineno-0-197" name="__codelineno-0-197"></a>
|
|
6031
|
-
<a id="__codelineno-0-198" name="__codelineno-0-198"></a>
|
|
6032
|
-
<a id="__codelineno-0-199" name="__codelineno-0-199"></a>
|
|
6033
|
-
<a id="__codelineno-0-200" name="__codelineno-0-200"></a>
|
|
6034
|
-
<a id="__codelineno-0-201" name="__codelineno-0-201"></a>
|
|
6035
|
-
<a id="__codelineno-0-202" name="__codelineno-0-202"></a>
|
|
6036
|
-
<a id="__codelineno-0-203" name="__codelineno-0-203"></a>
|
|
6037
|
-
<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="
|
|
6038
|
-
<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="
|
|
6039
|
-
<a id="__codelineno-0-206" name="__codelineno-0-206"></a>
|
|
6040
|
-
<a id="__codelineno-0-207" name="__codelineno-0-207"></a>
|
|
6041
|
-
<a id="__codelineno-0-208" name="__codelineno-0-208"></a>
|
|
6042
|
-
<a id="__codelineno-0-209" name="__codelineno-0-209"></a>
|
|
6043
|
-
<a id="__codelineno-0-210" name="__codelineno-0-210"></a>
|
|
6044
|
-
<a id="__codelineno-0-211" name="__codelineno-0-211"></a> <span class="n">register_override_views</span><span class="p">(</span><span class="n">override_views</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
5890
|
+
<span class="normal"><a href="#__codelineno-0-210">210</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="k">def</span> <span class="nf">ready</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
5891
|
+
<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="w"> </span><span class="sd">"""Callback after plugin app is loaded."""</span>
|
|
5892
|
+
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="c1"># We don't call super().ready here because we don't need or use the on-ready behavior of a core Nautobot app</span>
|
|
5893
|
+
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
|
|
5894
|
+
<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="c1"># Introspect URL patterns and models to make available to the installed-plugins detail UI view.</span>
|
|
5895
|
+
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">urlpatterns</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.urls.urlpatterns"</span><span class="p">)</span>
|
|
5896
|
+
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">api_urlpatterns</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.api.urls.urlpatterns"</span><span class="p">)</span>
|
|
5897
|
+
<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
|
|
5898
|
+
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span> <span class="o">=</span> <span class="p">{</span>
|
|
5899
|
+
<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="s2">"api_urlpatterns"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span>
|
|
5900
|
+
<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="p">(</span><span class="n">urlp</span> <span class="k">for</span> <span class="n">urlp</span> <span class="ow">in</span> <span class="p">(</span><span class="n">api_urlpatterns</span> <span class="ow">or</span> <span class="p">[])</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">urlp</span><span class="p">,</span> <span class="n">URLPattern</span><span class="p">)),</span>
|
|
5901
|
+
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">urlp</span><span class="p">:</span> <span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">pattern</span><span class="p">)),</span>
|
|
5902
|
+
<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="p">),</span>
|
|
5903
|
+
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="s2">"models"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">verbose_name</span> <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_models</span><span class="p">()),</span>
|
|
5904
|
+
<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="s2">"urlpatterns"</span><span class="p">:</span> <span class="nb">sorted</span><span class="p">(</span>
|
|
5905
|
+
<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="p">(</span><span class="n">urlp</span> <span class="k">for</span> <span class="n">urlp</span> <span class="ow">in</span> <span class="p">(</span><span class="n">urlpatterns</span> <span class="ow">or</span> <span class="p">[])</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">urlp</span><span class="p">,</span> <span class="n">URLPattern</span><span class="p">)),</span>
|
|
5906
|
+
<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">urlp</span><span class="p">:</span> <span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">urlp</span><span class="o">.</span><span class="n">pattern</span><span class="p">)),</span>
|
|
5907
|
+
<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="p">),</span>
|
|
5908
|
+
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="s2">"constance_config"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">constance_config</span><span class="p">,</span>
|
|
5909
|
+
<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="p">}</span>
|
|
5910
|
+
<a id="__codelineno-0-118" name="__codelineno-0-118"></a>
|
|
5911
|
+
<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="c1"># Register banner function (if defined)</span>
|
|
5912
|
+
<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">banner_function</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">banner_function</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5913
|
+
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">if</span> <span class="n">banner_function</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5914
|
+
<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">register_banner_function</span><span class="p">(</span><span class="n">banner_function</span><span class="p">)</span>
|
|
5915
|
+
<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"banner"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
|
5916
|
+
<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
|
|
5917
|
+
<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="c1"># Register model validators (if defined)</span>
|
|
5918
|
+
<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">validators</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">custom_validators</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5919
|
+
<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="k">if</span> <span class="n">validators</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5920
|
+
<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">register_custom_validators</span><span class="p">(</span><span class="n">validators</span><span class="p">)</span>
|
|
5921
|
+
<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"custom_validators"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">validator</span><span class="o">.</span><span class="n">model</span> <span class="k">for</span> <span class="n">validator</span> <span class="ow">in</span> <span class="n">validators</span><span class="p">))</span>
|
|
5922
|
+
<a id="__codelineno-0-130" name="__codelineno-0-130"></a>
|
|
5923
|
+
<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="c1"># Register datasource contents (if defined)</span>
|
|
5924
|
+
<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">datasource_contents</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">datasource_contents</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5925
|
+
<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">if</span> <span class="n">datasource_contents</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5926
|
+
<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">register_datasource_contents</span><span class="p">(</span><span class="n">datasource_contents</span><span class="p">)</span>
|
|
5927
|
+
<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"datasource_contents"</span><span class="p">]</span> <span class="o">=</span> <span class="n">datasource_contents</span>
|
|
5928
|
+
<a id="__codelineno-0-136" name="__codelineno-0-136"></a>
|
|
5929
|
+
<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="c1"># Register GraphQL types (if defined)</span>
|
|
5930
|
+
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="n">graphql_types</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">graphql_types</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5931
|
+
<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">if</span> <span class="n">graphql_types</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5932
|
+
<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="n">register_graphql_types</span><span class="p">(</span><span class="n">graphql_types</span><span class="p">)</span>
|
|
5933
|
+
<a id="__codelineno-0-141" name="__codelineno-0-141"></a>
|
|
5934
|
+
<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="c1"># Import jobs (if present)</span>
|
|
5935
|
+
<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="n">jobs</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">jobs</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5936
|
+
<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="k">if</span> <span class="n">jobs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5937
|
+
<a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="n">register_jobs</span><span class="p">(</span><span class="n">jobs</span><span class="p">)</span>
|
|
5938
|
+
<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"jobs"</span><span class="p">]</span> <span class="o">=</span> <span class="n">jobs</span>
|
|
5939
|
+
<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
|
|
5940
|
+
<a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="c1"># Import metrics (if present)</span>
|
|
5941
|
+
<a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="n">metrics</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">metrics</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5942
|
+
<a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="k">if</span> <span class="n">metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5943
|
+
<a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="n">register_metrics</span><span class="p">(</span><span class="n">metrics</span><span class="p">)</span>
|
|
5944
|
+
<a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"metrics"</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># Initialize as empty, to be filled by the signal handler</span>
|
|
5945
|
+
<a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="c1"># Inject the metrics to discover into the signal handler.</span>
|
|
5946
|
+
<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="n">signal_callback</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="n">discover_metrics</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="n">metrics</span><span class="p">)</span>
|
|
5947
|
+
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">nautobot_database_ready</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">signal_callback</span><span class="p">,</span> <span class="n">sender</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
|
|
5948
|
+
<a id="__codelineno-0-156" name="__codelineno-0-156"></a>
|
|
5949
|
+
<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="c1"># Register plugin navigation menu items (if defined)</span>
|
|
5950
|
+
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="n">menu_items</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">menu_items</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5951
|
+
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="k">if</span> <span class="n">menu_items</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5952
|
+
<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="n">register_plugin_menu_items</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">,</span> <span class="n">menu_items</span><span class="p">)</span>
|
|
5953
|
+
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"nav_menu"</span><span class="p">]</span> <span class="o">=</span> <span class="n">menu_items</span>
|
|
5954
|
+
<a id="__codelineno-0-162" name="__codelineno-0-162"></a>
|
|
5955
|
+
<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="n">homepage_layout</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">homepage_layout</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5956
|
+
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="k">if</span> <span class="n">homepage_layout</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5957
|
+
<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="n">register_homepage_panels</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">homepage_layout</span><span class="p">)</span>
|
|
5958
|
+
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"home_page"</span><span class="p">]</span> <span class="o">=</span> <span class="n">homepage_layout</span>
|
|
5959
|
+
<a id="__codelineno-0-167" name="__codelineno-0-167"></a>
|
|
5960
|
+
<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="c1"># Register template content (if defined)</span>
|
|
5961
|
+
<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="n">template_extensions</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template_extensions</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5962
|
+
<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="k">if</span> <span class="n">template_extensions</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5963
|
+
<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="n">register_template_extensions</span><span class="p">(</span><span class="n">template_extensions</span><span class="p">)</span>
|
|
5964
|
+
<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"template_extensions"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">extension</span><span class="o">.</span><span class="n">model</span> <span class="k">for</span> <span class="n">extension</span> <span class="ow">in</span> <span class="n">template_extensions</span><span class="p">))</span>
|
|
5965
|
+
<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
|
|
5966
|
+
<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="c1"># Register custom jinja filters</span>
|
|
5967
|
+
<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="k">try</span><span class="p">:</span>
|
|
5968
|
+
<a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="n">import_module</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">jinja_filters</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5969
|
+
<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"jinja_filters"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
|
5970
|
+
<a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="k">except</span> <span class="ne">ModuleNotFoundError</span><span class="p">:</span>
|
|
5971
|
+
<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">pass</span>
|
|
5972
|
+
<a id="__codelineno-0-180" name="__codelineno-0-180"></a>
|
|
5973
|
+
<a id="__codelineno-0-181" name="__codelineno-0-181"></a> <span class="c1"># Register secrets providers (if any)</span>
|
|
5974
|
+
<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="n">secrets_providers</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">secrets_providers</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5975
|
+
<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="k">if</span> <span class="n">secrets_providers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5976
|
+
<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="k">for</span> <span class="n">secrets_provider</span> <span class="ow">in</span> <span class="n">secrets_providers</span><span class="p">:</span>
|
|
5977
|
+
<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="n">register_secrets_provider</span><span class="p">(</span><span class="n">secrets_provider</span><span class="p">)</span>
|
|
5978
|
+
<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"secrets_providers"</span><span class="p">]</span> <span class="o">=</span> <span class="n">secrets_providers</span>
|
|
5979
|
+
<a id="__codelineno-0-187" name="__codelineno-0-187"></a>
|
|
5980
|
+
<a id="__codelineno-0-188" name="__codelineno-0-188"></a> <span class="c1"># Register custom filters (if any)</span>
|
|
5981
|
+
<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="n">filter_extensions</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">filter_extensions</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5982
|
+
<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="k">if</span> <span class="n">filter_extensions</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5983
|
+
<a id="__codelineno-0-191" name="__codelineno-0-191"></a> <span class="n">register_filter_extensions</span><span class="p">(</span><span class="n">filter_extensions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
5984
|
+
<a id="__codelineno-0-192" name="__codelineno-0-192"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"filter_extensions"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"filterset_fields"</span><span class="p">:</span> <span class="p">[],</span> <span class="s2">"filterform_fields"</span><span class="p">:</span> <span class="p">[]}</span>
|
|
5985
|
+
<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="k">for</span> <span class="n">filter_extension</span> <span class="ow">in</span> <span class="n">filter_extensions</span><span class="p">:</span>
|
|
5986
|
+
<a id="__codelineno-0-194" name="__codelineno-0-194"></a> <span class="k">for</span> <span class="n">filterset_field_name</span> <span class="ow">in</span> <span class="n">filter_extension</span><span class="o">.</span><span class="n">filterset_fields</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
5987
|
+
<a id="__codelineno-0-195" name="__codelineno-0-195"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"filter_extensions"</span><span class="p">][</span><span class="s2">"filterset_fields"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
5988
|
+
<a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">filter_extension</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2"> -> </span><span class="si">{</span><span class="n">filterset_field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
5989
|
+
<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="p">)</span>
|
|
5990
|
+
<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="k">for</span> <span class="n">filterform_field_name</span> <span class="ow">in</span> <span class="n">filter_extension</span><span class="o">.</span><span class="n">filterform_fields</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
5991
|
+
<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="p">[</span><span class="s2">"filter_extensions"</span><span class="p">][</span><span class="s2">"filterform_fields"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
5992
|
+
<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">filter_extension</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2"> -> </span><span class="si">{</span><span class="n">filterform_field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
5993
|
+
<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="p">)</span>
|
|
5994
|
+
<a id="__codelineno-0-202" name="__codelineno-0-202"></a>
|
|
5995
|
+
<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="c1"># Register override view (if any)</span>
|
|
5996
|
+
<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="n">override_views</span> <span class="o">=</span> <span class="n">import_object</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">override_views</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
5997
|
+
<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="k">if</span> <span class="n">override_views</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
5998
|
+
<a id="__codelineno-0-206" name="__codelineno-0-206"></a> <span class="k">for</span> <span class="n">qualified_view_name</span><span class="p">,</span> <span class="n">view</span> <span class="ow">in</span> <span class="n">override_views</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
5999
|
+
<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="bp">self</span><span class="o">.</span><span class="n">features</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"overridden_views"</span><span class="p">,</span> <span class="p">[])</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
6000
|
+
<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="p">(</span><span class="n">qualified_view_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">view</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">view</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
6001
|
+
<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="p">)</span>
|
|
6002
|
+
<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="n">register_override_views</span><span class="p">(</span><span class="n">override_views</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
6045
6003
|
</code></pre></div></td></tr></table></div>
|
|
6046
6004
|
</details>
|
|
6047
6005
|
</div>
|
|
@@ -6069,7 +6027,8 @@ Relationships, etc.</p>
|
|
|
6069
6027
|
|
|
6070
6028
|
<details class="quote">
|
|
6071
6029
|
<summary>Source code in <code>nautobot/extras/plugins/__init__.py</code></summary>
|
|
6072
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
6030
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-212">212</a></span>
|
|
6031
|
+
<span class="normal"><a href="#__codelineno-0-213">213</a></span>
|
|
6073
6032
|
<span class="normal"><a href="#__codelineno-0-214">214</a></span>
|
|
6074
6033
|
<span class="normal"><a href="#__codelineno-0-215">215</a></span>
|
|
6075
6034
|
<span class="normal"><a href="#__codelineno-0-216">216</a></span>
|
|
@@ -6117,57 +6076,56 @@ Relationships, etc.</p>
|
|
|
6117
6076
|
<span class="normal"><a href="#__codelineno-0-258">258</a></span>
|
|
6118
6077
|
<span class="normal"><a href="#__codelineno-0-259">259</a></span>
|
|
6119
6078
|
<span class="normal"><a href="#__codelineno-0-260">260</a></span>
|
|
6120
|
-
<span class="normal"><a href="#__codelineno-0-261">261</a></span>
|
|
6121
|
-
<
|
|
6122
|
-
<a id="__codelineno-0-214" name="__codelineno-0-214"></a><span class="
|
|
6123
|
-
<a id="__codelineno-0-215" name="__codelineno-0-215"></a
|
|
6124
|
-
<a id="__codelineno-0-216" name="__codelineno-0-216"></a>
|
|
6125
|
-
<a id="__codelineno-0-217" name="__codelineno-0-217"></a>
|
|
6126
|
-
<a id="__codelineno-0-218" name="__codelineno-0-218"></a>
|
|
6127
|
-
<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="
|
|
6128
|
-
<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="
|
|
6129
|
-
<a id="__codelineno-0-221" name="__codelineno-0-221"></a>
|
|
6130
|
-
<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="
|
|
6131
|
-
<a id="__codelineno-0-223" name="__codelineno-0-223"></a>
|
|
6132
|
-
<a id="__codelineno-0-224" name="__codelineno-0-224"></a>
|
|
6133
|
-
<a id="__codelineno-0-225" name="__codelineno-0-225"></a>
|
|
6134
|
-
<a id="__codelineno-0-226" name="__codelineno-0-226"></a>
|
|
6135
|
-
<a id="__codelineno-0-227" name="__codelineno-0-227"></a>
|
|
6136
|
-
<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="
|
|
6137
|
-
<a id="__codelineno-0-229" name="__codelineno-0-229"></a>
|
|
6138
|
-
<a id="__codelineno-0-230" name="__codelineno-0-230"></a>
|
|
6139
|
-
<a id="__codelineno-0-231" name="__codelineno-0-231"></a>
|
|
6140
|
-
<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
|
|
6141
|
-
<a id="__codelineno-0-233" name="__codelineno-0-233"></a>
|
|
6142
|
-
<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="c1">#
|
|
6143
|
-
<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="c1">#
|
|
6144
|
-
<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="
|
|
6145
|
-
<a id="__codelineno-0-237" name="__codelineno-0-237"></a>
|
|
6146
|
-
<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="s2">"
|
|
6147
|
-
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="s2">"
|
|
6148
|
-
<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="s2">"
|
|
6149
|
-
<a id="__codelineno-0-241" name="__codelineno-0-241"></a>
|
|
6150
|
-
<a id="__codelineno-0-242" name="__codelineno-0-242"></a>
|
|
6151
|
-
<a id="__codelineno-0-243" name="__codelineno-0-243"></a>
|
|
6152
|
-
<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="
|
|
6153
|
-
<a id="__codelineno-0-245" name="__codelineno-0-245"></a>
|
|
6154
|
-
<a id="__codelineno-0-246" name="__codelineno-0-246"></a>
|
|
6155
|
-
<a id="__codelineno-0-247" name="__codelineno-0-247"></a>
|
|
6156
|
-
<a id="__codelineno-0-248" name="__codelineno-0-248"></a>
|
|
6157
|
-
<a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="
|
|
6158
|
-
<a id="__codelineno-0-250" name="__codelineno-0-250"></a>
|
|
6159
|
-
<a id="__codelineno-0-251" name="__codelineno-0-251"></a>
|
|
6160
|
-
<a id="__codelineno-0-252" name="__codelineno-0-252"></a>
|
|
6161
|
-
<a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="sa">f</span><span class="s2">"
|
|
6162
|
-
<a id="__codelineno-0-254" name="__codelineno-0-254"></a>
|
|
6163
|
-
<a id="__codelineno-0-255" name="__codelineno-0-255"></a>
|
|
6164
|
-
<a id="__codelineno-0-256" name="__codelineno-0-256"></a>
|
|
6165
|
-
<a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="
|
|
6166
|
-
<a id="__codelineno-0-258" name="__codelineno-0-258"></a>
|
|
6167
|
-
<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="c1">#
|
|
6168
|
-
<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="
|
|
6169
|
-
<a id="__codelineno-0-261" name="__codelineno-0-261"></a>
|
|
6170
|
-
<a id="__codelineno-0-262" name="__codelineno-0-262"></a> <span class="n">user_config</span><span class="p">[</span><span class="n">setting</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
|
6079
|
+
<span class="normal"><a href="#__codelineno-0-261">261</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-212" name="__codelineno-0-212"></a><span class="nd">@classmethod</span>
|
|
6080
|
+
<a id="__codelineno-0-213" name="__codelineno-0-213"></a><span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">user_config</span><span class="p">,</span> <span class="n">nautobot_version</span><span class="p">):</span>
|
|
6081
|
+
<a id="__codelineno-0-214" name="__codelineno-0-214"></a><span class="w"> </span><span class="sd">"""Validate the user_config for baseline correctness."""</span>
|
|
6082
|
+
<a id="__codelineno-0-215" name="__codelineno-0-215"></a>
|
|
6083
|
+
<a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="n">plugin_name</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__module__</span>
|
|
6084
|
+
<a id="__codelineno-0-217" name="__codelineno-0-217"></a>
|
|
6085
|
+
<a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="c1"># Enforce version constraints</span>
|
|
6086
|
+
<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">current_version</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">nautobot_version</span><span class="p">)</span>
|
|
6087
|
+
<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">min_version</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
6088
|
+
<a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="n">min_version</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">min_version</span><span class="p">)</span>
|
|
6089
|
+
<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="k">if</span> <span class="n">current_version</span> <span class="o"><</span> <span class="n">min_version</span><span class="p">:</span>
|
|
6090
|
+
<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span>
|
|
6091
|
+
<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> requires Nautobot minimum version </span><span class="si">{</span><span class="bp">cls</span><span class="o">.</span><span class="n">min_version</span><span class="si">}</span><span class="s2">"</span>
|
|
6092
|
+
<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="p">)</span>
|
|
6093
|
+
<a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">max_version</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
6094
|
+
<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="n">max_version</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">max_version</span><span class="p">)</span>
|
|
6095
|
+
<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="k">if</span> <span class="n">current_version</span> <span class="o">></span> <span class="n">max_version</span><span class="p">:</span>
|
|
6096
|
+
<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span>
|
|
6097
|
+
<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> requires Nautobot maximum version </span><span class="si">{</span><span class="bp">cls</span><span class="o">.</span><span class="n">max_version</span><span class="si">}</span><span class="s2">"</span>
|
|
6098
|
+
<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="p">)</span>
|
|
6099
|
+
<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
|
|
6100
|
+
<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="c1"># Mapping of {setting_name: setting_type} used to validate user configs</span>
|
|
6101
|
+
<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="c1"># TODO(jathan): This is fine for now, but as we expand the functionality</span>
|
|
6102
|
+
<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="c1"># of plugins, we'll need to consider something like pydantic or attrs.</span>
|
|
6103
|
+
<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="n">setting_validations</span> <span class="o">=</span> <span class="p">{</span>
|
|
6104
|
+
<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="s2">"default_settings"</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
|
|
6105
|
+
<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="s2">"installed_apps"</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
|
6106
|
+
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="s2">"middleware"</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
|
6107
|
+
<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="s2">"required_settings"</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
|
6108
|
+
<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="p">}</span>
|
|
6109
|
+
<a id="__codelineno-0-242" name="__codelineno-0-242"></a>
|
|
6110
|
+
<a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="c1"># Validate user settings</span>
|
|
6111
|
+
<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="k">for</span> <span class="n">setting_name</span><span class="p">,</span> <span class="n">setting_type</span> <span class="ow">in</span> <span class="n">setting_validations</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
6112
|
+
<a id="__codelineno-0-245" name="__codelineno-0-245"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">setting_name</span><span class="p">),</span> <span class="n">setting_type</span><span class="p">):</span>
|
|
6113
|
+
<a id="__codelineno-0-246" name="__codelineno-0-246"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">setting_name</span><span class="si">}</span><span class="s2"> must be a </span><span class="si">{</span><span class="n">setting_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
6114
|
+
<a id="__codelineno-0-247" name="__codelineno-0-247"></a>
|
|
6115
|
+
<a id="__codelineno-0-248" name="__codelineno-0-248"></a> <span class="c1"># Validate the required_settings</span>
|
|
6116
|
+
<a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="k">for</span> <span class="n">setting</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">required_settings</span><span class="p">:</span>
|
|
6117
|
+
<a id="__codelineno-0-250" name="__codelineno-0-250"></a> <span class="k">if</span> <span class="n">setting</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">user_config</span><span class="p">:</span>
|
|
6118
|
+
<a id="__codelineno-0-251" name="__codelineno-0-251"></a> <span class="k">raise</span> <span class="n">PluginImproperlyConfigured</span><span class="p">(</span>
|
|
6119
|
+
<a id="__codelineno-0-252" name="__codelineno-0-252"></a> <span class="sa">f</span><span class="s2">"Plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> requires '</span><span class="si">{</span><span class="n">setting</span><span class="si">}</span><span class="s2">' to be present in "</span>
|
|
6120
|
+
<a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="sa">f</span><span class="s2">"the PLUGINS_CONFIG['</span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">'] section of your settings."</span>
|
|
6121
|
+
<a id="__codelineno-0-254" name="__codelineno-0-254"></a> <span class="p">)</span>
|
|
6122
|
+
<a id="__codelineno-0-255" name="__codelineno-0-255"></a>
|
|
6123
|
+
<a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="c1"># Apply default configuration values</span>
|
|
6124
|
+
<a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="k">for</span> <span class="n">setting</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">default_settings</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
6125
|
+
<a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="c1"># user_config and constance_config take precedence</span>
|
|
6126
|
+
<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="c1"># this is to support legacy apps that supply default_settings and constance_config</span>
|
|
6127
|
+
<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="k">if</span> <span class="n">setting</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">user_config</span> <span class="ow">and</span> <span class="n">setting</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">constance_config</span><span class="p">:</span>
|
|
6128
|
+
<a id="__codelineno-0-261" name="__codelineno-0-261"></a> <span class="n">user_config</span><span class="p">[</span><span class="n">setting</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
|
6171
6129
|
</code></pre></div></td></tr></table></div>
|
|
6172
6130
|
</details>
|
|
6173
6131
|
</div>
|