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
|
|
|
@@ -5374,20 +5346,6 @@
|
|
|
5374
5346
|
|
|
5375
5347
|
|
|
5376
5348
|
|
|
5377
|
-
<li class="md-nav__item">
|
|
5378
|
-
<a href="../../../development/core/react-ui.html" class="md-nav__link">
|
|
5379
|
-
React UI
|
|
5380
|
-
</a>
|
|
5381
|
-
</li>
|
|
5382
|
-
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
5349
|
<li class="md-nav__item">
|
|
5392
5350
|
<a href="../../../development/core/role-internals.html" class="md-nav__link">
|
|
5393
5351
|
Role Internals
|
|
@@ -7349,7 +7307,9 @@ a more powerful subclass and should be used instead of directly inheriting from
|
|
|
7349
7307
|
|
|
7350
7308
|
<details class="quote">
|
|
7351
7309
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7352
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7310
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-112">112</a></span>
|
|
7311
|
+
<span class="normal"><a href="#__codelineno-0-113">113</a></span>
|
|
7312
|
+
<span class="normal"><a href="#__codelineno-0-114">114</a></span>
|
|
7353
7313
|
<span class="normal"><a href="#__codelineno-0-115">115</a></span>
|
|
7354
7314
|
<span class="normal"><a href="#__codelineno-0-116">116</a></span>
|
|
7355
7315
|
<span class="normal"><a href="#__codelineno-0-117">117</a></span>
|
|
@@ -7358,20 +7318,18 @@ a more powerful subclass and should be used instead of directly inheriting from
|
|
|
7358
7318
|
<span class="normal"><a href="#__codelineno-0-120">120</a></span>
|
|
7359
7319
|
<span class="normal"><a href="#__codelineno-0-121">121</a></span>
|
|
7360
7320
|
<span class="normal"><a href="#__codelineno-0-122">122</a></span>
|
|
7361
|
-
<span class="normal"><a href="#__codelineno-0-123">123</a></span>
|
|
7362
|
-
<
|
|
7363
|
-
<
|
|
7364
|
-
<a id="__codelineno-0-115" name="__codelineno-0-115"></a
|
|
7365
|
-
<a id="__codelineno-0-116" name="__codelineno-0-116"></a><span class="sd">
|
|
7366
|
-
<a id="__codelineno-0-117" name="__codelineno-0-117"></a>
|
|
7367
|
-
<a id="__codelineno-0-118" name="__codelineno-0-118"></a
|
|
7368
|
-
<a id="__codelineno-0-119" name="__codelineno-0-119"></a
|
|
7321
|
+
<span class="normal"><a href="#__codelineno-0-123">123</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-112" name="__codelineno-0-112"></a><span class="k">class</span> <span class="nc">CSVChoiceField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">ChoiceField</span><span class="p">):</span>
|
|
7322
|
+
<a id="__codelineno-0-113" name="__codelineno-0-113"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7323
|
+
<a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> Invert the provided set of choices to take the human-friendly label as input, and return the database value.</span>
|
|
7324
|
+
<a id="__codelineno-0-115" name="__codelineno-0-115"></a>
|
|
7325
|
+
<a id="__codelineno-0-116" name="__codelineno-0-116"></a><span class="sd"> Despite the name, this is no longer used in CSV imports since 2.0, but *is* used in JSON/YAML import of DeviceTypes.</span>
|
|
7326
|
+
<a id="__codelineno-0-117" name="__codelineno-0-117"></a><span class="sd"> """</span>
|
|
7327
|
+
<a id="__codelineno-0-118" name="__codelineno-0-118"></a>
|
|
7328
|
+
<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="n">STATIC_CHOICES</span> <span class="o">=</span> <span class="kc">True</span>
|
|
7369
7329
|
<a id="__codelineno-0-120" name="__codelineno-0-120"></a>
|
|
7370
|
-
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="
|
|
7371
|
-
<a id="__codelineno-0-122" name="__codelineno-0-122"></a>
|
|
7372
|
-
<a id="__codelineno-0-123" name="__codelineno-0-123"></a>
|
|
7373
|
-
<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">choices</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
7374
|
-
<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="n">core_choices</span><span class="o">.</span><span class="n">unpack_grouped_choices</span><span class="p">(</span><span class="n">choices</span><span class="p">)</span>
|
|
7330
|
+
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="p">(),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
7331
|
+
<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">choices</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
7332
|
+
<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="n">core_choices</span><span class="o">.</span><span class="n">unpack_grouped_choices</span><span class="p">(</span><span class="n">choices</span><span class="p">)</span>
|
|
7375
7333
|
</code></pre></div></td></tr></table></div>
|
|
7376
7334
|
</details>
|
|
7377
7335
|
|
|
@@ -7416,7 +7374,9 @@ a more powerful subclass and should be used instead of directly inheriting from
|
|
|
7416
7374
|
|
|
7417
7375
|
<details class="quote">
|
|
7418
7376
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7419
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7377
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-165">165</a></span>
|
|
7378
|
+
<span class="normal"><a href="#__codelineno-0-166">166</a></span>
|
|
7379
|
+
<span class="normal"><a href="#__codelineno-0-167">167</a></span>
|
|
7420
7380
|
<span class="normal"><a href="#__codelineno-0-168">168</a></span>
|
|
7421
7381
|
<span class="normal"><a href="#__codelineno-0-169">169</a></span>
|
|
7422
7382
|
<span class="normal"><a href="#__codelineno-0-170">170</a></span>
|
|
@@ -7453,48 +7413,46 @@ a more powerful subclass and should be used instead of directly inheriting from
|
|
|
7453
7413
|
<span class="normal"><a href="#__codelineno-0-201">201</a></span>
|
|
7454
7414
|
<span class="normal"><a href="#__codelineno-0-202">202</a></span>
|
|
7455
7415
|
<span class="normal"><a href="#__codelineno-0-203">203</a></span>
|
|
7456
|
-
<span class="normal"><a href="#__codelineno-0-204">204</a></span>
|
|
7457
|
-
<
|
|
7458
|
-
<
|
|
7459
|
-
<a id="__codelineno-0-168" name="__codelineno-0-168"></a
|
|
7460
|
-
<a id="__codelineno-0-169" name="__codelineno-0-169"></a><span class="sd">
|
|
7461
|
-
<a id="__codelineno-0-170" name="__codelineno-0-170"></a>
|
|
7462
|
-
<a id="__codelineno-0-171" name="__codelineno-0-171"></a
|
|
7463
|
-
<a id="__codelineno-0-172" name="__codelineno-0-172"></a
|
|
7416
|
+
<span class="normal"><a href="#__codelineno-0-204">204</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-165" name="__codelineno-0-165"></a><span class="k">class</span> <span class="nc">CSVContentTypeField</span><span class="p">(</span><span class="n">CSVModelChoiceField</span><span class="p">):</span>
|
|
7417
|
+
<a id="__codelineno-0-166" name="__codelineno-0-166"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7418
|
+
<a id="__codelineno-0-167" name="__codelineno-0-167"></a><span class="sd"> Reference a ContentType in the form `{app_label}.{model}`.</span>
|
|
7419
|
+
<a id="__codelineno-0-168" name="__codelineno-0-168"></a>
|
|
7420
|
+
<a id="__codelineno-0-169" name="__codelineno-0-169"></a><span class="sd"> Note: class name is misleading; this field is also used in numerous FilterSets where it has nothing to do with CSV.</span>
|
|
7421
|
+
<a id="__codelineno-0-170" name="__codelineno-0-170"></a><span class="sd"> """</span>
|
|
7422
|
+
<a id="__codelineno-0-171" name="__codelineno-0-171"></a>
|
|
7423
|
+
<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="n">STATIC_CHOICES</span> <span class="o">=</span> <span class="kc">True</span>
|
|
7464
7424
|
<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
|
|
7465
|
-
<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="
|
|
7466
|
-
<a id="__codelineno-0-175" name="__codelineno-0-175"></a>
|
|
7467
|
-
<a id="__codelineno-0-176" name="__codelineno-0-176"></a
|
|
7468
|
-
<a id="__codelineno-0-177" name="__codelineno-0-177"></a><span class="
|
|
7469
|
-
<a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="sd">
|
|
7470
|
-
<a id="__codelineno-0-179" name="__codelineno-0-179"></a
|
|
7471
|
-
<a id="__codelineno-0-180" name="__codelineno-0-180"></a
|
|
7472
|
-
<a id="__codelineno-0-181" name="__codelineno-0-181"></a>
|
|
7473
|
-
<a id="__codelineno-0-182" name="__codelineno-0-182"></a>
|
|
7474
|
-
<a id="__codelineno-0-183" name="__codelineno-0-183"></a>
|
|
7475
|
-
<a id="__codelineno-0-184" name="__codelineno-0-184"></a>
|
|
7476
|
-
<a id="__codelineno-0-185" name="__codelineno-0-185"></a>
|
|
7477
|
-
<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">
|
|
7478
|
-
<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="
|
|
7479
|
-
<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
|
|
7480
|
-
<a id="__codelineno-0-189" name="__codelineno-0-189"></a>
|
|
7481
|
-
<a id="__codelineno-0-190" name="__codelineno-0-190"></a>
|
|
7482
|
-
<a id="__codelineno-0-191" name="__codelineno-0-191"></a>
|
|
7483
|
-
<a id="__codelineno-0-192" name="__codelineno-0-192"></a>
|
|
7484
|
-
<a id="__codelineno-0-193" name="__codelineno-0-193"></a>
|
|
7425
|
+
<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
7426
|
+
<a id="__codelineno-0-175" name="__codelineno-0-175"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7427
|
+
<a id="__codelineno-0-176" name="__codelineno-0-176"></a><span class="sd"> Allow this field to support `{app_label}.{model}` style, null values, or PK-based lookups</span>
|
|
7428
|
+
<a id="__codelineno-0-177" name="__codelineno-0-177"></a><span class="sd"> depending on how the field is used.</span>
|
|
7429
|
+
<a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="sd"> """</span>
|
|
7430
|
+
<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
7431
|
+
<a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
7432
|
+
<a id="__codelineno-0-181" name="__codelineno-0-181"></a>
|
|
7433
|
+
<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="c1"># Only pass through strings if they aren't numeric. Otherwise cast to `int`.</span>
|
|
7434
|
+
<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
7435
|
+
<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span>
|
|
7436
|
+
<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="k">return</span> <span class="n">value</span>
|
|
7437
|
+
<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">else</span><span class="p">:</span>
|
|
7438
|
+
<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
7439
|
+
<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
|
|
7440
|
+
<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="c1"># Integers are PKs</span>
|
|
7441
|
+
<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
|
|
7442
|
+
<a id="__codelineno-0-191" name="__codelineno-0-191"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
|
|
7443
|
+
<a id="__codelineno-0-192" name="__codelineno-0-192"></a>
|
|
7444
|
+
<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">app_label</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2">"</span>
|
|
7485
7445
|
<a id="__codelineno-0-194" name="__codelineno-0-194"></a>
|
|
7486
|
-
<a id="__codelineno-0-195" name="__codelineno-0-195"></a>
|
|
7487
|
-
<a id="__codelineno-0-196" name="__codelineno-0-196"></a>
|
|
7488
|
-
<a id="__codelineno-0-197" name="__codelineno-0-197"></a>
|
|
7489
|
-
<a id="__codelineno-0-198" name="__codelineno-0-198"></a>
|
|
7490
|
-
<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="k">
|
|
7491
|
-
<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="
|
|
7492
|
-
<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="k">
|
|
7493
|
-
<a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="k">
|
|
7494
|
-
<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="k">
|
|
7495
|
-
<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="k">
|
|
7496
|
-
<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span>
|
|
7497
|
-
<a id="__codelineno-0-206" name="__codelineno-0-206"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="s2">"Invalid object type"</span><span class="p">)</span>
|
|
7446
|
+
<a id="__codelineno-0-195" name="__codelineno-0-195"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
7447
|
+
<a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
7448
|
+
<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="k">try</span><span class="p">:</span>
|
|
7449
|
+
<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="n">app_label</span><span class="p">,</span> <span class="n">model</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
|
|
7450
|
+
<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
7451
|
+
<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="s1">'Object type must be specified as "<app_label>.<model>"'</span><span class="p">)</span>
|
|
7452
|
+
<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="k">try</span><span class="p">:</span>
|
|
7453
|
+
<a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="n">app_label</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">)</span>
|
|
7454
|
+
<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span>
|
|
7455
|
+
<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="s2">"Invalid object type"</span><span class="p">)</span>
|
|
7498
7456
|
</code></pre></div></td></tr></table></div>
|
|
7499
7457
|
</details>
|
|
7500
7458
|
|
|
@@ -7528,7 +7486,9 @@ depending on how the field is used.</p>
|
|
|
7528
7486
|
|
|
7529
7487
|
<details class="quote">
|
|
7530
7488
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7531
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7489
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-174">174</a></span>
|
|
7490
|
+
<span class="normal"><a href="#__codelineno-0-175">175</a></span>
|
|
7491
|
+
<span class="normal"><a href="#__codelineno-0-176">176</a></span>
|
|
7532
7492
|
<span class="normal"><a href="#__codelineno-0-177">177</a></span>
|
|
7533
7493
|
<span class="normal"><a href="#__codelineno-0-178">178</a></span>
|
|
7534
7494
|
<span class="normal"><a href="#__codelineno-0-179">179</a></span>
|
|
@@ -7545,28 +7505,26 @@ depending on how the field is used.</p>
|
|
|
7545
7505
|
<span class="normal"><a href="#__codelineno-0-190">190</a></span>
|
|
7546
7506
|
<span class="normal"><a href="#__codelineno-0-191">191</a></span>
|
|
7547
7507
|
<span class="normal"><a href="#__codelineno-0-192">192</a></span>
|
|
7548
|
-
<span class="normal"><a href="#__codelineno-0-193">193</a></span>
|
|
7549
|
-
<
|
|
7550
|
-
<
|
|
7551
|
-
<a id="__codelineno-0-177" name="__codelineno-0-177"></a><span class="
|
|
7552
|
-
<a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="sd">
|
|
7553
|
-
<a id="__codelineno-0-179" name="__codelineno-0-179"></a
|
|
7554
|
-
<a id="__codelineno-0-180" name="__codelineno-0-180"></a
|
|
7555
|
-
<a id="__codelineno-0-181" name="__codelineno-0-181"></a>
|
|
7556
|
-
<a id="__codelineno-0-182" name="__codelineno-0-182"></a>
|
|
7557
|
-
<a id="__codelineno-0-183" name="__codelineno-0-183"></a>
|
|
7558
|
-
<a id="__codelineno-0-184" name="__codelineno-0-184"></a>
|
|
7559
|
-
<a id="__codelineno-0-185" name="__codelineno-0-185"></a>
|
|
7560
|
-
<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">
|
|
7561
|
-
<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="
|
|
7562
|
-
<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
|
|
7563
|
-
<a id="__codelineno-0-189" name="__codelineno-0-189"></a>
|
|
7564
|
-
<a id="__codelineno-0-190" name="__codelineno-0-190"></a>
|
|
7565
|
-
<a id="__codelineno-0-191" name="__codelineno-0-191"></a>
|
|
7566
|
-
<a id="__codelineno-0-192" name="__codelineno-0-192"></a>
|
|
7567
|
-
<a id="__codelineno-0-193" name="__codelineno-0-193"></a>
|
|
7568
|
-
<a id="__codelineno-0-194" name="__codelineno-0-194"></a>
|
|
7569
|
-
<a id="__codelineno-0-195" name="__codelineno-0-195"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">app_label</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2">"</span>
|
|
7508
|
+
<span class="normal"><a href="#__codelineno-0-193">193</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-174" name="__codelineno-0-174"></a><span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
7509
|
+
<a id="__codelineno-0-175" name="__codelineno-0-175"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7510
|
+
<a id="__codelineno-0-176" name="__codelineno-0-176"></a><span class="sd"> Allow this field to support `{app_label}.{model}` style, null values, or PK-based lookups</span>
|
|
7511
|
+
<a id="__codelineno-0-177" name="__codelineno-0-177"></a><span class="sd"> depending on how the field is used.</span>
|
|
7512
|
+
<a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="sd"> """</span>
|
|
7513
|
+
<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
7514
|
+
<a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
7515
|
+
<a id="__codelineno-0-181" name="__codelineno-0-181"></a>
|
|
7516
|
+
<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="c1"># Only pass through strings if they aren't numeric. Otherwise cast to `int`.</span>
|
|
7517
|
+
<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
7518
|
+
<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span>
|
|
7519
|
+
<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="k">return</span> <span class="n">value</span>
|
|
7520
|
+
<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">else</span><span class="p">:</span>
|
|
7521
|
+
<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
7522
|
+
<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
|
|
7523
|
+
<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="c1"># Integers are PKs</span>
|
|
7524
|
+
<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
|
|
7525
|
+
<a id="__codelineno-0-191" name="__codelineno-0-191"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
|
|
7526
|
+
<a id="__codelineno-0-192" name="__codelineno-0-192"></a>
|
|
7527
|
+
<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">app_label</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2">"</span>
|
|
7570
7528
|
</code></pre></div></td></tr></table></div>
|
|
7571
7529
|
</details>
|
|
7572
7530
|
</div>
|
|
@@ -7634,7 +7592,9 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
|
|
|
7634
7592
|
|
|
7635
7593
|
<details class="quote">
|
|
7636
7594
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7637
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7595
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-47">47</a></span>
|
|
7596
|
+
<span class="normal"><a href="#__codelineno-0-48">48</a></span>
|
|
7597
|
+
<span class="normal"><a href="#__codelineno-0-49">49</a></span>
|
|
7638
7598
|
<span class="normal"><a href="#__codelineno-0-50">50</a></span>
|
|
7639
7599
|
<span class="normal"><a href="#__codelineno-0-51">51</a></span>
|
|
7640
7600
|
<span class="normal"><a href="#__codelineno-0-52">52</a></span>
|
|
@@ -7663,40 +7623,38 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
|
|
|
7663
7623
|
<span class="normal"><a href="#__codelineno-0-75">75</a></span>
|
|
7664
7624
|
<span class="normal"><a href="#__codelineno-0-76">76</a></span>
|
|
7665
7625
|
<span class="normal"><a href="#__codelineno-0-77">77</a></span>
|
|
7666
|
-
<span class="normal"><a href="#__codelineno-0-78">78</a></span>
|
|
7667
|
-
<
|
|
7668
|
-
<
|
|
7669
|
-
<a id="__codelineno-0-50" name="__codelineno-0-50"></a
|
|
7670
|
-
<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd">
|
|
7626
|
+
<span class="normal"><a href="#__codelineno-0-78">78</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="k">class</span> <span class="nc">CSVDataField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">):</span>
|
|
7627
|
+
<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7628
|
+
<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> A CharField (rendered as a Textarea) which expects CSV-formatted data.</span>
|
|
7629
|
+
<a id="__codelineno-0-50" name="__codelineno-0-50"></a>
|
|
7630
|
+
<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> Initial value is a list of headers corresponding to the required fields for the given serializer class.</span>
|
|
7671
7631
|
<a id="__codelineno-0-52" name="__codelineno-0-52"></a>
|
|
7672
|
-
<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd">
|
|
7673
|
-
<a id="__codelineno-0-54" name="__codelineno-0-54"></a>
|
|
7674
|
-
<a id="__codelineno-0-55" name="__codelineno-0-55"></a
|
|
7675
|
-
<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd">
|
|
7676
|
-
<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
|
|
7677
|
-
<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd">
|
|
7678
|
-
<a id="__codelineno-0-59" name="__codelineno-0-59"></a
|
|
7679
|
-
<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="
|
|
7632
|
+
<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> This no longer actually does any CSV parsing or validation on its own,</span>
|
|
7633
|
+
<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> as that is now handled by the NautobotCSVParser class and the REST API serializers.</span>
|
|
7634
|
+
<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
|
|
7635
|
+
<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Args:</span>
|
|
7636
|
+
<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> required_field_names (list[str]): List of field names representing required fields for this import.</span>
|
|
7637
|
+
<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> """</span>
|
|
7638
|
+
<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
|
|
7639
|
+
<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">django_forms</span><span class="o">.</span><span class="n">Textarea</span>
|
|
7680
7640
|
<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
|
|
7681
|
-
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="
|
|
7682
|
-
<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
|
|
7683
|
-
<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
|
|
7684
|
-
<a id="__codelineno-0-65" name="__codelineno-0-65"></a>
|
|
7685
|
-
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="
|
|
7641
|
+
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">required_field_names</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
7642
|
+
<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="bp">self</span><span class="o">.</span><span class="n">required_field_names</span> <span class="o">=</span> <span class="n">required_field_names</span>
|
|
7643
|
+
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"required"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
|
7644
|
+
<a id="__codelineno-0-65" name="__codelineno-0-65"></a>
|
|
7645
|
+
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
7686
7646
|
<a id="__codelineno-0-67" name="__codelineno-0-67"></a>
|
|
7687
|
-
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="
|
|
7688
|
-
<a id="__codelineno-0-69" name="__codelineno-0-69"></a>
|
|
7689
|
-
<a id="__codelineno-0-70" name="__codelineno-0-70"></a>
|
|
7690
|
-
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
7691
|
-
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
7692
|
-
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
7693
|
-
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
7694
|
-
<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
|
|
7695
|
-
<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
|
|
7696
|
-
<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="s2">"
|
|
7697
|
-
<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
|
|
7698
|
-
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="s2">"in double quotes."</span>
|
|
7699
|
-
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="p">)</span>
|
|
7647
|
+
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="bp">self</span><span class="o">.</span><span class="n">strip</span> <span class="o">=</span> <span class="kc">False</span>
|
|
7648
|
+
<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">label</span><span class="p">:</span>
|
|
7649
|
+
<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="s2">""</span>
|
|
7650
|
+
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">initial</span><span class="p">:</span>
|
|
7651
|
+
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="bp">self</span><span class="o">.</span><span class="n">initial</span> <span class="o">=</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">required_field_names</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
|
7652
|
+
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span><span class="p">:</span>
|
|
7653
|
+
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span> <span class="o">=</span> <span class="p">(</span>
|
|
7654
|
+
<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="s2">"Enter the list of column headers followed by one line per record to be imported, using "</span>
|
|
7655
|
+
<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="s2">"commas to separate values. Multi-line data and values containing commas may be wrapped "</span>
|
|
7656
|
+
<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="s2">"in double quotes."</span>
|
|
7657
|
+
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="p">)</span>
|
|
7700
7658
|
</code></pre></div></td></tr></table></div>
|
|
7701
7659
|
</details>
|
|
7702
7660
|
|
|
@@ -7742,7 +7700,9 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
|
|
|
7742
7700
|
|
|
7743
7701
|
<details class="quote">
|
|
7744
7702
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7745
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7703
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-81"> 81</a></span>
|
|
7704
|
+
<span class="normal"><a href="#__codelineno-0-82"> 82</a></span>
|
|
7705
|
+
<span class="normal"><a href="#__codelineno-0-83"> 83</a></span>
|
|
7746
7706
|
<span class="normal"><a href="#__codelineno-0-84"> 84</a></span>
|
|
7747
7707
|
<span class="normal"><a href="#__codelineno-0-85"> 85</a></span>
|
|
7748
7708
|
<span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
|
|
@@ -7768,37 +7728,35 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
|
|
|
7768
7728
|
<span class="normal"><a href="#__codelineno-0-106">106</a></span>
|
|
7769
7729
|
<span class="normal"><a href="#__codelineno-0-107">107</a></span>
|
|
7770
7730
|
<span class="normal"><a href="#__codelineno-0-108">108</a></span>
|
|
7771
|
-
<span class="normal"><a href="#__codelineno-0-109">109</a></span>
|
|
7772
|
-
<
|
|
7773
|
-
<
|
|
7774
|
-
<a id="__codelineno-0-84" name="__codelineno-0-84"></a
|
|
7775
|
-
<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd">
|
|
7776
|
-
<a id="__codelineno-0-86" name="__codelineno-0-86"></a>
|
|
7777
|
-
<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd">
|
|
7778
|
-
<a id="__codelineno-0-88" name="__codelineno-0-88"></a
|
|
7779
|
-
<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="
|
|
7780
|
-
<a id="__codelineno-0-90" name="__codelineno-0-90"></a>
|
|
7781
|
-
<a id="__codelineno-0-91" name="__codelineno-0-91"></a>
|
|
7782
|
-
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="
|
|
7731
|
+
<span class="normal"><a href="#__codelineno-0-109">109</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="k">class</span> <span class="nc">CSVFileField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">FileField</span><span class="p">):</span>
|
|
7732
|
+
<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7733
|
+
<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> A FileField (rendered as a ClearableFileInput) which expects a file containing CSV-formatted data.</span>
|
|
7734
|
+
<a id="__codelineno-0-84" name="__codelineno-0-84"></a>
|
|
7735
|
+
<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> This no longer actually does any CSV parsing or validation on its own,</span>
|
|
7736
|
+
<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> as that is now handled by the NautobotCSVParser class and the REST API serializers.</span>
|
|
7737
|
+
<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> """</span>
|
|
7738
|
+
<a id="__codelineno-0-88" name="__codelineno-0-88"></a>
|
|
7739
|
+
<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
7740
|
+
<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"required"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
|
7741
|
+
<a id="__codelineno-0-91" name="__codelineno-0-91"></a>
|
|
7742
|
+
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
7783
7743
|
<a id="__codelineno-0-93" name="__codelineno-0-93"></a>
|
|
7784
|
-
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="
|
|
7785
|
-
<a id="__codelineno-0-95" name="__codelineno-0-95"></a>
|
|
7786
|
-
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
7787
|
-
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
7788
|
-
<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
|
|
7789
|
-
<a id="__codelineno-0-99" name="__codelineno-0-99"></a>
|
|
7790
|
-
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">"
|
|
7791
|
-
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
|
|
7792
|
-
<a id="__codelineno-0-102" name="__codelineno-0-102"></a>
|
|
7793
|
-
<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
|
|
7794
|
-
<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
|
|
7795
|
-
<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
|
|
7796
|
-
<a id="__codelineno-0-106" name="__codelineno-0-106"></a
|
|
7797
|
-
<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
|
|
7798
|
-
<a id="__codelineno-0-108" name="__codelineno-0-108"></a>
|
|
7799
|
-
<a id="__codelineno-0-109" name="__codelineno-0-109"></a>
|
|
7800
|
-
<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">file</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
|
|
7801
|
-
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="k">return</span> <span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-8-sig"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
7744
|
+
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">label</span><span class="p">:</span>
|
|
7745
|
+
<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="s2">"CSV File"</span>
|
|
7746
|
+
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span><span class="p">:</span>
|
|
7747
|
+
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span> <span class="o">=</span> <span class="p">(</span>
|
|
7748
|
+
<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="s2">"Select a CSV file to upload. It should contain column headers in the first row and use commas "</span>
|
|
7749
|
+
<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="s2">"to separate values. Multi-line data and values containing commas may be wrapped "</span>
|
|
7750
|
+
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">"in double quotes."</span>
|
|
7751
|
+
<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="p">)</span>
|
|
7752
|
+
<a id="__codelineno-0-102" name="__codelineno-0-102"></a>
|
|
7753
|
+
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
|
|
7754
|
+
<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="w"> </span><span class="sd">"""For parity with CSVDataField, this returns the CSV text rather than an UploadedFile object."""</span>
|
|
7755
|
+
<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">if</span> <span class="n">file</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
7756
|
+
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
7757
|
+
<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
|
|
7758
|
+
<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">file</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
|
|
7759
|
+
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="k">return</span> <span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-8-sig"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
7802
7760
|
</code></pre></div></td></tr></table></div>
|
|
7803
7761
|
</details>
|
|
7804
7762
|
|
|
@@ -7831,19 +7789,19 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
|
|
|
7831
7789
|
|
|
7832
7790
|
<details class="quote">
|
|
7833
7791
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7834
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7792
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-103">103</a></span>
|
|
7793
|
+
<span class="normal"><a href="#__codelineno-0-104">104</a></span>
|
|
7794
|
+
<span class="normal"><a href="#__codelineno-0-105">105</a></span>
|
|
7835
7795
|
<span class="normal"><a href="#__codelineno-0-106">106</a></span>
|
|
7836
7796
|
<span class="normal"><a href="#__codelineno-0-107">107</a></span>
|
|
7837
7797
|
<span class="normal"><a href="#__codelineno-0-108">108</a></span>
|
|
7838
|
-
<span class="normal"><a href="#__codelineno-0-109">109</a></span>
|
|
7839
|
-
<
|
|
7840
|
-
<
|
|
7841
|
-
<a id="__codelineno-0-106" name="__codelineno-0-106"></a
|
|
7842
|
-
<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
|
|
7843
|
-
<a id="__codelineno-0-108" name="__codelineno-0-108"></a>
|
|
7844
|
-
<a id="__codelineno-0-109" name="__codelineno-0-109"></a>
|
|
7845
|
-
<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">file</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
|
|
7846
|
-
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="k">return</span> <span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-8-sig"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
7798
|
+
<span class="normal"><a href="#__codelineno-0-109">109</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
|
|
7799
|
+
<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="w"> </span><span class="sd">"""For parity with CSVDataField, this returns the CSV text rather than an UploadedFile object."""</span>
|
|
7800
|
+
<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">if</span> <span class="n">file</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
7801
|
+
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
7802
|
+
<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
|
|
7803
|
+
<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">file</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
|
|
7804
|
+
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="k">return</span> <span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-8-sig"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
7847
7805
|
</code></pre></div></td></tr></table></div>
|
|
7848
7806
|
</details>
|
|
7849
7807
|
</div>
|
|
@@ -7880,7 +7838,9 @@ nothing to do with CSV data.</p>
|
|
|
7880
7838
|
|
|
7881
7839
|
<details class="quote">
|
|
7882
7840
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
7883
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7841
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-146">146</a></span>
|
|
7842
|
+
<span class="normal"><a href="#__codelineno-0-147">147</a></span>
|
|
7843
|
+
<span class="normal"><a href="#__codelineno-0-148">148</a></span>
|
|
7884
7844
|
<span class="normal"><a href="#__codelineno-0-149">149</a></span>
|
|
7885
7845
|
<span class="normal"><a href="#__codelineno-0-150">150</a></span>
|
|
7886
7846
|
<span class="normal"><a href="#__codelineno-0-151">151</a></span>
|
|
@@ -7894,25 +7854,23 @@ nothing to do with CSV data.</p>
|
|
|
7894
7854
|
<span class="normal"><a href="#__codelineno-0-159">159</a></span>
|
|
7895
7855
|
<span class="normal"><a href="#__codelineno-0-160">160</a></span>
|
|
7896
7856
|
<span class="normal"><a href="#__codelineno-0-161">161</a></span>
|
|
7897
|
-
<span class="normal"><a href="#__codelineno-0-162">162</a></span>
|
|
7898
|
-
<
|
|
7899
|
-
<
|
|
7900
|
-
<a id="__codelineno-0-149" name="__codelineno-0-149"></a
|
|
7901
|
-
<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="sd">
|
|
7902
|
-
<a id="__codelineno-0-151" name="__codelineno-0-151"></a>
|
|
7903
|
-
<a id="__codelineno-0-152" name="__codelineno-0-152"></a><span class="sd">
|
|
7904
|
-
<a id="__codelineno-0-153" name="__codelineno-0-153"></a
|
|
7905
|
-
<a id="__codelineno-0-154" name="__codelineno-0-154"></a
|
|
7906
|
-
<a id="__codelineno-0-155" name="__codelineno-0-155"></a>
|
|
7907
|
-
<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="
|
|
7908
|
-
<a id="__codelineno-0-157" name="__codelineno-0-157"></a>
|
|
7909
|
-
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="p">
|
|
7910
|
-
<a id="__codelineno-0-159" name="__codelineno-0-159"></a>
|
|
7911
|
-
<a id="__codelineno-0-160" name="__codelineno-0-160"></a>
|
|
7912
|
-
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="k">
|
|
7913
|
-
<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="k">
|
|
7914
|
-
<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="k">except</span> <span class="n">MultipleObjectsReturned</span><span class="p">:</span>
|
|
7915
|
-
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">" is not a unique value for this field; multiple objects were found'</span><span class="p">)</span>
|
|
7857
|
+
<span class="normal"><a href="#__codelineno-0-162">162</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-146" name="__codelineno-0-146"></a><span class="k">class</span> <span class="nc">CSVModelChoiceField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">ModelChoiceField</span><span class="p">):</span>
|
|
7858
|
+
<a id="__codelineno-0-147" name="__codelineno-0-147"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7859
|
+
<a id="__codelineno-0-148" name="__codelineno-0-148"></a><span class="sd"> Provides additional validation for model choices entered as CSV data.</span>
|
|
7860
|
+
<a id="__codelineno-0-149" name="__codelineno-0-149"></a>
|
|
7861
|
+
<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="sd"> Note: class name is misleading; the subclass CSVContentTypeField (below) is also used in FilterSets, where it has</span>
|
|
7862
|
+
<a id="__codelineno-0-151" name="__codelineno-0-151"></a><span class="sd"> nothing to do with CSV data.</span>
|
|
7863
|
+
<a id="__codelineno-0-152" name="__codelineno-0-152"></a><span class="sd"> """</span>
|
|
7864
|
+
<a id="__codelineno-0-153" name="__codelineno-0-153"></a>
|
|
7865
|
+
<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="n">default_error_messages</span> <span class="o">=</span> <span class="p">{</span>
|
|
7866
|
+
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="s2">"invalid_choice"</span><span class="p">:</span> <span class="s2">"Object not found."</span><span class="p">,</span>
|
|
7867
|
+
<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="p">}</span>
|
|
7868
|
+
<a id="__codelineno-0-157" name="__codelineno-0-157"></a>
|
|
7869
|
+
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
7870
|
+
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="k">try</span><span class="p">:</span>
|
|
7871
|
+
<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
7872
|
+
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="k">except</span> <span class="n">MultipleObjectsReturned</span><span class="p">:</span>
|
|
7873
|
+
<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">" is not a unique value for this field; multiple objects were found'</span><span class="p">)</span>
|
|
7916
7874
|
</code></pre></div></td></tr></table></div>
|
|
7917
7875
|
</details>
|
|
7918
7876
|
|
|
@@ -8034,7 +7992,9 @@ JSON/YAML import of DeviceTypes still.</p>
|
|
|
8034
7992
|
|
|
8035
7993
|
<details class="quote">
|
|
8036
7994
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
8037
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7995
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-126">126</a></span>
|
|
7996
|
+
<span class="normal"><a href="#__codelineno-0-127">127</a></span>
|
|
7997
|
+
<span class="normal"><a href="#__codelineno-0-128">128</a></span>
|
|
8038
7998
|
<span class="normal"><a href="#__codelineno-0-129">129</a></span>
|
|
8039
7999
|
<span class="normal"><a href="#__codelineno-0-130">130</a></span>
|
|
8040
8000
|
<span class="normal"><a href="#__codelineno-0-131">131</a></span>
|
|
@@ -8049,26 +8009,24 @@ JSON/YAML import of DeviceTypes still.</p>
|
|
|
8049
8009
|
<span class="normal"><a href="#__codelineno-0-140">140</a></span>
|
|
8050
8010
|
<span class="normal"><a href="#__codelineno-0-141">141</a></span>
|
|
8051
8011
|
<span class="normal"><a href="#__codelineno-0-142">142</a></span>
|
|
8052
|
-
<span class="normal"><a href="#__codelineno-0-143">143</a></span>
|
|
8053
|
-
<
|
|
8054
|
-
<
|
|
8055
|
-
<a id="__codelineno-0-129" name="__codelineno-0-129"></a
|
|
8056
|
-
<a id="__codelineno-0-130" name="__codelineno-0-130"></a><span class="sd">
|
|
8057
|
-
<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
|
|
8058
|
-
<a id="__codelineno-0-132" name="__codelineno-0-132"></a><span class="sd">
|
|
8059
|
-
<a id="__codelineno-0-133" name="__codelineno-0-133"></a
|
|
8060
|
-
<a id="__codelineno-0-134" name="__codelineno-0-134"></a><span class="
|
|
8061
|
-
<a id="__codelineno-0-135" name="__codelineno-0-135"></a>
|
|
8062
|
-
<a id="__codelineno-0-136" name="__codelineno-0-136"></a>
|
|
8063
|
-
<a id="__codelineno-0-137" name="__codelineno-0-137"></a
|
|
8064
|
-
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">
|
|
8065
|
-
<a id="__codelineno-0-139" name="__codelineno-0-139"></a>
|
|
8066
|
-
<a id="__codelineno-0-140" name="__codelineno-0-140"></a>
|
|
8067
|
-
<a id="__codelineno-0-141" name="__codelineno-0-141"></a>
|
|
8068
|
-
<a id="__codelineno-0-142" name="__codelineno-0-142"></a>
|
|
8069
|
-
<a id="__codelineno-0-143" name="__codelineno-0-143"></a><span class="
|
|
8070
|
-
<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
8071
|
-
<a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
|
8012
|
+
<span class="normal"><a href="#__codelineno-0-143">143</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-126" name="__codelineno-0-126"></a><span class="k">class</span> <span class="nc">CSVMultipleChoiceField</span><span class="p">(</span><span class="n">CSVChoiceField</span><span class="p">):</span>
|
|
8013
|
+
<a id="__codelineno-0-127" name="__codelineno-0-127"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8014
|
+
<a id="__codelineno-0-128" name="__codelineno-0-128"></a><span class="sd"> A version of CSVChoiceField that supports and emits a list of choice values.</span>
|
|
8015
|
+
<a id="__codelineno-0-129" name="__codelineno-0-129"></a>
|
|
8016
|
+
<a id="__codelineno-0-130" name="__codelineno-0-130"></a><span class="sd"> As with CSVChoiceField, the name is misleading, as this is no longer used for CSV imports, but is used for</span>
|
|
8017
|
+
<a id="__codelineno-0-131" name="__codelineno-0-131"></a><span class="sd"> JSON/YAML import of DeviceTypes still.</span>
|
|
8018
|
+
<a id="__codelineno-0-132" name="__codelineno-0-132"></a><span class="sd"> """</span>
|
|
8019
|
+
<a id="__codelineno-0-133" name="__codelineno-0-133"></a>
|
|
8020
|
+
<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8021
|
+
<a id="__codelineno-0-135" name="__codelineno-0-135"></a><span class="w"> </span><span class="sd">"""Return a list of strings."""</span>
|
|
8022
|
+
<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_values</span><span class="p">:</span>
|
|
8023
|
+
<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
8024
|
+
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">return</span> <span class="p">[</span><span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
|
8025
|
+
<a id="__codelineno-0-139" name="__codelineno-0-139"></a>
|
|
8026
|
+
<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8027
|
+
<a id="__codelineno-0-141" name="__codelineno-0-141"></a><span class="w"> </span><span class="sd">"""Validate that each of the input values is in self.choices."""</span>
|
|
8028
|
+
<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
8029
|
+
<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
|
8072
8030
|
</code></pre></div></td></tr></table></div>
|
|
8073
8031
|
</details>
|
|
8074
8032
|
|
|
@@ -8101,15 +8059,15 @@ JSON/YAML import of DeviceTypes still.</p>
|
|
|
8101
8059
|
|
|
8102
8060
|
<details class="quote">
|
|
8103
8061
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
8104
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8062
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-134">134</a></span>
|
|
8063
|
+
<span class="normal"><a href="#__codelineno-0-135">135</a></span>
|
|
8064
|
+
<span class="normal"><a href="#__codelineno-0-136">136</a></span>
|
|
8105
8065
|
<span class="normal"><a href="#__codelineno-0-137">137</a></span>
|
|
8106
|
-
<span class="normal"><a href="#__codelineno-0-138">138</a></span>
|
|
8107
|
-
<
|
|
8108
|
-
<
|
|
8109
|
-
<a id="__codelineno-0-137" name="__codelineno-0-137"></a
|
|
8110
|
-
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">
|
|
8111
|
-
<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
8112
|
-
<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">return</span> <span class="p">[</span><span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
|
8066
|
+
<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-134" name="__codelineno-0-134"></a><span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8067
|
+
<a id="__codelineno-0-135" name="__codelineno-0-135"></a><span class="w"> </span><span class="sd">"""Return a list of strings."""</span>
|
|
8068
|
+
<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_values</span><span class="p">:</span>
|
|
8069
|
+
<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
8070
|
+
<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">return</span> <span class="p">[</span><span class="n">v</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
|
8113
8071
|
</code></pre></div></td></tr></table></div>
|
|
8114
8072
|
</details>
|
|
8115
8073
|
</div>
|
|
@@ -8133,13 +8091,13 @@ JSON/YAML import of DeviceTypes still.</p>
|
|
|
8133
8091
|
|
|
8134
8092
|
<details class="quote">
|
|
8135
8093
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
8136
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8137
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8138
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8139
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8140
|
-
<a id="__codelineno-0-
|
|
8141
|
-
<a id="__codelineno-0-
|
|
8142
|
-
<a id="__codelineno-0-
|
|
8094
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-140">140</a></span>
|
|
8095
|
+
<span class="normal"><a href="#__codelineno-0-141">141</a></span>
|
|
8096
|
+
<span class="normal"><a href="#__codelineno-0-142">142</a></span>
|
|
8097
|
+
<span class="normal"><a href="#__codelineno-0-143">143</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-140" name="__codelineno-0-140"></a><span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8098
|
+
<a id="__codelineno-0-141" name="__codelineno-0-141"></a><span class="w"> </span><span class="sd">"""Validate that each of the input values is in self.choices."""</span>
|
|
8099
|
+
<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
8100
|
+
<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
|
8143
8101
|
</code></pre></div></td></tr></table></div>
|
|
8144
8102
|
</details>
|
|
8145
8103
|
</div>
|
|
@@ -8176,7 +8134,9 @@ purposes, similar to CSVContentTypeField above.</p>
|
|
|
8176
8134
|
|
|
8177
8135
|
<details class="quote">
|
|
8178
8136
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
8179
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8137
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-282">282</a></span>
|
|
8138
|
+
<span class="normal"><a href="#__codelineno-0-283">283</a></span>
|
|
8139
|
+
<span class="normal"><a href="#__codelineno-0-284">284</a></span>
|
|
8180
8140
|
<span class="normal"><a href="#__codelineno-0-285">285</a></span>
|
|
8181
8141
|
<span class="normal"><a href="#__codelineno-0-286">286</a></span>
|
|
8182
8142
|
<span class="normal"><a href="#__codelineno-0-287">287</a></span>
|
|
@@ -8204,39 +8164,37 @@ purposes, similar to CSVContentTypeField above.</p>
|
|
|
8204
8164
|
<span class="normal"><a href="#__codelineno-0-309">309</a></span>
|
|
8205
8165
|
<span class="normal"><a href="#__codelineno-0-310">310</a></span>
|
|
8206
8166
|
<span class="normal"><a href="#__codelineno-0-311">311</a></span>
|
|
8207
|
-
<span class="normal"><a href="#__codelineno-0-312">312</a></span>
|
|
8208
|
-
<
|
|
8209
|
-
<
|
|
8210
|
-
<a id="__codelineno-0-285" name="__codelineno-0-285"></a
|
|
8211
|
-
<a id="__codelineno-0-286" name="__codelineno-0-286"></a><span class="sd">
|
|
8212
|
-
<a id="__codelineno-0-287" name="__codelineno-0-287"></a>
|
|
8213
|
-
<a id="__codelineno-0-288" name="__codelineno-0-288"></a><span class="sd">
|
|
8214
|
-
<a id="__codelineno-0-289" name="__codelineno-0-289"></a
|
|
8215
|
-
<a id="__codelineno-0-290" name="__codelineno-0-290"></a><span class="
|
|
8216
|
-
<a id="__codelineno-0-291" name="__codelineno-0-291"></a>
|
|
8217
|
-
<a id="__codelineno-0-292" name="__codelineno-0-292"></a>
|
|
8218
|
-
<a id="__codelineno-0-293" name="__codelineno-0-293"></a><span class="
|
|
8219
|
-
<a id="__codelineno-0-294" name="__codelineno-0-294"></a>
|
|
8220
|
-
<a id="__codelineno-0-295" name="__codelineno-0-295"></a>
|
|
8221
|
-
<a id="__codelineno-0-296" name="__codelineno-0-296"></a>
|
|
8222
|
-
<a id="__codelineno-0-297" name="__codelineno-0-297"></a>
|
|
8223
|
-
<a id="__codelineno-0-298" name="__codelineno-0-298"></a> <span class="
|
|
8224
|
-
<a id="__codelineno-0-299" name="__codelineno-0-299"></a> <span class="
|
|
8225
|
-
<a id="__codelineno-0-300" name="__codelineno-0-300"></a>
|
|
8226
|
-
<a id="__codelineno-0-301" name="__codelineno-0-301"></a>
|
|
8227
|
-
<a id="__codelineno-0-302" name="__codelineno-0-302"></a>
|
|
8228
|
-
<a id="__codelineno-0-303" name="__codelineno-0-303"></a> <span class="k">
|
|
8229
|
-
<a id="__codelineno-0-304" name="__codelineno-0-304"></a> <span class="
|
|
8230
|
-
<a id="__codelineno-0-305" name="__codelineno-0-305"></a>
|
|
8231
|
-
<a id="__codelineno-0-306" name="__codelineno-0-306"></a>
|
|
8232
|
-
<a id="__codelineno-0-307" name="__codelineno-0-307"></a> <span class="
|
|
8233
|
-
<a id="__codelineno-0-308" name="__codelineno-0-308"></a>
|
|
8234
|
-
<a id="__codelineno-0-309" name="__codelineno-0-309"></a>
|
|
8235
|
-
<a id="__codelineno-0-310" name="__codelineno-0-310"></a>
|
|
8236
|
-
<a id="__codelineno-0-311" name="__codelineno-0-311"></a>
|
|
8237
|
-
<a id="__codelineno-0-312" name="__codelineno-0-312"></a>
|
|
8238
|
-
<a id="__codelineno-0-313" name="__codelineno-0-313"></a>
|
|
8239
|
-
<a id="__codelineno-0-314" name="__codelineno-0-314"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">pk_list</span><span class="p">)</span>
|
|
8167
|
+
<span class="normal"><a href="#__codelineno-0-312">312</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-282" name="__codelineno-0-282"></a><span class="k">class</span> <span class="nc">CSVMultipleContentTypeField</span><span class="p">(</span><span class="n">MultipleContentTypeField</span><span class="p">):</span>
|
|
8168
|
+
<a id="__codelineno-0-283" name="__codelineno-0-283"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8169
|
+
<a id="__codelineno-0-284" name="__codelineno-0-284"></a><span class="sd"> Reference a list of `ContentType` objects in the form `{app_label}.{model}'.</span>
|
|
8170
|
+
<a id="__codelineno-0-285" name="__codelineno-0-285"></a>
|
|
8171
|
+
<a id="__codelineno-0-286" name="__codelineno-0-286"></a><span class="sd"> Note: This is unused in Nautobot core at this time, but some apps (data-validation-engine) use this for non-CSV</span>
|
|
8172
|
+
<a id="__codelineno-0-287" name="__codelineno-0-287"></a><span class="sd"> purposes, similar to CSVContentTypeField above.</span>
|
|
8173
|
+
<a id="__codelineno-0-288" name="__codelineno-0-288"></a><span class="sd"> """</span>
|
|
8174
|
+
<a id="__codelineno-0-289" name="__codelineno-0-289"></a>
|
|
8175
|
+
<a id="__codelineno-0-290" name="__codelineno-0-290"></a> <span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8176
|
+
<a id="__codelineno-0-291" name="__codelineno-0-291"></a><span class="w"> </span><span class="sd">"""Parse a comma-separated string of model names into a list of PKs."""</span>
|
|
8177
|
+
<a id="__codelineno-0-292" name="__codelineno-0-292"></a> <span class="c1"># "".split(",") yields [""] rather than [], which we don't want!</span>
|
|
8178
|
+
<a id="__codelineno-0-293" name="__codelineno-0-293"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="n">value</span><span class="p">:</span>
|
|
8179
|
+
<a id="__codelineno-0-294" name="__codelineno-0-294"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span>
|
|
8180
|
+
<a id="__codelineno-0-295" name="__codelineno-0-295"></a>
|
|
8181
|
+
<a id="__codelineno-0-296" name="__codelineno-0-296"></a> <span class="c1"># For each model name, retrieve the model object and extract its</span>
|
|
8182
|
+
<a id="__codelineno-0-297" name="__codelineno-0-297"></a> <span class="c1"># content-type PK.</span>
|
|
8183
|
+
<a id="__codelineno-0-298" name="__codelineno-0-298"></a> <span class="n">pk_list</span> <span class="o">=</span> <span class="p">[]</span>
|
|
8184
|
+
<a id="__codelineno-0-299" name="__codelineno-0-299"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)):</span>
|
|
8185
|
+
<a id="__codelineno-0-300" name="__codelineno-0-300"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
8186
|
+
<a id="__codelineno-0-301" name="__codelineno-0-301"></a> <span class="k">try</span><span class="p">:</span>
|
|
8187
|
+
<a id="__codelineno-0-302" name="__codelineno-0-302"></a> <span class="n">model</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
|
8188
|
+
<a id="__codelineno-0-303" name="__codelineno-0-303"></a> <span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">LookupError</span><span class="p">):</span>
|
|
8189
|
+
<a id="__codelineno-0-304" name="__codelineno-0-304"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span>
|
|
8190
|
+
<a id="__codelineno-0-305" name="__codelineno-0-305"></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s2">"invalid_choice"</span><span class="p">],</span>
|
|
8191
|
+
<a id="__codelineno-0-306" name="__codelineno-0-306"></a> <span class="n">code</span><span class="o">=</span><span class="s2">"invalid_choice"</span><span class="p">,</span>
|
|
8192
|
+
<a id="__codelineno-0-307" name="__codelineno-0-307"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">"value"</span><span class="p">:</span> <span class="n">v</span><span class="p">},</span>
|
|
8193
|
+
<a id="__codelineno-0-308" name="__codelineno-0-308"></a> <span class="p">)</span>
|
|
8194
|
+
<a id="__codelineno-0-309" name="__codelineno-0-309"></a> <span class="n">ct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
|
8195
|
+
<a id="__codelineno-0-310" name="__codelineno-0-310"></a> <span class="n">pk_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ct</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
8196
|
+
<a id="__codelineno-0-311" name="__codelineno-0-311"></a>
|
|
8197
|
+
<a id="__codelineno-0-312" name="__codelineno-0-312"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">pk_list</span><span class="p">)</span>
|
|
8240
8198
|
</code></pre></div></td></tr></table></div>
|
|
8241
8199
|
</details>
|
|
8242
8200
|
|
|
@@ -8269,7 +8227,9 @@ purposes, similar to CSVContentTypeField above.</p>
|
|
|
8269
8227
|
|
|
8270
8228
|
<details class="quote">
|
|
8271
8229
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
8272
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8230
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-290">290</a></span>
|
|
8231
|
+
<span class="normal"><a href="#__codelineno-0-291">291</a></span>
|
|
8232
|
+
<span class="normal"><a href="#__codelineno-0-292">292</a></span>
|
|
8273
8233
|
<span class="normal"><a href="#__codelineno-0-293">293</a></span>
|
|
8274
8234
|
<span class="normal"><a href="#__codelineno-0-294">294</a></span>
|
|
8275
8235
|
<span class="normal"><a href="#__codelineno-0-295">295</a></span>
|
|
@@ -8289,31 +8249,29 @@ purposes, similar to CSVContentTypeField above.</p>
|
|
|
8289
8249
|
<span class="normal"><a href="#__codelineno-0-309">309</a></span>
|
|
8290
8250
|
<span class="normal"><a href="#__codelineno-0-310">310</a></span>
|
|
8291
8251
|
<span class="normal"><a href="#__codelineno-0-311">311</a></span>
|
|
8292
|
-
<span class="normal"><a href="#__codelineno-0-312">312</a></span>
|
|
8293
|
-
<
|
|
8294
|
-
<
|
|
8295
|
-
<a id="__codelineno-0-293" name="__codelineno-0-293"></a><span class="
|
|
8296
|
-
<a id="__codelineno-0-294" name="__codelineno-0-294"></a>
|
|
8297
|
-
<a id="__codelineno-0-295" name="__codelineno-0-295"></a>
|
|
8298
|
-
<a id="__codelineno-0-296" name="__codelineno-0-296"></a>
|
|
8299
|
-
<a id="__codelineno-0-297" name="__codelineno-0-297"></a>
|
|
8300
|
-
<a id="__codelineno-0-298" name="__codelineno-0-298"></a> <span class="
|
|
8301
|
-
<a id="__codelineno-0-299" name="__codelineno-0-299"></a> <span class="
|
|
8302
|
-
<a id="__codelineno-0-300" name="__codelineno-0-300"></a>
|
|
8303
|
-
<a id="__codelineno-0-301" name="__codelineno-0-301"></a>
|
|
8304
|
-
<a id="__codelineno-0-302" name="__codelineno-0-302"></a>
|
|
8305
|
-
<a id="__codelineno-0-303" name="__codelineno-0-303"></a> <span class="k">
|
|
8306
|
-
<a id="__codelineno-0-304" name="__codelineno-0-304"></a> <span class="
|
|
8307
|
-
<a id="__codelineno-0-305" name="__codelineno-0-305"></a>
|
|
8308
|
-
<a id="__codelineno-0-306" name="__codelineno-0-306"></a>
|
|
8309
|
-
<a id="__codelineno-0-307" name="__codelineno-0-307"></a> <span class="
|
|
8310
|
-
<a id="__codelineno-0-308" name="__codelineno-0-308"></a>
|
|
8311
|
-
<a id="__codelineno-0-309" name="__codelineno-0-309"></a>
|
|
8312
|
-
<a id="__codelineno-0-310" name="__codelineno-0-310"></a>
|
|
8313
|
-
<a id="__codelineno-0-311" name="__codelineno-0-311"></a>
|
|
8314
|
-
<a id="__codelineno-0-312" name="__codelineno-0-312"></a>
|
|
8315
|
-
<a id="__codelineno-0-313" name="__codelineno-0-313"></a>
|
|
8316
|
-
<a id="__codelineno-0-314" name="__codelineno-0-314"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">pk_list</span><span class="p">)</span>
|
|
8252
|
+
<span class="normal"><a href="#__codelineno-0-312">312</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-290" name="__codelineno-0-290"></a><span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8253
|
+
<a id="__codelineno-0-291" name="__codelineno-0-291"></a><span class="w"> </span><span class="sd">"""Parse a comma-separated string of model names into a list of PKs."""</span>
|
|
8254
|
+
<a id="__codelineno-0-292" name="__codelineno-0-292"></a> <span class="c1"># "".split(",") yields [""] rather than [], which we don't want!</span>
|
|
8255
|
+
<a id="__codelineno-0-293" name="__codelineno-0-293"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="n">value</span><span class="p">:</span>
|
|
8256
|
+
<a id="__codelineno-0-294" name="__codelineno-0-294"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span>
|
|
8257
|
+
<a id="__codelineno-0-295" name="__codelineno-0-295"></a>
|
|
8258
|
+
<a id="__codelineno-0-296" name="__codelineno-0-296"></a> <span class="c1"># For each model name, retrieve the model object and extract its</span>
|
|
8259
|
+
<a id="__codelineno-0-297" name="__codelineno-0-297"></a> <span class="c1"># content-type PK.</span>
|
|
8260
|
+
<a id="__codelineno-0-298" name="__codelineno-0-298"></a> <span class="n">pk_list</span> <span class="o">=</span> <span class="p">[]</span>
|
|
8261
|
+
<a id="__codelineno-0-299" name="__codelineno-0-299"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)):</span>
|
|
8262
|
+
<a id="__codelineno-0-300" name="__codelineno-0-300"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
8263
|
+
<a id="__codelineno-0-301" name="__codelineno-0-301"></a> <span class="k">try</span><span class="p">:</span>
|
|
8264
|
+
<a id="__codelineno-0-302" name="__codelineno-0-302"></a> <span class="n">model</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
|
8265
|
+
<a id="__codelineno-0-303" name="__codelineno-0-303"></a> <span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">LookupError</span><span class="p">):</span>
|
|
8266
|
+
<a id="__codelineno-0-304" name="__codelineno-0-304"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span>
|
|
8267
|
+
<a id="__codelineno-0-305" name="__codelineno-0-305"></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s2">"invalid_choice"</span><span class="p">],</span>
|
|
8268
|
+
<a id="__codelineno-0-306" name="__codelineno-0-306"></a> <span class="n">code</span><span class="o">=</span><span class="s2">"invalid_choice"</span><span class="p">,</span>
|
|
8269
|
+
<a id="__codelineno-0-307" name="__codelineno-0-307"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">"value"</span><span class="p">:</span> <span class="n">v</span><span class="p">},</span>
|
|
8270
|
+
<a id="__codelineno-0-308" name="__codelineno-0-308"></a> <span class="p">)</span>
|
|
8271
|
+
<a id="__codelineno-0-309" name="__codelineno-0-309"></a> <span class="n">ct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
|
8272
|
+
<a id="__codelineno-0-310" name="__codelineno-0-310"></a> <span class="n">pk_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ct</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
8273
|
+
<a id="__codelineno-0-311" name="__codelineno-0-311"></a>
|
|
8274
|
+
<a id="__codelineno-0-312" name="__codelineno-0-312"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">pk_list</span><span class="p">)</span>
|
|
8317
8275
|
</code></pre></div></td></tr></table></div>
|
|
8318
8276
|
</details>
|
|
8319
8277
|
</div>
|
|
@@ -8412,7 +8370,9 @@ purposes, similar to CSVContentTypeField above.</p>
|
|
|
8412
8370
|
|
|
8413
8371
|
<details class="quote">
|
|
8414
8372
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
8415
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8373
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-368">368</a></span>
|
|
8374
|
+
<span class="normal"><a href="#__codelineno-0-369">369</a></span>
|
|
8375
|
+
<span class="normal"><a href="#__codelineno-0-370">370</a></span>
|
|
8416
8376
|
<span class="normal"><a href="#__codelineno-0-371">371</a></span>
|
|
8417
8377
|
<span class="normal"><a href="#__codelineno-0-372">372</a></span>
|
|
8418
8378
|
<span class="normal"><a href="#__codelineno-0-373">373</a></span>
|
|
@@ -8428,27 +8388,25 @@ purposes, similar to CSVContentTypeField above.</p>
|
|
|
8428
8388
|
<span class="normal"><a href="#__codelineno-0-383">383</a></span>
|
|
8429
8389
|
<span class="normal"><a href="#__codelineno-0-384">384</a></span>
|
|
8430
8390
|
<span class="normal"><a href="#__codelineno-0-385">385</a></span>
|
|
8431
|
-
<span class="normal"><a href="#__codelineno-0-386">386</a></span>
|
|
8432
|
-
<
|
|
8433
|
-
<
|
|
8434
|
-
<a id="__codelineno-0-371" name="__codelineno-0-371"></a><span class="
|
|
8435
|
-
<a id="__codelineno-0-372" name="__codelineno-0-372"></a
|
|
8436
|
-
<a id="__codelineno-0-373" name="__codelineno-0-373"></a><span class="
|
|
8437
|
-
<a id="__codelineno-0-374" name="__codelineno-0-374"></a>
|
|
8438
|
-
<a id="__codelineno-0-375" name="__codelineno-0-375"></a> <span class="
|
|
8439
|
-
<a id="__codelineno-0-376" name="__codelineno-0-376"></a> <span class="n">
|
|
8440
|
-
<a id="__codelineno-0-377" name="__codelineno-0-377"></a>
|
|
8441
|
-
<a id="__codelineno-0-378" name="__codelineno-0-378"></a>
|
|
8442
|
-
<a id="__codelineno-0-379" name="__codelineno-0-379"></a> <span class="
|
|
8443
|
-
<a id="__codelineno-0-380" name="__codelineno-0-380"></a>
|
|
8444
|
-
<a id="__codelineno-0-381" name="__codelineno-0-381"></a>
|
|
8445
|
-
<a id="__codelineno-0-382" name="__codelineno-0-382"></a> <span class="p">
|
|
8446
|
-
<a id="__codelineno-0-383" name="__codelineno-0-383"></a>
|
|
8447
|
-
<a id="__codelineno-0-384" name="__codelineno-0-384"></a>
|
|
8448
|
-
<a id="__codelineno-0-385" name="__codelineno-0-385"></a> <span class="n">
|
|
8449
|
-
<a id="__codelineno-0-386" name="__codelineno-0-386"></a> <span class="
|
|
8450
|
-
<a id="__codelineno-0-387" name="__codelineno-0-387"></a> <span class="n">help_text</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"help_text"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_helptext</span><span class="p">)</span>
|
|
8451
|
-
<a id="__codelineno-0-388" name="__codelineno-0-388"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">required</span><span class="o">=</span><span class="n">required</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="n">help_text</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
8391
|
+
<span class="normal"><a href="#__codelineno-0-386">386</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-368" name="__codelineno-0-368"></a><span class="k">class</span> <span class="nc">CommentField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">):</span>
|
|
8392
|
+
<a id="__codelineno-0-369" name="__codelineno-0-369"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8393
|
+
<a id="__codelineno-0-370" name="__codelineno-0-370"></a><span class="sd"> A textarea with support for Markdown rendering. Exists mostly just to add a standard help_text.</span>
|
|
8394
|
+
<a id="__codelineno-0-371" name="__codelineno-0-371"></a><span class="sd"> """</span>
|
|
8395
|
+
<a id="__codelineno-0-372" name="__codelineno-0-372"></a>
|
|
8396
|
+
<a id="__codelineno-0-373" name="__codelineno-0-373"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">django_forms</span><span class="o">.</span><span class="n">Textarea</span>
|
|
8397
|
+
<a id="__codelineno-0-374" name="__codelineno-0-374"></a> <span class="n">default_label</span> <span class="o">=</span> <span class="s2">""</span>
|
|
8398
|
+
<a id="__codelineno-0-375" name="__codelineno-0-375"></a> <span class="c1"># TODO: Port Markdown cheat sheet to internal documentation</span>
|
|
8399
|
+
<a id="__codelineno-0-376" name="__codelineno-0-376"></a> <span class="n">default_helptext</span> <span class="o">=</span> <span class="p">(</span>
|
|
8400
|
+
<a id="__codelineno-0-377" name="__codelineno-0-377"></a> <span class="s1">'<i class="mdi mdi-information-outline"></i> '</span>
|
|
8401
|
+
<a id="__codelineno-0-378" name="__codelineno-0-378"></a> <span class="s1">'<a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet" target="_blank">'</span>
|
|
8402
|
+
<a id="__codelineno-0-379" name="__codelineno-0-379"></a> <span class="s2">"Markdown</a> syntax is supported"</span>
|
|
8403
|
+
<a id="__codelineno-0-380" name="__codelineno-0-380"></a> <span class="p">)</span>
|
|
8404
|
+
<a id="__codelineno-0-381" name="__codelineno-0-381"></a>
|
|
8405
|
+
<a id="__codelineno-0-382" name="__codelineno-0-382"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
8406
|
+
<a id="__codelineno-0-383" name="__codelineno-0-383"></a> <span class="n">required</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"required"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
|
8407
|
+
<a id="__codelineno-0-384" name="__codelineno-0-384"></a> <span class="n">label</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"label"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_label</span><span class="p">)</span>
|
|
8408
|
+
<a id="__codelineno-0-385" name="__codelineno-0-385"></a> <span class="n">help_text</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"help_text"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_helptext</span><span class="p">)</span>
|
|
8409
|
+
<a id="__codelineno-0-386" name="__codelineno-0-386"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">required</span><span class="o">=</span><span class="n">required</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="n">help_text</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
8452
8410
|
</code></pre></div></td></tr></table></div>
|
|
8453
8411
|
</details>
|
|
8454
8412
|
|
|
@@ -9248,7 +9206,9 @@ rendered only with choices set via bound data. Choices are populated on-demand v
|
|
|
9248
9206
|
|
|
9249
9207
|
<details class="quote">
|
|
9250
9208
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9251
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9209
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-553">553</a></span>
|
|
9210
|
+
<span class="normal"><a href="#__codelineno-0-554">554</a></span>
|
|
9211
|
+
<span class="normal"><a href="#__codelineno-0-555">555</a></span>
|
|
9252
9212
|
<span class="normal"><a href="#__codelineno-0-556">556</a></span>
|
|
9253
9213
|
<span class="normal"><a href="#__codelineno-0-557">557</a></span>
|
|
9254
9214
|
<span class="normal"><a href="#__codelineno-0-558">558</a></span>
|
|
@@ -9259,22 +9219,20 @@ rendered only with choices set via bound data. Choices are populated on-demand v
|
|
|
9259
9219
|
<span class="normal"><a href="#__codelineno-0-563">563</a></span>
|
|
9260
9220
|
<span class="normal"><a href="#__codelineno-0-564">564</a></span>
|
|
9261
9221
|
<span class="normal"><a href="#__codelineno-0-565">565</a></span>
|
|
9262
|
-
<span class="normal"><a href="#__codelineno-0-566">566</a></span>
|
|
9263
|
-
<
|
|
9264
|
-
<
|
|
9265
|
-
<a id="__codelineno-0-556" name="__codelineno-0-556"></a><span class="
|
|
9266
|
-
<a id="__codelineno-0-557" name="__codelineno-0-557"></a><span class="sd">
|
|
9267
|
-
<a id="__codelineno-0-558" name="__codelineno-0-558"></a
|
|
9268
|
-
<a id="__codelineno-0-559" name="__codelineno-0-559"></a><span class="
|
|
9269
|
-
<a id="__codelineno-0-560" name="__codelineno-0-560"></a>
|
|
9270
|
-
<a id="__codelineno-0-561" name="__codelineno-0-561"></a
|
|
9271
|
-
<a id="__codelineno-0-562" name="__codelineno-0-562"></a><span class="
|
|
9272
|
-
<a id="__codelineno-0-563" name="__codelineno-0-563"></a><span class="sd">
|
|
9273
|
-
<a id="__codelineno-0-564" name="__codelineno-0-564"></a><span class="
|
|
9274
|
-
<a id="__codelineno-0-565" name="__codelineno-0-565"></a
|
|
9275
|
-
<a id="__codelineno-0-566" name="__codelineno-0-566"></a> <span class="k">
|
|
9276
|
-
<a id="__codelineno-0-567" name="__codelineno-0-567"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
9277
|
-
<a id="__codelineno-0-568" name="__codelineno-0-568"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9222
|
+
<span class="normal"><a href="#__codelineno-0-566">566</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-553" name="__codelineno-0-553"></a><span class="k">class</span> <span class="nc">DynamicModelChoiceField</span><span class="p">(</span><span class="n">DynamicModelChoiceMixin</span><span class="p">,</span> <span class="n">django_forms</span><span class="o">.</span><span class="n">ModelChoiceField</span><span class="p">):</span>
|
|
9223
|
+
<a id="__codelineno-0-554" name="__codelineno-0-554"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9224
|
+
<a id="__codelineno-0-555" name="__codelineno-0-555"></a><span class="sd"> Override get_bound_field() to avoid pre-populating field choices with a SQL query. The field will be</span>
|
|
9225
|
+
<a id="__codelineno-0-556" name="__codelineno-0-556"></a><span class="sd"> rendered only with choices set via bound data. Choices are populated on-demand via the APISelect widget.</span>
|
|
9226
|
+
<a id="__codelineno-0-557" name="__codelineno-0-557"></a><span class="sd"> """</span>
|
|
9227
|
+
<a id="__codelineno-0-558" name="__codelineno-0-558"></a>
|
|
9228
|
+
<a id="__codelineno-0-559" name="__codelineno-0-559"></a> <span class="k">def</span> <span class="nf">clean</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9229
|
+
<a id="__codelineno-0-560" name="__codelineno-0-560"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9230
|
+
<a id="__codelineno-0-561" name="__codelineno-0-561"></a><span class="sd"> When null option is enabled and "None" is sent as part of a form to be submitted, it is sent as the</span>
|
|
9231
|
+
<a id="__codelineno-0-562" name="__codelineno-0-562"></a><span class="sd"> string 'null'. This will check for that condition and gracefully handle the conversion to a NoneType.</span>
|
|
9232
|
+
<a id="__codelineno-0-563" name="__codelineno-0-563"></a><span class="sd"> """</span>
|
|
9233
|
+
<a id="__codelineno-0-564" name="__codelineno-0-564"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_option</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">value</span> <span class="o">==</span> <span class="n">settings</span><span class="o">.</span><span class="n">FILTERS_NULL_CHOICE_VALUE</span><span class="p">:</span>
|
|
9234
|
+
<a id="__codelineno-0-565" name="__codelineno-0-565"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
9235
|
+
<a id="__codelineno-0-566" name="__codelineno-0-566"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9278
9236
|
</code></pre></div></td></tr></table></div>
|
|
9279
9237
|
</details>
|
|
9280
9238
|
|
|
@@ -9308,21 +9266,21 @@ string 'null'. This will check for that condition and gracefully handle the con
|
|
|
9308
9266
|
|
|
9309
9267
|
<details class="quote">
|
|
9310
9268
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9311
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9269
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-559">559</a></span>
|
|
9270
|
+
<span class="normal"><a href="#__codelineno-0-560">560</a></span>
|
|
9271
|
+
<span class="normal"><a href="#__codelineno-0-561">561</a></span>
|
|
9312
9272
|
<span class="normal"><a href="#__codelineno-0-562">562</a></span>
|
|
9313
9273
|
<span class="normal"><a href="#__codelineno-0-563">563</a></span>
|
|
9314
9274
|
<span class="normal"><a href="#__codelineno-0-564">564</a></span>
|
|
9315
9275
|
<span class="normal"><a href="#__codelineno-0-565">565</a></span>
|
|
9316
|
-
<span class="normal"><a href="#__codelineno-0-566">566</a></span>
|
|
9317
|
-
<
|
|
9318
|
-
<
|
|
9319
|
-
<a id="__codelineno-0-562" name="__codelineno-0-562"></a><span class="
|
|
9320
|
-
<a id="__codelineno-0-563" name="__codelineno-0-563"></a><span class="sd">
|
|
9321
|
-
<a id="__codelineno-0-564" name="__codelineno-0-564"></a><span class="
|
|
9322
|
-
<a id="__codelineno-0-565" name="__codelineno-0-565"></a
|
|
9323
|
-
<a id="__codelineno-0-566" name="__codelineno-0-566"></a> <span class="k">
|
|
9324
|
-
<a id="__codelineno-0-567" name="__codelineno-0-567"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
9325
|
-
<a id="__codelineno-0-568" name="__codelineno-0-568"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9276
|
+
<span class="normal"><a href="#__codelineno-0-566">566</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-559" name="__codelineno-0-559"></a><span class="k">def</span> <span class="nf">clean</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9277
|
+
<a id="__codelineno-0-560" name="__codelineno-0-560"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9278
|
+
<a id="__codelineno-0-561" name="__codelineno-0-561"></a><span class="sd"> When null option is enabled and "None" is sent as part of a form to be submitted, it is sent as the</span>
|
|
9279
|
+
<a id="__codelineno-0-562" name="__codelineno-0-562"></a><span class="sd"> string 'null'. This will check for that condition and gracefully handle the conversion to a NoneType.</span>
|
|
9280
|
+
<a id="__codelineno-0-563" name="__codelineno-0-563"></a><span class="sd"> """</span>
|
|
9281
|
+
<a id="__codelineno-0-564" name="__codelineno-0-564"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_option</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">value</span> <span class="o">==</span> <span class="n">settings</span><span class="o">.</span><span class="n">FILTERS_NULL_CHOICE_VALUE</span><span class="p">:</span>
|
|
9282
|
+
<a id="__codelineno-0-565" name="__codelineno-0-565"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
9283
|
+
<a id="__codelineno-0-566" name="__codelineno-0-566"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9326
9284
|
</code></pre></div></td></tr></table></div>
|
|
9327
9285
|
</details>
|
|
9328
9286
|
</div>
|
|
@@ -9361,7 +9319,9 @@ string 'null'. This will check for that condition and gracefully handle the con
|
|
|
9361
9319
|
|
|
9362
9320
|
<details class="quote">
|
|
9363
9321
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9364
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9322
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-437">437</a></span>
|
|
9323
|
+
<span class="normal"><a href="#__codelineno-0-438">438</a></span>
|
|
9324
|
+
<span class="normal"><a href="#__codelineno-0-439">439</a></span>
|
|
9365
9325
|
<span class="normal"><a href="#__codelineno-0-440">440</a></span>
|
|
9366
9326
|
<span class="normal"><a href="#__codelineno-0-441">441</a></span>
|
|
9367
9327
|
<span class="normal"><a href="#__codelineno-0-442">442</a></span>
|
|
@@ -9472,122 +9432,120 @@ string 'null'. This will check for that condition and gracefully handle the con
|
|
|
9472
9432
|
<span class="normal"><a href="#__codelineno-0-547">547</a></span>
|
|
9473
9433
|
<span class="normal"><a href="#__codelineno-0-548">548</a></span>
|
|
9474
9434
|
<span class="normal"><a href="#__codelineno-0-549">549</a></span>
|
|
9475
|
-
<span class="normal"><a href="#__codelineno-0-550">550</a></span>
|
|
9476
|
-
<
|
|
9477
|
-
<
|
|
9478
|
-
<a id="__codelineno-0-440" name="__codelineno-0-440"></a><span class="
|
|
9479
|
-
<a id="__codelineno-0-441" name="__codelineno-0-441"></a><span class="sd"> :param
|
|
9480
|
-
<a id="__codelineno-0-442" name="__codelineno-0-442"></a><span class="sd"> :param
|
|
9481
|
-
<a id="__codelineno-0-443" name="__codelineno-0-443"></a><span class="sd"> :param
|
|
9482
|
-
<a id="__codelineno-0-444" name="__codelineno-0-444"></a><span class="sd">
|
|
9483
|
-
<a id="__codelineno-0-445" name="__codelineno-0-445"></a><span class="sd"> :param
|
|
9484
|
-
<a id="__codelineno-0-446" name="__codelineno-0-446"></a><span class="sd">
|
|
9485
|
-
<a id="__codelineno-0-447" name="__codelineno-0-447"></a
|
|
9486
|
-
<a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="
|
|
9487
|
-
<a id="__codelineno-0-449" name="__codelineno-0-449"></a>
|
|
9488
|
-
<a id="__codelineno-0-450" name="__codelineno-0-450"></a>
|
|
9489
|
-
<a id="__codelineno-0-451" name="__codelineno-0-451"></a> <span class="
|
|
9490
|
-
<a id="__codelineno-0-452" name="__codelineno-0-452"></a>
|
|
9491
|
-
<a id="__codelineno-0-453" name="__codelineno-0-453"></a>
|
|
9492
|
-
<a id="__codelineno-0-454" name="__codelineno-0-454"></a> <span class="
|
|
9493
|
-
<a id="__codelineno-0-455" name="__codelineno-0-455"></a> <span class="n">
|
|
9494
|
-
<a id="__codelineno-0-456" name="__codelineno-0-456"></a> <span class="n">
|
|
9495
|
-
<a id="__codelineno-0-457" name="__codelineno-0-457"></a> <span class="n">
|
|
9496
|
-
<a id="__codelineno-0-458" name="__codelineno-0-458"></a> <span class="n">
|
|
9497
|
-
<a id="__codelineno-0-459" name="__codelineno-0-459"></a> <span class="
|
|
9498
|
-
<a id="__codelineno-0-460" name="__codelineno-0-460"></a> <span class="
|
|
9499
|
-
<a id="__codelineno-0-461" name="__codelineno-0-461"></a>
|
|
9500
|
-
<a id="__codelineno-0-462" name="__codelineno-0-462"></a> <span class="o"
|
|
9501
|
-
<a id="__codelineno-0-463" name="__codelineno-0-463"></a>
|
|
9502
|
-
<a id="__codelineno-0-464" name="__codelineno-0-464"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
9503
|
-
<a id="__codelineno-0-465" name="__codelineno-0-465"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
9504
|
-
<a id="__codelineno-0-466" name="__codelineno-0-466"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
9505
|
-
<a id="__codelineno-0-467" name="__codelineno-0-467"></a> <span class="bp">self</span><span class="o">.</span><span class="n">
|
|
9506
|
-
<a id="__codelineno-0-468" name="__codelineno-0-468"></a>
|
|
9507
|
-
<a id="__codelineno-0-469" name="__codelineno-0-469"></a> <span class="
|
|
9508
|
-
<a id="__codelineno-0-470" name="__codelineno-0-470"></a>
|
|
9509
|
-
<a id="__codelineno-0-471" name="__codelineno-0-471"></a> <span class="
|
|
9510
|
-
<a id="__codelineno-0-472" name="__codelineno-0-472"></a>
|
|
9511
|
-
<a id="__codelineno-0-473" name="__codelineno-0-473"></a> <span class="
|
|
9435
|
+
<span class="normal"><a href="#__codelineno-0-550">550</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-437" name="__codelineno-0-437"></a><span class="k">class</span> <span class="nc">DynamicModelChoiceMixin</span><span class="p">:</span>
|
|
9436
|
+
<a id="__codelineno-0-438" name="__codelineno-0-438"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9437
|
+
<a id="__codelineno-0-439" name="__codelineno-0-439"></a><span class="sd"> :param display_field: The name of the attribute of an API response object to display in the selection list</span>
|
|
9438
|
+
<a id="__codelineno-0-440" name="__codelineno-0-440"></a><span class="sd"> :param query_params: A dictionary of additional key/value pairs to attach to the API request</span>
|
|
9439
|
+
<a id="__codelineno-0-441" name="__codelineno-0-441"></a><span class="sd"> :param initial_params: A dictionary of child field references to use for selecting a parent field's initial value</span>
|
|
9440
|
+
<a id="__codelineno-0-442" name="__codelineno-0-442"></a><span class="sd"> :param null_option: The string used to represent a null selection (if any)</span>
|
|
9441
|
+
<a id="__codelineno-0-443" name="__codelineno-0-443"></a><span class="sd"> :param disabled_indicator: The name of the field which, if populated, will disable selection of the</span>
|
|
9442
|
+
<a id="__codelineno-0-444" name="__codelineno-0-444"></a><span class="sd"> choice (optional)</span>
|
|
9443
|
+
<a id="__codelineno-0-445" name="__codelineno-0-445"></a><span class="sd"> :param depth: Nested serialization depth when making API requests (default: `0` or a flat representation)</span>
|
|
9444
|
+
<a id="__codelineno-0-446" name="__codelineno-0-446"></a><span class="sd"> """</span>
|
|
9445
|
+
<a id="__codelineno-0-447" name="__codelineno-0-447"></a>
|
|
9446
|
+
<a id="__codelineno-0-448" name="__codelineno-0-448"></a> <span class="nb">filter</span> <span class="o">=</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">ModelChoiceFilter</span> <span class="c1"># 2.0 TODO(Glenn): can we rename this? pylint: disable=redefined-builtin</span>
|
|
9447
|
+
<a id="__codelineno-0-449" name="__codelineno-0-449"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">APISelect</span>
|
|
9448
|
+
<a id="__codelineno-0-450" name="__codelineno-0-450"></a>
|
|
9449
|
+
<a id="__codelineno-0-451" name="__codelineno-0-451"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
|
9450
|
+
<a id="__codelineno-0-452" name="__codelineno-0-452"></a> <span class="bp">self</span><span class="p">,</span>
|
|
9451
|
+
<a id="__codelineno-0-453" name="__codelineno-0-453"></a> <span class="n">display_field</span><span class="o">=</span><span class="s2">"display"</span><span class="p">,</span>
|
|
9452
|
+
<a id="__codelineno-0-454" name="__codelineno-0-454"></a> <span class="n">query_params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
9453
|
+
<a id="__codelineno-0-455" name="__codelineno-0-455"></a> <span class="n">initial_params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
9454
|
+
<a id="__codelineno-0-456" name="__codelineno-0-456"></a> <span class="n">null_option</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
9455
|
+
<a id="__codelineno-0-457" name="__codelineno-0-457"></a> <span class="n">disabled_indicator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
9456
|
+
<a id="__codelineno-0-458" name="__codelineno-0-458"></a> <span class="n">depth</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
|
9457
|
+
<a id="__codelineno-0-459" name="__codelineno-0-459"></a> <span class="o">*</span><span class="n">args</span><span class="p">,</span>
|
|
9458
|
+
<a id="__codelineno-0-460" name="__codelineno-0-460"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
9459
|
+
<a id="__codelineno-0-461" name="__codelineno-0-461"></a> <span class="p">):</span>
|
|
9460
|
+
<a id="__codelineno-0-462" name="__codelineno-0-462"></a> <span class="bp">self</span><span class="o">.</span><span class="n">display_field</span> <span class="o">=</span> <span class="n">display_field</span>
|
|
9461
|
+
<a id="__codelineno-0-463" name="__codelineno-0-463"></a> <span class="bp">self</span><span class="o">.</span><span class="n">query_params</span> <span class="o">=</span> <span class="n">query_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
9462
|
+
<a id="__codelineno-0-464" name="__codelineno-0-464"></a> <span class="bp">self</span><span class="o">.</span><span class="n">initial_params</span> <span class="o">=</span> <span class="n">initial_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
9463
|
+
<a id="__codelineno-0-465" name="__codelineno-0-465"></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_option</span> <span class="o">=</span> <span class="n">null_option</span>
|
|
9464
|
+
<a id="__codelineno-0-466" name="__codelineno-0-466"></a> <span class="bp">self</span><span class="o">.</span><span class="n">disabled_indicator</span> <span class="o">=</span> <span class="n">disabled_indicator</span>
|
|
9465
|
+
<a id="__codelineno-0-467" name="__codelineno-0-467"></a> <span class="bp">self</span><span class="o">.</span><span class="n">depth</span> <span class="o">=</span> <span class="n">depth</span>
|
|
9466
|
+
<a id="__codelineno-0-468" name="__codelineno-0-468"></a>
|
|
9467
|
+
<a id="__codelineno-0-469" name="__codelineno-0-469"></a> <span class="c1"># to_field_name is set by ModelChoiceField.__init__(), but we need to set it early for reference</span>
|
|
9468
|
+
<a id="__codelineno-0-470" name="__codelineno-0-470"></a> <span class="c1"># by widget_attrs()</span>
|
|
9469
|
+
<a id="__codelineno-0-471" name="__codelineno-0-471"></a> <span class="bp">self</span><span class="o">.</span><span class="n">to_field_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"to_field_name"</span><span class="p">)</span>
|
|
9470
|
+
<a id="__codelineno-0-472" name="__codelineno-0-472"></a>
|
|
9471
|
+
<a id="__codelineno-0-473" name="__codelineno-0-473"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
9512
9472
|
<a id="__codelineno-0-474" name="__codelineno-0-474"></a>
|
|
9513
|
-
<a id="__codelineno-0-475" name="__codelineno-0-475"></a>
|
|
9514
|
-
<a id="__codelineno-0-476" name="__codelineno-0-476"></a>
|
|
9515
|
-
<a id="__codelineno-0-477" name="__codelineno-0-477"></a>
|
|
9516
|
-
<a id="__codelineno-0-478" name="__codelineno-0-478"></a> <span class="
|
|
9517
|
-
<a id="__codelineno-0-479" name="__codelineno-0-479"></a>
|
|
9518
|
-
<a id="__codelineno-0-480" name="__codelineno-0-480"></a> <span class="
|
|
9519
|
-
<a id="__codelineno-0-481" name="__codelineno-0-481"></a>
|
|
9520
|
-
<a id="__codelineno-0-482" name="__codelineno-0-482"></a>
|
|
9521
|
-
<a id="__codelineno-0-483" name="__codelineno-0-483"></a>
|
|
9522
|
-
<a id="__codelineno-0-484" name="__codelineno-0-484"></a>
|
|
9523
|
-
<a id="__codelineno-0-485" name="__codelineno-0-485"></a>
|
|
9524
|
-
<a id="__codelineno-0-486" name="__codelineno-0-486"></a>
|
|
9525
|
-
<a id="__codelineno-0-487" name="__codelineno-0-487"></a>
|
|
9526
|
-
<a id="__codelineno-0-488" name="__codelineno-0-488"></a>
|
|
9527
|
-
<a id="__codelineno-0-489" name="__codelineno-0-489"></a>
|
|
9528
|
-
<a id="__codelineno-0-490" name="__codelineno-0-490"></a>
|
|
9529
|
-
<a id="__codelineno-0-491" name="__codelineno-0-491"></a>
|
|
9530
|
-
<a id="__codelineno-0-492" name="__codelineno-0-492"></a>
|
|
9531
|
-
<a id="__codelineno-0-493" name="__codelineno-0-493"></a>
|
|
9532
|
-
<a id="__codelineno-0-494" name="__codelineno-0-494"></a>
|
|
9533
|
-
<a id="__codelineno-0-495" name="__codelineno-0-495"></a> <span class="
|
|
9534
|
-
<a id="__codelineno-0-496" name="__codelineno-0-496"></a>
|
|
9535
|
-
<a id="__codelineno-0-497" name="__codelineno-0-497"></a>
|
|
9536
|
-
<a id="__codelineno-0-498" name="__codelineno-0-498"></a>
|
|
9537
|
-
<a id="__codelineno-0-499" name="__codelineno-0-499"></a>
|
|
9473
|
+
<a id="__codelineno-0-475" name="__codelineno-0-475"></a> <span class="k">def</span> <span class="nf">widget_attrs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
|
|
9474
|
+
<a id="__codelineno-0-476" name="__codelineno-0-476"></a> <span class="n">attrs</span> <span class="o">=</span> <span class="p">{</span>
|
|
9475
|
+
<a id="__codelineno-0-477" name="__codelineno-0-477"></a> <span class="s2">"display-field"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_field</span><span class="p">,</span>
|
|
9476
|
+
<a id="__codelineno-0-478" name="__codelineno-0-478"></a> <span class="p">}</span>
|
|
9477
|
+
<a id="__codelineno-0-479" name="__codelineno-0-479"></a>
|
|
9478
|
+
<a id="__codelineno-0-480" name="__codelineno-0-480"></a> <span class="c1"># Set value-field attribute if the field specifies to_field_name</span>
|
|
9479
|
+
<a id="__codelineno-0-481" name="__codelineno-0-481"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_field_name</span><span class="p">:</span>
|
|
9480
|
+
<a id="__codelineno-0-482" name="__codelineno-0-482"></a> <span class="n">attrs</span><span class="p">[</span><span class="s2">"value-field"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_field_name</span>
|
|
9481
|
+
<a id="__codelineno-0-483" name="__codelineno-0-483"></a>
|
|
9482
|
+
<a id="__codelineno-0-484" name="__codelineno-0-484"></a> <span class="c1"># Set the string used to represent a null option</span>
|
|
9483
|
+
<a id="__codelineno-0-485" name="__codelineno-0-485"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_option</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
9484
|
+
<a id="__codelineno-0-486" name="__codelineno-0-486"></a> <span class="n">attrs</span><span class="p">[</span><span class="s2">"data-null-option"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_option</span>
|
|
9485
|
+
<a id="__codelineno-0-487" name="__codelineno-0-487"></a>
|
|
9486
|
+
<a id="__codelineno-0-488" name="__codelineno-0-488"></a> <span class="c1"># Set the disabled indicator, if any</span>
|
|
9487
|
+
<a id="__codelineno-0-489" name="__codelineno-0-489"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">disabled_indicator</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
9488
|
+
<a id="__codelineno-0-490" name="__codelineno-0-490"></a> <span class="n">attrs</span><span class="p">[</span><span class="s2">"disabled-indicator"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">disabled_indicator</span>
|
|
9489
|
+
<a id="__codelineno-0-491" name="__codelineno-0-491"></a>
|
|
9490
|
+
<a id="__codelineno-0-492" name="__codelineno-0-492"></a> <span class="c1"># Toggle depth</span>
|
|
9491
|
+
<a id="__codelineno-0-493" name="__codelineno-0-493"></a> <span class="n">attrs</span><span class="p">[</span><span class="s2">"data-depth"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">depth</span>
|
|
9492
|
+
<a id="__codelineno-0-494" name="__codelineno-0-494"></a>
|
|
9493
|
+
<a id="__codelineno-0-495" name="__codelineno-0-495"></a> <span class="c1"># Attach any static query parameters</span>
|
|
9494
|
+
<a id="__codelineno-0-496" name="__codelineno-0-496"></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_params</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
9495
|
+
<a id="__codelineno-0-497" name="__codelineno-0-497"></a> <span class="n">widget</span><span class="o">.</span><span class="n">add_query_param</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
|
9496
|
+
<a id="__codelineno-0-498" name="__codelineno-0-498"></a>
|
|
9497
|
+
<a id="__codelineno-0-499" name="__codelineno-0-499"></a> <span class="k">return</span> <span class="n">attrs</span>
|
|
9538
9498
|
<a id="__codelineno-0-500" name="__codelineno-0-500"></a>
|
|
9539
|
-
<a id="__codelineno-0-501" name="__codelineno-0-501"></a>
|
|
9540
|
-
<a id="__codelineno-0-502" name="__codelineno-0-502"></a>
|
|
9541
|
-
<a id="__codelineno-0-503" name="__codelineno-0-503"></a
|
|
9542
|
-
<a id="__codelineno-0-504" name="__codelineno-0-504"></a
|
|
9543
|
-
<a id="__codelineno-0-505" name="__codelineno-0-505"></a><span class="sd">
|
|
9544
|
-
<a id="__codelineno-0-506" name="__codelineno-0-506"></a>
|
|
9545
|
-
<a id="__codelineno-0-507" name="__codelineno-0-507"></a><span class="sd">
|
|
9546
|
-
<a id="__codelineno-0-508" name="__codelineno-0-508"></a><span class="sd">
|
|
9547
|
-
<a id="__codelineno-0-509" name="__codelineno-0-509"></a
|
|
9548
|
-
<a id="__codelineno-0-510" name="__codelineno-0-510"></a
|
|
9549
|
-
<a id="__codelineno-0-511" name="__codelineno-0-511"></a>
|
|
9550
|
-
<a id="__codelineno-0-512" name="__codelineno-0-512"></a> <span class="k">
|
|
9551
|
-
<a id="__codelineno-0-513" name="__codelineno-0-513"></a> <span class="
|
|
9552
|
-
<a id="__codelineno-0-514" name="__codelineno-0-514"></a>
|
|
9553
|
-
<a id="__codelineno-0-515" name="__codelineno-0-515"></a>
|
|
9554
|
-
<a id="__codelineno-0-516" name="__codelineno-0-516"></a>
|
|
9555
|
-
<a id="__codelineno-0-517" name="__codelineno-0-517"></a>
|
|
9556
|
-
<a id="__codelineno-0-518" name="__codelineno-0-518"></a>
|
|
9557
|
-
<a id="__codelineno-0-519" name="__codelineno-0-519"></a> <span class="
|
|
9558
|
-
<a id="__codelineno-0-520" name="__codelineno-0-520"></a>
|
|
9559
|
-
<a id="__codelineno-0-521" name="__codelineno-0-521"></a>
|
|
9560
|
-
<a id="__codelineno-0-522" name="__codelineno-0-522"></a>
|
|
9561
|
-
<a id="__codelineno-0-523" name="__codelineno-0-523"></a>
|
|
9562
|
-
<a id="__codelineno-0-524" name="__codelineno-0-524"></a>
|
|
9563
|
-
<a id="__codelineno-0-525" name="__codelineno-0-525"></a>
|
|
9564
|
-
<a id="__codelineno-0-526" name="__codelineno-0-526"></a>
|
|
9565
|
-
<a id="__codelineno-0-527" name="__codelineno-0-527"></a>
|
|
9566
|
-
<a id="__codelineno-0-528" name="__codelineno-0-528"></a>
|
|
9567
|
-
<a id="__codelineno-0-529" name="__codelineno-0-529"></a>
|
|
9568
|
-
<a id="__codelineno-0-530" name="__codelineno-0-530"></a>
|
|
9569
|
-
<a id="__codelineno-0-531" name="__codelineno-0-531"></a> <span class="
|
|
9570
|
-
<a id="__codelineno-0-532" name="__codelineno-0-532"></a> <span class="
|
|
9571
|
-
<a id="__codelineno-0-533" name="__codelineno-0-533"></a>
|
|
9572
|
-
<a id="__codelineno-0-534" name="__codelineno-0-534"></a>
|
|
9573
|
-
<a id="__codelineno-0-535" name="__codelineno-0-535"></a> <span class="
|
|
9574
|
-
<a id="__codelineno-0-536" name="__codelineno-0-536"></a>
|
|
9575
|
-
<a id="__codelineno-0-537" name="__codelineno-0-537"></a> <span class="k">
|
|
9576
|
-
<a id="__codelineno-0-538" name="__codelineno-0-538"></a> <span class="
|
|
9577
|
-
<a id="__codelineno-0-539" name="__codelineno-0-539"></a>
|
|
9578
|
-
<a id="__codelineno-0-540" name="__codelineno-0-540"></a>
|
|
9579
|
-
<a id="__codelineno-0-541" name="__codelineno-0-541"></a>
|
|
9580
|
-
<a id="__codelineno-0-542" name="__codelineno-0-542"></a>
|
|
9581
|
-
<a id="__codelineno-0-543" name="__codelineno-0-543"></a>
|
|
9582
|
-
<a id="__codelineno-0-544" name="__codelineno-0-544"></a>
|
|
9583
|
-
<a id="__codelineno-0-545" name="__codelineno-0-545"></a> <span class="
|
|
9584
|
-
<a id="__codelineno-0-546" name="__codelineno-0-546"></a>
|
|
9585
|
-
<a id="__codelineno-0-547" name="__codelineno-0-547"></a>
|
|
9586
|
-
<a id="__codelineno-0-548" name="__codelineno-0-548"></a> <span class="n">
|
|
9587
|
-
<a id="__codelineno-0-549" name="__codelineno-0-549"></a>
|
|
9588
|
-
<a id="__codelineno-0-550" name="__codelineno-0-550"></a>
|
|
9589
|
-
<a id="__codelineno-0-551" name="__codelineno-0-551"></a>
|
|
9590
|
-
<a id="__codelineno-0-552" name="__codelineno-0-552"></a> <span class="k">return</span> <span class="n">bound_field</span>
|
|
9499
|
+
<a id="__codelineno-0-501" name="__codelineno-0-501"></a> <span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9500
|
+
<a id="__codelineno-0-502" name="__codelineno-0-502"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9501
|
+
<a id="__codelineno-0-503" name="__codelineno-0-503"></a><span class="sd"> Augment the behavior of forms.ModelChoiceField.prepare_value().</span>
|
|
9502
|
+
<a id="__codelineno-0-504" name="__codelineno-0-504"></a>
|
|
9503
|
+
<a id="__codelineno-0-505" name="__codelineno-0-505"></a><span class="sd"> Specifically, if `value` is a PK, but we have `to_field_name` set, we need to look up the model instance</span>
|
|
9504
|
+
<a id="__codelineno-0-506" name="__codelineno-0-506"></a><span class="sd"> from the given PK, so that the base class will get the appropriate field value rather than just keeping the PK,</span>
|
|
9505
|
+
<a id="__codelineno-0-507" name="__codelineno-0-507"></a><span class="sd"> because the rendered form field needs this in order to correctly prepopulate a default selection.</span>
|
|
9506
|
+
<a id="__codelineno-0-508" name="__codelineno-0-508"></a><span class="sd"> """</span>
|
|
9507
|
+
<a id="__codelineno-0-509" name="__codelineno-0-509"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_field_name</span> <span class="ow">and</span> <span class="n">data_utils</span><span class="o">.</span><span class="n">is_uuid</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
|
|
9508
|
+
<a id="__codelineno-0-510" name="__codelineno-0-510"></a> <span class="k">try</span><span class="p">:</span>
|
|
9509
|
+
<a id="__codelineno-0-511" name="__codelineno-0-511"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
|
|
9510
|
+
<a id="__codelineno-0-512" name="__codelineno-0-512"></a> <span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span>
|
|
9511
|
+
<a id="__codelineno-0-513" name="__codelineno-0-513"></a> <span class="k">pass</span>
|
|
9512
|
+
<a id="__codelineno-0-514" name="__codelineno-0-514"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9513
|
+
<a id="__codelineno-0-515" name="__codelineno-0-515"></a>
|
|
9514
|
+
<a id="__codelineno-0-516" name="__codelineno-0-516"></a> <span class="k">def</span> <span class="nf">get_bound_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
|
9515
|
+
<a id="__codelineno-0-517" name="__codelineno-0-517"></a> <span class="n">bound_field</span> <span class="o">=</span> <span class="n">BoundField</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">)</span>
|
|
9516
|
+
<a id="__codelineno-0-518" name="__codelineno-0-518"></a>
|
|
9517
|
+
<a id="__codelineno-0-519" name="__codelineno-0-519"></a> <span class="c1"># Set initial value based on prescribed child fields (if not already set)</span>
|
|
9518
|
+
<a id="__codelineno-0-520" name="__codelineno-0-520"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">initial</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">initial_params</span><span class="p">:</span>
|
|
9519
|
+
<a id="__codelineno-0-521" name="__codelineno-0-521"></a> <span class="n">filter_kwargs</span> <span class="o">=</span> <span class="p">{}</span>
|
|
9520
|
+
<a id="__codelineno-0-522" name="__codelineno-0-522"></a> <span class="k">for</span> <span class="n">kwarg</span><span class="p">,</span> <span class="n">child_field</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">initial_params</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
9521
|
+
<a id="__codelineno-0-523" name="__codelineno-0-523"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">initial</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">child_field</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">"$"</span><span class="p">))</span>
|
|
9522
|
+
<a id="__codelineno-0-524" name="__codelineno-0-524"></a> <span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
|
9523
|
+
<a id="__codelineno-0-525" name="__codelineno-0-525"></a> <span class="n">filter_kwargs</span><span class="p">[</span><span class="n">kwarg</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
|
9524
|
+
<a id="__codelineno-0-526" name="__codelineno-0-526"></a> <span class="k">if</span> <span class="n">filter_kwargs</span><span class="p">:</span>
|
|
9525
|
+
<a id="__codelineno-0-527" name="__codelineno-0-527"></a> <span class="bp">self</span><span class="o">.</span><span class="n">initial</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="o">**</span><span class="n">filter_kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
|
|
9526
|
+
<a id="__codelineno-0-528" name="__codelineno-0-528"></a>
|
|
9527
|
+
<a id="__codelineno-0-529" name="__codelineno-0-529"></a> <span class="c1"># Modify the QuerySet of the field before we return it. Limit choices to any data already bound: Options</span>
|
|
9528
|
+
<a id="__codelineno-0-530" name="__codelineno-0-530"></a> <span class="c1"># will be populated on-demand via the APISelect widget.</span>
|
|
9529
|
+
<a id="__codelineno-0-531" name="__codelineno-0-531"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">bound_field</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
|
|
9530
|
+
<a id="__codelineno-0-532" name="__codelineno-0-532"></a> <span class="k">if</span> <span class="n">data</span><span class="p">:</span>
|
|
9531
|
+
<a id="__codelineno-0-533" name="__codelineno-0-533"></a> <span class="n">field_name</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"to_field_name"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"pk"</span>
|
|
9532
|
+
<a id="__codelineno-0-534" name="__codelineno-0-534"></a> <span class="n">filter_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">field_name</span><span class="o">=</span><span class="n">field_name</span><span class="p">)</span>
|
|
9533
|
+
<a id="__codelineno-0-535" name="__codelineno-0-535"></a> <span class="k">try</span><span class="p">:</span>
|
|
9534
|
+
<a id="__codelineno-0-536" name="__codelineno-0-536"></a> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span> <span class="o">=</span> <span class="n">filter_</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
9535
|
+
<a id="__codelineno-0-537" name="__codelineno-0-537"></a> <span class="k">except</span> <span class="p">(</span><span class="ne">TypeError</span><span class="p">,</span> <span class="n">ValidationError</span><span class="p">):</span>
|
|
9536
|
+
<a id="__codelineno-0-538" name="__codelineno-0-538"></a> <span class="c1"># Catch any error caused by invalid initial data passed from the user</span>
|
|
9537
|
+
<a id="__codelineno-0-539" name="__codelineno-0-539"></a> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">none</span><span class="p">()</span>
|
|
9538
|
+
<a id="__codelineno-0-540" name="__codelineno-0-540"></a> <span class="k">else</span><span class="p">:</span>
|
|
9539
|
+
<a id="__codelineno-0-541" name="__codelineno-0-541"></a> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">none</span><span class="p">()</span>
|
|
9540
|
+
<a id="__codelineno-0-542" name="__codelineno-0-542"></a>
|
|
9541
|
+
<a id="__codelineno-0-543" name="__codelineno-0-543"></a> <span class="c1"># Set the data URL on the APISelect widget (if not already set)</span>
|
|
9542
|
+
<a id="__codelineno-0-544" name="__codelineno-0-544"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">bound_field</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">widget</span>
|
|
9543
|
+
<a id="__codelineno-0-545" name="__codelineno-0-545"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"data-url"</span><span class="p">):</span>
|
|
9544
|
+
<a id="__codelineno-0-546" name="__codelineno-0-546"></a> <span class="n">route</span> <span class="o">=</span> <span class="n">lookup</span><span class="o">.</span><span class="n">get_route_for_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="s2">"list"</span><span class="p">,</span> <span class="n">api</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
9545
|
+
<a id="__codelineno-0-547" name="__codelineno-0-547"></a> <span class="n">data_url</span> <span class="o">=</span> <span class="n">reverse</span><span class="p">(</span><span class="n">route</span><span class="p">)</span>
|
|
9546
|
+
<a id="__codelineno-0-548" name="__codelineno-0-548"></a> <span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"data-url"</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_url</span>
|
|
9547
|
+
<a id="__codelineno-0-549" name="__codelineno-0-549"></a>
|
|
9548
|
+
<a id="__codelineno-0-550" name="__codelineno-0-550"></a> <span class="k">return</span> <span class="n">bound_field</span>
|
|
9591
9549
|
</code></pre></div></td></tr></table></div>
|
|
9592
9550
|
</details>
|
|
9593
9551
|
|
|
@@ -9623,7 +9581,9 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9623
9581
|
|
|
9624
9582
|
<details class="quote">
|
|
9625
9583
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9626
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9584
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-501">501</a></span>
|
|
9585
|
+
<span class="normal"><a href="#__codelineno-0-502">502</a></span>
|
|
9586
|
+
<span class="normal"><a href="#__codelineno-0-503">503</a></span>
|
|
9627
9587
|
<span class="normal"><a href="#__codelineno-0-504">504</a></span>
|
|
9628
9588
|
<span class="normal"><a href="#__codelineno-0-505">505</a></span>
|
|
9629
9589
|
<span class="normal"><a href="#__codelineno-0-506">506</a></span>
|
|
@@ -9634,22 +9594,20 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9634
9594
|
<span class="normal"><a href="#__codelineno-0-511">511</a></span>
|
|
9635
9595
|
<span class="normal"><a href="#__codelineno-0-512">512</a></span>
|
|
9636
9596
|
<span class="normal"><a href="#__codelineno-0-513">513</a></span>
|
|
9637
|
-
<span class="normal"><a href="#__codelineno-0-514">514</a></span>
|
|
9638
|
-
<
|
|
9639
|
-
<
|
|
9640
|
-
<a id="__codelineno-0-504" name="__codelineno-0-504"></a
|
|
9641
|
-
<a id="__codelineno-0-505" name="__codelineno-0-505"></a><span class="sd">
|
|
9642
|
-
<a id="__codelineno-0-506" name="__codelineno-0-506"></a>
|
|
9643
|
-
<a id="__codelineno-0-507" name="__codelineno-0-507"></a><span class="sd">
|
|
9644
|
-
<a id="__codelineno-0-508" name="__codelineno-0-508"></a><span class="sd">
|
|
9645
|
-
<a id="__codelineno-0-509" name="__codelineno-0-509"></a
|
|
9646
|
-
<a id="__codelineno-0-510" name="__codelineno-0-510"></a
|
|
9647
|
-
<a id="__codelineno-0-511" name="__codelineno-0-511"></a>
|
|
9648
|
-
<a id="__codelineno-0-512" name="__codelineno-0-512"></a> <span class="k">
|
|
9649
|
-
<a id="__codelineno-0-513" name="__codelineno-0-513"></a> <span class="
|
|
9650
|
-
<a id="__codelineno-0-514" name="__codelineno-0-514"></a>
|
|
9651
|
-
<a id="__codelineno-0-515" name="__codelineno-0-515"></a> <span class="k">pass</span>
|
|
9652
|
-
<a id="__codelineno-0-516" name="__codelineno-0-516"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9597
|
+
<span class="normal"><a href="#__codelineno-0-514">514</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-501" name="__codelineno-0-501"></a><span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9598
|
+
<a id="__codelineno-0-502" name="__codelineno-0-502"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9599
|
+
<a id="__codelineno-0-503" name="__codelineno-0-503"></a><span class="sd"> Augment the behavior of forms.ModelChoiceField.prepare_value().</span>
|
|
9600
|
+
<a id="__codelineno-0-504" name="__codelineno-0-504"></a>
|
|
9601
|
+
<a id="__codelineno-0-505" name="__codelineno-0-505"></a><span class="sd"> Specifically, if `value` is a PK, but we have `to_field_name` set, we need to look up the model instance</span>
|
|
9602
|
+
<a id="__codelineno-0-506" name="__codelineno-0-506"></a><span class="sd"> from the given PK, so that the base class will get the appropriate field value rather than just keeping the PK,</span>
|
|
9603
|
+
<a id="__codelineno-0-507" name="__codelineno-0-507"></a><span class="sd"> because the rendered form field needs this in order to correctly prepopulate a default selection.</span>
|
|
9604
|
+
<a id="__codelineno-0-508" name="__codelineno-0-508"></a><span class="sd"> """</span>
|
|
9605
|
+
<a id="__codelineno-0-509" name="__codelineno-0-509"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_field_name</span> <span class="ow">and</span> <span class="n">data_utils</span><span class="o">.</span><span class="n">is_uuid</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
|
|
9606
|
+
<a id="__codelineno-0-510" name="__codelineno-0-510"></a> <span class="k">try</span><span class="p">:</span>
|
|
9607
|
+
<a id="__codelineno-0-511" name="__codelineno-0-511"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
|
|
9608
|
+
<a id="__codelineno-0-512" name="__codelineno-0-512"></a> <span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span>
|
|
9609
|
+
<a id="__codelineno-0-513" name="__codelineno-0-513"></a> <span class="k">pass</span>
|
|
9610
|
+
<a id="__codelineno-0-514" name="__codelineno-0-514"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
9653
9611
|
</code></pre></div></td></tr></table></div>
|
|
9654
9612
|
</details>
|
|
9655
9613
|
</div>
|
|
@@ -9684,19 +9642,19 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9684
9642
|
|
|
9685
9643
|
<details class="quote">
|
|
9686
9644
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9687
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9645
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-569">569</a></span>
|
|
9646
|
+
<span class="normal"><a href="#__codelineno-0-570">570</a></span>
|
|
9647
|
+
<span class="normal"><a href="#__codelineno-0-571">571</a></span>
|
|
9688
9648
|
<span class="normal"><a href="#__codelineno-0-572">572</a></span>
|
|
9689
9649
|
<span class="normal"><a href="#__codelineno-0-573">573</a></span>
|
|
9690
9650
|
<span class="normal"><a href="#__codelineno-0-574">574</a></span>
|
|
9691
|
-
<span class="normal"><a href="#__codelineno-0-575">575</a></span>
|
|
9692
|
-
<
|
|
9693
|
-
<
|
|
9694
|
-
<a id="__codelineno-0-572" name="__codelineno-0-572"></a><span class="
|
|
9695
|
-
<a id="__codelineno-0-573" name="__codelineno-0-573"></a
|
|
9696
|
-
<a id="__codelineno-0-574" name="__codelineno-0-574"></a><span class="
|
|
9697
|
-
<a id="__codelineno-0-575" name="__codelineno-0-575"></a>
|
|
9698
|
-
<a id="__codelineno-0-576" name="__codelineno-0-576"></a> <span class="nb">filter</span> <span class="o">=</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">ModelMultipleChoiceFilter</span>
|
|
9699
|
-
<a id="__codelineno-0-577" name="__codelineno-0-577"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">APISelectMultiple</span>
|
|
9651
|
+
<span class="normal"><a href="#__codelineno-0-575">575</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-569" name="__codelineno-0-569"></a><span class="k">class</span> <span class="nc">DynamicModelMultipleChoiceField</span><span class="p">(</span><span class="n">DynamicModelChoiceMixin</span><span class="p">,</span> <span class="n">django_forms</span><span class="o">.</span><span class="n">ModelMultipleChoiceField</span><span class="p">):</span>
|
|
9652
|
+
<a id="__codelineno-0-570" name="__codelineno-0-570"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9653
|
+
<a id="__codelineno-0-571" name="__codelineno-0-571"></a><span class="sd"> A multiple-choice version of DynamicModelChoiceField.</span>
|
|
9654
|
+
<a id="__codelineno-0-572" name="__codelineno-0-572"></a><span class="sd"> """</span>
|
|
9655
|
+
<a id="__codelineno-0-573" name="__codelineno-0-573"></a>
|
|
9656
|
+
<a id="__codelineno-0-574" name="__codelineno-0-574"></a> <span class="nb">filter</span> <span class="o">=</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">ModelMultipleChoiceFilter</span>
|
|
9657
|
+
<a id="__codelineno-0-575" name="__codelineno-0-575"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">APISelectMultiple</span>
|
|
9700
9658
|
</code></pre></div></td></tr></table></div>
|
|
9701
9659
|
</details>
|
|
9702
9660
|
|
|
@@ -9741,7 +9699,9 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9741
9699
|
|
|
9742
9700
|
<details class="quote">
|
|
9743
9701
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9744
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9702
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-341">341</a></span>
|
|
9703
|
+
<span class="normal"><a href="#__codelineno-0-342">342</a></span>
|
|
9704
|
+
<span class="normal"><a href="#__codelineno-0-343">343</a></span>
|
|
9745
9705
|
<span class="normal"><a href="#__codelineno-0-344">344</a></span>
|
|
9746
9706
|
<span class="normal"><a href="#__codelineno-0-345">345</a></span>
|
|
9747
9707
|
<span class="normal"><a href="#__codelineno-0-346">346</a></span>
|
|
@@ -9763,33 +9723,31 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9763
9723
|
<span class="normal"><a href="#__codelineno-0-362">362</a></span>
|
|
9764
9724
|
<span class="normal"><a href="#__codelineno-0-363">363</a></span>
|
|
9765
9725
|
<span class="normal"><a href="#__codelineno-0-364">364</a></span>
|
|
9766
|
-
<span class="normal"><a href="#__codelineno-0-365">365</a></span>
|
|
9767
|
-
<
|
|
9768
|
-
<
|
|
9769
|
-
<a id="__codelineno-0-344" name="__codelineno-0-344"></a><span class="
|
|
9770
|
-
<a id="__codelineno-0-345" name="__codelineno-0-345"></a><span class="sd">
|
|
9771
|
-
<a id="__codelineno-0-346" name="__codelineno-0-346"></a
|
|
9772
|
-
<a id="__codelineno-0-347" name="__codelineno-0-347"></a><span class="
|
|
9773
|
-
<a id="__codelineno-0-348" name="__codelineno-0-348"></a>
|
|
9774
|
-
<a id="__codelineno-0-349" name="__codelineno-0-349"></a>
|
|
9775
|
-
<a id="__codelineno-0-350" name="__codelineno-0-350"></a>
|
|
9776
|
-
<a id="__codelineno-0-351" name="__codelineno-0-351"></a>
|
|
9777
|
-
<a id="__codelineno-0-352" name="__codelineno-0-352"></a> <span class="
|
|
9778
|
-
<a id="__codelineno-0-353" name="__codelineno-0-353"></a>
|
|
9779
|
-
<a id="__codelineno-0-354" name="__codelineno-0-354"></a>
|
|
9780
|
-
<a id="__codelineno-0-355" name="__codelineno-0-355"></a>
|
|
9781
|
-
<a id="__codelineno-0-356" name="__codelineno-0-356"></a>
|
|
9782
|
-
<a id="__codelineno-0-357" name="__codelineno-0-357"></a>
|
|
9783
|
-
<a id="__codelineno-0-358" name="__codelineno-0-358"></a>
|
|
9784
|
-
<a id="__codelineno-0-359" name="__codelineno-0-359"></a>
|
|
9785
|
-
<a id="__codelineno-0-360" name="__codelineno-0-360"></a>
|
|
9786
|
-
<a id="__codelineno-0-361" name="__codelineno-0-361"></a>
|
|
9787
|
-
<a id="__codelineno-0-362" name="__codelineno-0-362"></a> <span class="k">
|
|
9788
|
-
<a id="__codelineno-0-363" name="__codelineno-0-363"></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">expand_ipaddress_pattern</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">
|
|
9789
|
-
<a id="__codelineno-0-364" name="__codelineno-0-364"></a>
|
|
9790
|
-
<a id="__codelineno-0-365" name="__codelineno-0-365"></a>
|
|
9791
|
-
<a id="__codelineno-0-366" name="__codelineno-0-366"></a>
|
|
9792
|
-
<a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="k">return</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span>
|
|
9726
|
+
<span class="normal"><a href="#__codelineno-0-365">365</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-341" name="__codelineno-0-341"></a><span class="k">class</span> <span class="nc">ExpandableIPAddressField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">):</span>
|
|
9727
|
+
<a id="__codelineno-0-342" name="__codelineno-0-342"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9728
|
+
<a id="__codelineno-0-343" name="__codelineno-0-343"></a><span class="sd"> A field which allows for expansion of IP address ranges</span>
|
|
9729
|
+
<a id="__codelineno-0-344" name="__codelineno-0-344"></a><span class="sd"> Example: '192.0.2.[1-254]/24' => ['192.0.2.1/24', '192.0.2.2/24', '192.0.2.3/24' ... '192.0.2.254/24']</span>
|
|
9730
|
+
<a id="__codelineno-0-345" name="__codelineno-0-345"></a><span class="sd"> """</span>
|
|
9731
|
+
<a id="__codelineno-0-346" name="__codelineno-0-346"></a>
|
|
9732
|
+
<a id="__codelineno-0-347" name="__codelineno-0-347"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
9733
|
+
<a id="__codelineno-0-348" name="__codelineno-0-348"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
9734
|
+
<a id="__codelineno-0-349" name="__codelineno-0-349"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span><span class="p">:</span>
|
|
9735
|
+
<a id="__codelineno-0-350" name="__codelineno-0-350"></a> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span> <span class="o">=</span> <span class="p">(</span>
|
|
9736
|
+
<a id="__codelineno-0-351" name="__codelineno-0-351"></a> <span class="s2">"Specify a numeric range to create multiple IPs.<br />Example: <code>192.0.2.[1,5,100-254]/24</code>"</span>
|
|
9737
|
+
<a id="__codelineno-0-352" name="__codelineno-0-352"></a> <span class="p">)</span>
|
|
9738
|
+
<a id="__codelineno-0-353" name="__codelineno-0-353"></a>
|
|
9739
|
+
<a id="__codelineno-0-354" name="__codelineno-0-354"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9740
|
+
<a id="__codelineno-0-355" name="__codelineno-0-355"></a> <span class="c1"># Ensure that a subnet mask has been specified. This prevents IPs from defaulting to a /32 or /128.</span>
|
|
9741
|
+
<a id="__codelineno-0-356" name="__codelineno-0-356"></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span>
|
|
9742
|
+
<a id="__codelineno-0-357" name="__codelineno-0-357"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="s2">"CIDR mask (e.g. /24) is required."</span><span class="p">)</span>
|
|
9743
|
+
<a id="__codelineno-0-358" name="__codelineno-0-358"></a>
|
|
9744
|
+
<a id="__codelineno-0-359" name="__codelineno-0-359"></a> <span class="c1"># Hackish address version detection but it's all we have to work with</span>
|
|
9745
|
+
<a id="__codelineno-0-360" name="__codelineno-0-360"></a> <span class="k">if</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">value</span> <span class="ow">and</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">IP4_EXPANSION_PATTERN</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9746
|
+
<a id="__codelineno-0-361" name="__codelineno-0-361"></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">expand_ipaddress_pattern</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
|
|
9747
|
+
<a id="__codelineno-0-362" name="__codelineno-0-362"></a> <span class="k">elif</span> <span class="s2">":"</span> <span class="ow">in</span> <span class="n">value</span> <span class="ow">and</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">IP6_EXPANSION_PATTERN</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9748
|
+
<a id="__codelineno-0-363" name="__codelineno-0-363"></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">expand_ipaddress_pattern</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
|
9749
|
+
<a id="__codelineno-0-364" name="__codelineno-0-364"></a>
|
|
9750
|
+
<a id="__codelineno-0-365" name="__codelineno-0-365"></a> <span class="k">return</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span>
|
|
9793
9751
|
</code></pre></div></td></tr></table></div>
|
|
9794
9752
|
</details>
|
|
9795
9753
|
|
|
@@ -9834,7 +9792,9 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9834
9792
|
|
|
9835
9793
|
<details class="quote">
|
|
9836
9794
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
9837
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9795
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-315">315</a></span>
|
|
9796
|
+
<span class="normal"><a href="#__codelineno-0-316">316</a></span>
|
|
9797
|
+
<span class="normal"><a href="#__codelineno-0-317">317</a></span>
|
|
9838
9798
|
<span class="normal"><a href="#__codelineno-0-318">318</a></span>
|
|
9839
9799
|
<span class="normal"><a href="#__codelineno-0-319">319</a></span>
|
|
9840
9800
|
<span class="normal"><a href="#__codelineno-0-320">320</a></span>
|
|
@@ -9855,32 +9815,30 @@ because the rendered form field needs this in order to correctly prepopulate a d
|
|
|
9855
9815
|
<span class="normal"><a href="#__codelineno-0-335">335</a></span>
|
|
9856
9816
|
<span class="normal"><a href="#__codelineno-0-336">336</a></span>
|
|
9857
9817
|
<span class="normal"><a href="#__codelineno-0-337">337</a></span>
|
|
9858
|
-
<span class="normal"><a href="#__codelineno-0-338">338</a></span>
|
|
9859
|
-
<
|
|
9860
|
-
<
|
|
9861
|
-
<a id="__codelineno-0-318" name="__codelineno-0-318"></a><span class="
|
|
9862
|
-
<a id="__codelineno-0-319" name="__codelineno-0-319"></a><span class="sd">
|
|
9863
|
-
<a id="__codelineno-0-320" name="__codelineno-0-320"></a
|
|
9864
|
-
<a id="__codelineno-0-321" name="__codelineno-0-321"></a><span class="
|
|
9865
|
-
<a id="__codelineno-0-322" name="__codelineno-0-322"></a>
|
|
9866
|
-
<a id="__codelineno-0-323" name="__codelineno-0-323"></a>
|
|
9867
|
-
<a id="__codelineno-0-324" name="__codelineno-0-324"></a>
|
|
9868
|
-
<a id="__codelineno-0-325" name="__codelineno-0-325"></a
|
|
9869
|
-
<a id="__codelineno-0-326" name="__codelineno-0-326"></a
|
|
9870
|
-
<a id="__codelineno-0-327" name="__codelineno-0-327"></a><span class="s2">
|
|
9871
|
-
<a id="__codelineno-0-328" name="__codelineno-0-328"></a><span class="s2">
|
|
9872
|
-
<a id="__codelineno-0-329" name="__codelineno-0-329"></a><span class="s2">
|
|
9873
|
-
<a id="__codelineno-0-330" name="__codelineno-0-330"></a><span class="s2">
|
|
9874
|
-
<a id="__codelineno-0-331" name="__codelineno-0-331"></a><span class="s2">
|
|
9875
|
-
<a id="__codelineno-0-332" name="__codelineno-0-332"></a
|
|
9876
|
-
<a id="__codelineno-0-333" name="__codelineno-0-333"></a><span class="
|
|
9877
|
-
<a id="__codelineno-0-334" name="__codelineno-0-334"></a>
|
|
9878
|
-
<a id="__codelineno-0-335" name="__codelineno-0-335"></a>
|
|
9879
|
-
<a id="__codelineno-0-336" name="__codelineno-0-336"></a> <span class="k">if</span> <span class="
|
|
9880
|
-
<a id="__codelineno-0-337" name="__codelineno-0-337"></a> <span class="k">return</span> <span class="
|
|
9881
|
-
<a id="__codelineno-0-338" name="__codelineno-0-338"></a> <span class="k">
|
|
9882
|
-
<a id="__codelineno-0-339" name="__codelineno-0-339"></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">expand_alphanumeric_pattern</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
|
9883
|
-
<a id="__codelineno-0-340" name="__codelineno-0-340"></a> <span class="k">return</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span>
|
|
9818
|
+
<span class="normal"><a href="#__codelineno-0-338">338</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-315" name="__codelineno-0-315"></a><span class="k">class</span> <span class="nc">ExpandableNameField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">):</span>
|
|
9819
|
+
<a id="__codelineno-0-316" name="__codelineno-0-316"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9820
|
+
<a id="__codelineno-0-317" name="__codelineno-0-317"></a><span class="sd"> A field which allows for numeric range expansion</span>
|
|
9821
|
+
<a id="__codelineno-0-318" name="__codelineno-0-318"></a><span class="sd"> Example: 'Gi0/[1-3]' => ['Gi0/1', 'Gi0/2', 'Gi0/3']</span>
|
|
9822
|
+
<a id="__codelineno-0-319" name="__codelineno-0-319"></a><span class="sd"> """</span>
|
|
9823
|
+
<a id="__codelineno-0-320" name="__codelineno-0-320"></a>
|
|
9824
|
+
<a id="__codelineno-0-321" name="__codelineno-0-321"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
9825
|
+
<a id="__codelineno-0-322" name="__codelineno-0-322"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
9826
|
+
<a id="__codelineno-0-323" name="__codelineno-0-323"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span><span class="p">:</span>
|
|
9827
|
+
<a id="__codelineno-0-324" name="__codelineno-0-324"></a> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span> <span class="o">=</span> <span class="s2">"""</span>
|
|
9828
|
+
<a id="__codelineno-0-325" name="__codelineno-0-325"></a><span class="s2"> Alphanumeric ranges are supported for bulk creation. Mixed cases and types within a single range</span>
|
|
9829
|
+
<a id="__codelineno-0-326" name="__codelineno-0-326"></a><span class="s2"> are not supported. Examples:</span>
|
|
9830
|
+
<a id="__codelineno-0-327" name="__codelineno-0-327"></a><span class="s2"> <ul></span>
|
|
9831
|
+
<a id="__codelineno-0-328" name="__codelineno-0-328"></a><span class="s2"> <li><code>[ge,xe]-0/0/[0-9]</code></li></span>
|
|
9832
|
+
<a id="__codelineno-0-329" name="__codelineno-0-329"></a><span class="s2"> <li><code>e[0-3][a-d,f]</code></li></span>
|
|
9833
|
+
<a id="__codelineno-0-330" name="__codelineno-0-330"></a><span class="s2"> </ul></span>
|
|
9834
|
+
<a id="__codelineno-0-331" name="__codelineno-0-331"></a><span class="s2"> """</span>
|
|
9835
|
+
<a id="__codelineno-0-332" name="__codelineno-0-332"></a>
|
|
9836
|
+
<a id="__codelineno-0-333" name="__codelineno-0-333"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9837
|
+
<a id="__codelineno-0-334" name="__codelineno-0-334"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
|
9838
|
+
<a id="__codelineno-0-335" name="__codelineno-0-335"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
9839
|
+
<a id="__codelineno-0-336" name="__codelineno-0-336"></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">ALPHANUMERIC_EXPANSION_PATTERN</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
9840
|
+
<a id="__codelineno-0-337" name="__codelineno-0-337"></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">expand_alphanumeric_pattern</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
|
9841
|
+
<a id="__codelineno-0-338" name="__codelineno-0-338"></a> <span class="k">return</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span>
|
|
9884
9842
|
</code></pre></div></td></tr></table></div>
|
|
9885
9843
|
</details>
|
|
9886
9844
|
|
|
@@ -10038,7 +9996,9 @@ and each Array element is validated by <code>base_field</code> validators.</p>
|
|
|
10038
9996
|
|
|
10039
9997
|
<details class="quote">
|
|
10040
9998
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10041
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
9999
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-612">612</a></span>
|
|
10000
|
+
<span class="normal"><a href="#__codelineno-0-613">613</a></span>
|
|
10001
|
+
<span class="normal"><a href="#__codelineno-0-614">614</a></span>
|
|
10042
10002
|
<span class="normal"><a href="#__codelineno-0-615">615</a></span>
|
|
10043
10003
|
<span class="normal"><a href="#__codelineno-0-616">616</a></span>
|
|
10044
10004
|
<span class="normal"><a href="#__codelineno-0-617">617</a></span>
|
|
@@ -10126,99 +10086,97 @@ and each Array element is validated by <code>base_field</code> validators.</p>
|
|
|
10126
10086
|
<span class="normal"><a href="#__codelineno-0-699">699</a></span>
|
|
10127
10087
|
<span class="normal"><a href="#__codelineno-0-700">700</a></span>
|
|
10128
10088
|
<span class="normal"><a href="#__codelineno-0-701">701</a></span>
|
|
10129
|
-
<span class="normal"><a href="#__codelineno-0-702">702</a></span>
|
|
10130
|
-
<
|
|
10131
|
-
<
|
|
10132
|
-
<a id="__codelineno-0-615" name="__codelineno-0-615"></a><span class="
|
|
10133
|
-
<a id="__codelineno-0-616" name="__codelineno-0-616"></a><span class="sd">
|
|
10134
|
-
<a id="__codelineno-0-617" name="__codelineno-0-617"></a><span class="sd">
|
|
10135
|
-
<a id="__codelineno-0-618" name="__codelineno-0-618"></a
|
|
10136
|
-
<a id="__codelineno-0-619" name="__codelineno-0-619"></a><span class="
|
|
10137
|
-
<a id="__codelineno-0-620" name="__codelineno-0-620"></a>
|
|
10138
|
-
<a id="__codelineno-0-621" name="__codelineno-0-621"></a>
|
|
10139
|
-
<a id="__codelineno-0-622" name="__codelineno-0-622"></a> <span class="
|
|
10140
|
-
<a id="__codelineno-0-623" name="__codelineno-0-623"></a>
|
|
10141
|
-
<a id="__codelineno-0-624" name="__codelineno-0-624"></a>
|
|
10142
|
-
<a id="__codelineno-0-625" name="__codelineno-0-625"></a>
|
|
10143
|
-
<a id="__codelineno-0-626" name="__codelineno-0-626"></a
|
|
10144
|
-
<a id="__codelineno-0-627" name="__codelineno-0-627"></a><span class="
|
|
10145
|
-
<a id="__codelineno-0-628" name="__codelineno-0-628"></a><span class="sd">
|
|
10146
|
-
<a id="__codelineno-0-629" name="__codelineno-0-629"></a
|
|
10147
|
-
<a id="__codelineno-0-630" name="__codelineno-0-630"></a><span class="
|
|
10148
|
-
<a id="__codelineno-0-631" name="__codelineno-0-631"></a>
|
|
10149
|
-
<a id="__codelineno-0-632" name="__codelineno-0-632"></a>
|
|
10150
|
-
<a id="__codelineno-0-633" name="__codelineno-0-633"></a>
|
|
10151
|
-
<a id="__codelineno-0-634" name="__codelineno-0-634"></a
|
|
10152
|
-
<a id="__codelineno-0-635" name="__codelineno-0-635"></a><span class="
|
|
10153
|
-
<a id="__codelineno-0-636" name="__codelineno-0-636"></a><span class="
|
|
10154
|
-
<a id="__codelineno-0-637" name="__codelineno-0-637"></a><span class="
|
|
10155
|
-
<a id="__codelineno-0-638" name="__codelineno-0-638"></a> <span class="k">
|
|
10156
|
-
<a id="__codelineno-0-639" name="__codelineno-0-639"></a>
|
|
10157
|
-
<a id="__codelineno-0-640" name="__codelineno-0-640"></a>
|
|
10158
|
-
<a id="__codelineno-0-641" name="__codelineno-0-641"></a>
|
|
10159
|
-
<a id="__codelineno-0-642" name="__codelineno-0-642"></a
|
|
10160
|
-
<a id="__codelineno-0-643" name="__codelineno-0-643"></a><span class="
|
|
10161
|
-
<a id="__codelineno-0-644" name="__codelineno-0-644"></a><span class="sd">
|
|
10162
|
-
<a id="__codelineno-0-645" name="__codelineno-0-645"></a
|
|
10163
|
-
<a id="__codelineno-0-646" name="__codelineno-0-646"></a
|
|
10164
|
-
<a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="k">
|
|
10165
|
-
<a id="__codelineno-0-648" name="__codelineno-0-648"></a> <span class="
|
|
10166
|
-
<a id="__codelineno-0-649" name="__codelineno-0-649"></a>
|
|
10167
|
-
<a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="k">
|
|
10168
|
-
<a id="__codelineno-0-651" name="__codelineno-0-651"></a> <span class="
|
|
10169
|
-
<a id="__codelineno-0-652" name="__codelineno-0-652"></a>
|
|
10170
|
-
<a id="__codelineno-0-653" name="__codelineno-0-653"></a>
|
|
10171
|
-
<a id="__codelineno-0-654" name="__codelineno-0-654"></a>
|
|
10172
|
-
<a id="__codelineno-0-655" name="__codelineno-0-655"></a>
|
|
10173
|
-
<a id="__codelineno-0-656" name="__codelineno-0-656"></a>
|
|
10174
|
-
<a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="n">
|
|
10175
|
-
<a id="__codelineno-0-658" name="__codelineno-0-658"></a>
|
|
10176
|
-
<a id="__codelineno-0-659" name="__codelineno-0-659"></a>
|
|
10177
|
-
<a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="k">
|
|
10178
|
-
<a id="__codelineno-0-661" name="__codelineno-0-661"></a> <span class="n">
|
|
10179
|
-
<a id="__codelineno-0-662" name="__codelineno-0-662"></a>
|
|
10180
|
-
<a id="__codelineno-0-663" name="__codelineno-0-663"></a>
|
|
10181
|
-
<a id="__codelineno-0-664" name="__codelineno-0-664"></a> <span class="k">
|
|
10182
|
-
<a id="__codelineno-0-665" name="__codelineno-0-665"></a>
|
|
10183
|
-
<a id="__codelineno-0-666" name="__codelineno-0-666"></a>
|
|
10184
|
-
<a id="__codelineno-0-667" name="__codelineno-0-667"></a>
|
|
10185
|
-
<a id="__codelineno-0-668" name="__codelineno-0-668"></a
|
|
10186
|
-
<a id="__codelineno-0-669" name="__codelineno-0-669"></a><span class="
|
|
10187
|
-
<a id="__codelineno-0-670" name="__codelineno-0-670"></a><span class="
|
|
10188
|
-
<a id="__codelineno-0-671" name="__codelineno-0-671"></a
|
|
10189
|
-
<a id="__codelineno-0-672" name="__codelineno-0-672"></a> <span class="
|
|
10190
|
-
<a id="__codelineno-0-673" name="__codelineno-0-673"></a>
|
|
10191
|
-
<a id="__codelineno-0-674" name="__codelineno-0-674"></a>
|
|
10192
|
-
<a id="__codelineno-0-675" name="__codelineno-0-675"></a> <span class="k">
|
|
10193
|
-
<a id="__codelineno-0-676" name="__codelineno-0-676"></a> <span class="
|
|
10194
|
-
<a id="__codelineno-0-677" name="__codelineno-0-677"></a>
|
|
10195
|
-
<a id="__codelineno-0-678" name="__codelineno-0-678"></a>
|
|
10196
|
-
<a id="__codelineno-0-679" name="__codelineno-0-679"></a>
|
|
10197
|
-
<a id="__codelineno-0-680" name="__codelineno-0-680"></a>
|
|
10198
|
-
<a id="__codelineno-0-681" name="__codelineno-0-681"></a>
|
|
10199
|
-
<a id="__codelineno-0-682" name="__codelineno-0-682"></a
|
|
10200
|
-
<a id="__codelineno-0-683" name="__codelineno-0-683"></a><span class="
|
|
10201
|
-
<a id="__codelineno-0-684" name="__codelineno-0-684"></a><span class="sd">
|
|
10202
|
-
<a id="__codelineno-0-685" name="__codelineno-0-685"></a><span class="
|
|
10203
|
-
<a id="__codelineno-0-686" name="__codelineno-0-686"></a
|
|
10204
|
-
<a id="__codelineno-0-687" name="__codelineno-0-687"></a> <span class="
|
|
10205
|
-
<a id="__codelineno-0-688" name="__codelineno-0-688"></a>
|
|
10206
|
-
<a id="__codelineno-0-689" name="__codelineno-0-689"></a>
|
|
10207
|
-
<a id="__codelineno-0-690" name="__codelineno-0-690"></a> <span class="k">
|
|
10208
|
-
<a id="__codelineno-0-691" name="__codelineno-0-691"></a> <span class="
|
|
10209
|
-
<a id="__codelineno-0-692" name="__codelineno-0-692"></a>
|
|
10210
|
-
<a id="__codelineno-0-693" name="__codelineno-0-693"></a>
|
|
10211
|
-
<a id="__codelineno-0-694" name="__codelineno-0-694"></a>
|
|
10212
|
-
<a id="__codelineno-0-695" name="__codelineno-0-695"></a>
|
|
10213
|
-
<a id="__codelineno-0-696" name="__codelineno-0-696"></a>
|
|
10214
|
-
<a id="__codelineno-0-697" name="__codelineno-0-697"></a
|
|
10215
|
-
<a id="__codelineno-0-698" name="__codelineno-0-698"></a><span class="
|
|
10216
|
-
<a id="__codelineno-0-699" name="__codelineno-0-699"></a
|
|
10217
|
-
<a id="__codelineno-0-700" name="__codelineno-0-700"></a><span class="
|
|
10218
|
-
<a id="__codelineno-0-701" name="__codelineno-0-701"></a>
|
|
10219
|
-
<a id="__codelineno-0-702" name="__codelineno-0-702"></a> <span class="k">
|
|
10220
|
-
<a id="__codelineno-0-703" name="__codelineno-0-703"></a> <span class="k">return</span> <span class="kc">False</span>
|
|
10221
|
-
<a id="__codelineno-0-704" name="__codelineno-0-704"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">has_changed</span><span class="p">(</span><span class="n">initial</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
10089
|
+
<span class="normal"><a href="#__codelineno-0-702">702</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-612" name="__codelineno-0-612"></a><span class="k">class</span> <span class="nc">JSONArrayFormField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">JSONField</span><span class="p">):</span>
|
|
10090
|
+
<a id="__codelineno-0-613" name="__codelineno-0-613"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10091
|
+
<a id="__codelineno-0-614" name="__codelineno-0-614"></a><span class="sd"> A FormField counterpart to JSONArrayField.</span>
|
|
10092
|
+
<a id="__codelineno-0-615" name="__codelineno-0-615"></a><span class="sd"> Replicates ArrayFormField's base field validation: Field values are validated as JSON Arrays,</span>
|
|
10093
|
+
<a id="__codelineno-0-616" name="__codelineno-0-616"></a><span class="sd"> and each Array element is validated by `base_field` validators.</span>
|
|
10094
|
+
<a id="__codelineno-0-617" name="__codelineno-0-617"></a><span class="sd"> """</span>
|
|
10095
|
+
<a id="__codelineno-0-618" name="__codelineno-0-618"></a>
|
|
10096
|
+
<a id="__codelineno-0-619" name="__codelineno-0-619"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base_field</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s2">","</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
10097
|
+
<a id="__codelineno-0-620" name="__codelineno-0-620"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_field</span> <span class="o">=</span> <span class="n">base_field</span>
|
|
10098
|
+
<a id="__codelineno-0-621" name="__codelineno-0-621"></a> <span class="bp">self</span><span class="o">.</span><span class="n">delimiter</span> <span class="o">=</span> <span class="n">delimiter</span>
|
|
10099
|
+
<a id="__codelineno-0-622" name="__codelineno-0-622"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
10100
|
+
<a id="__codelineno-0-623" name="__codelineno-0-623"></a>
|
|
10101
|
+
<a id="__codelineno-0-624" name="__codelineno-0-624"></a> <span class="k">def</span> <span class="nf">clean</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10102
|
+
<a id="__codelineno-0-625" name="__codelineno-0-625"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10103
|
+
<a id="__codelineno-0-626" name="__codelineno-0-626"></a><span class="sd"> Validate `value` and return its "cleaned" value as an appropriate</span>
|
|
10104
|
+
<a id="__codelineno-0-627" name="__codelineno-0-627"></a><span class="sd"> Python object. Raise ValidationError for any errors.</span>
|
|
10105
|
+
<a id="__codelineno-0-628" name="__codelineno-0-628"></a><span class="sd"> """</span>
|
|
10106
|
+
<a id="__codelineno-0-629" name="__codelineno-0-629"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10107
|
+
<a id="__codelineno-0-630" name="__codelineno-0-630"></a> <span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]</span>
|
|
10108
|
+
<a id="__codelineno-0-631" name="__codelineno-0-631"></a>
|
|
10109
|
+
<a id="__codelineno-0-632" name="__codelineno-0-632"></a> <span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10110
|
+
<a id="__codelineno-0-633" name="__codelineno-0-633"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10111
|
+
<a id="__codelineno-0-634" name="__codelineno-0-634"></a><span class="sd"> Return a string of this value.</span>
|
|
10112
|
+
<a id="__codelineno-0-635" name="__codelineno-0-635"></a><span class="sd"> """</span>
|
|
10113
|
+
<a id="__codelineno-0-636" name="__codelineno-0-636"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
10114
|
+
<a id="__codelineno-0-637" name="__codelineno-0-637"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">delimiter</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">)</span>
|
|
10115
|
+
<a id="__codelineno-0-638" name="__codelineno-0-638"></a> <span class="k">return</span> <span class="n">value</span>
|
|
10116
|
+
<a id="__codelineno-0-639" name="__codelineno-0-639"></a>
|
|
10117
|
+
<a id="__codelineno-0-640" name="__codelineno-0-640"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10118
|
+
<a id="__codelineno-0-641" name="__codelineno-0-641"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10119
|
+
<a id="__codelineno-0-642" name="__codelineno-0-642"></a><span class="sd"> Convert `value` into JSON, raising django.core.exceptions.ValidationError</span>
|
|
10120
|
+
<a id="__codelineno-0-643" name="__codelineno-0-643"></a><span class="sd"> if the data can't be converted. Return the converted value.</span>
|
|
10121
|
+
<a id="__codelineno-0-644" name="__codelineno-0-644"></a><span class="sd"> """</span>
|
|
10122
|
+
<a id="__codelineno-0-645" name="__codelineno-0-645"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
10123
|
+
<a id="__codelineno-0-646" name="__codelineno-0-646"></a> <span class="n">items</span> <span class="o">=</span> <span class="n">value</span>
|
|
10124
|
+
<a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="k">elif</span> <span class="n">value</span><span class="p">:</span>
|
|
10125
|
+
<a id="__codelineno-0-648" name="__codelineno-0-648"></a> <span class="k">try</span><span class="p">:</span>
|
|
10126
|
+
<a id="__codelineno-0-649" name="__codelineno-0-649"></a> <span class="n">items</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">delimiter</span><span class="p">)</span>
|
|
10127
|
+
<a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
10128
|
+
<a id="__codelineno-0-651" name="__codelineno-0-651"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
10129
|
+
<a id="__codelineno-0-652" name="__codelineno-0-652"></a> <span class="k">else</span><span class="p">:</span>
|
|
10130
|
+
<a id="__codelineno-0-653" name="__codelineno-0-653"></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10131
|
+
<a id="__codelineno-0-654" name="__codelineno-0-654"></a>
|
|
10132
|
+
<a id="__codelineno-0-655" name="__codelineno-0-655"></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10133
|
+
<a id="__codelineno-0-656" name="__codelineno-0-656"></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10134
|
+
<a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
|
|
10135
|
+
<a id="__codelineno-0-658" name="__codelineno-0-658"></a> <span class="k">try</span><span class="p">:</span>
|
|
10136
|
+
<a id="__codelineno-0-659" name="__codelineno-0-659"></a> <span class="n">values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">item</span><span class="p">))</span>
|
|
10137
|
+
<a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
10138
|
+
<a id="__codelineno-0-661" name="__codelineno-0-661"></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
10139
|
+
<a id="__codelineno-0-662" name="__codelineno-0-662"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10140
|
+
<a id="__codelineno-0-663" name="__codelineno-0-663"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10141
|
+
<a id="__codelineno-0-664" name="__codelineno-0-664"></a> <span class="k">return</span> <span class="n">values</span>
|
|
10142
|
+
<a id="__codelineno-0-665" name="__codelineno-0-665"></a>
|
|
10143
|
+
<a id="__codelineno-0-666" name="__codelineno-0-666"></a> <span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10144
|
+
<a id="__codelineno-0-667" name="__codelineno-0-667"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10145
|
+
<a id="__codelineno-0-668" name="__codelineno-0-668"></a><span class="sd"> Validate `value` and raise ValidationError if necessary.</span>
|
|
10146
|
+
<a id="__codelineno-0-669" name="__codelineno-0-669"></a><span class="sd"> """</span>
|
|
10147
|
+
<a id="__codelineno-0-670" name="__codelineno-0-670"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10148
|
+
<a id="__codelineno-0-671" name="__codelineno-0-671"></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10149
|
+
<a id="__codelineno-0-672" name="__codelineno-0-672"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
10150
|
+
<a id="__codelineno-0-673" name="__codelineno-0-673"></a> <span class="k">try</span><span class="p">:</span>
|
|
10151
|
+
<a id="__codelineno-0-674" name="__codelineno-0-674"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
10152
|
+
<a id="__codelineno-0-675" name="__codelineno-0-675"></a> <span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
10153
|
+
<a id="__codelineno-0-676" name="__codelineno-0-676"></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
10154
|
+
<a id="__codelineno-0-677" name="__codelineno-0-677"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10155
|
+
<a id="__codelineno-0-678" name="__codelineno-0-678"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10156
|
+
<a id="__codelineno-0-679" name="__codelineno-0-679"></a>
|
|
10157
|
+
<a id="__codelineno-0-680" name="__codelineno-0-680"></a> <span class="k">def</span> <span class="nf">run_validators</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10158
|
+
<a id="__codelineno-0-681" name="__codelineno-0-681"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10159
|
+
<a id="__codelineno-0-682" name="__codelineno-0-682"></a><span class="sd"> Runs all validators against `value` and raise ValidationError if necessary.</span>
|
|
10160
|
+
<a id="__codelineno-0-683" name="__codelineno-0-683"></a><span class="sd"> Some validators can't be created at field initialization time.</span>
|
|
10161
|
+
<a id="__codelineno-0-684" name="__codelineno-0-684"></a><span class="sd"> """</span>
|
|
10162
|
+
<a id="__codelineno-0-685" name="__codelineno-0-685"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">run_validators</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10163
|
+
<a id="__codelineno-0-686" name="__codelineno-0-686"></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10164
|
+
<a id="__codelineno-0-687" name="__codelineno-0-687"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
10165
|
+
<a id="__codelineno-0-688" name="__codelineno-0-688"></a> <span class="k">try</span><span class="p">:</span>
|
|
10166
|
+
<a id="__codelineno-0-689" name="__codelineno-0-689"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">run_validators</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
10167
|
+
<a id="__codelineno-0-690" name="__codelineno-0-690"></a> <span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
10168
|
+
<a id="__codelineno-0-691" name="__codelineno-0-691"></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
10169
|
+
<a id="__codelineno-0-692" name="__codelineno-0-692"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10170
|
+
<a id="__codelineno-0-693" name="__codelineno-0-693"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10171
|
+
<a id="__codelineno-0-694" name="__codelineno-0-694"></a>
|
|
10172
|
+
<a id="__codelineno-0-695" name="__codelineno-0-695"></a> <span class="k">def</span> <span class="nf">has_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
|
10173
|
+
<a id="__codelineno-0-696" name="__codelineno-0-696"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10174
|
+
<a id="__codelineno-0-697" name="__codelineno-0-697"></a><span class="sd"> Return True if `data` differs from `initial`.</span>
|
|
10175
|
+
<a id="__codelineno-0-698" name="__codelineno-0-698"></a><span class="sd"> """</span>
|
|
10176
|
+
<a id="__codelineno-0-699" name="__codelineno-0-699"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
|
10177
|
+
<a id="__codelineno-0-700" name="__codelineno-0-700"></a> <span class="k">if</span> <span class="n">initial</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_values</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_values</span><span class="p">:</span>
|
|
10178
|
+
<a id="__codelineno-0-701" name="__codelineno-0-701"></a> <span class="k">return</span> <span class="kc">False</span>
|
|
10179
|
+
<a id="__codelineno-0-702" name="__codelineno-0-702"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">has_changed</span><span class="p">(</span><span class="n">initial</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
10222
10180
|
</code></pre></div></td></tr></table></div>
|
|
10223
10181
|
</details>
|
|
10224
10182
|
|
|
@@ -10252,19 +10210,19 @@ Python object. Raise ValidationError for any errors.</p>
|
|
|
10252
10210
|
|
|
10253
10211
|
<details class="quote">
|
|
10254
10212
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10255
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10213
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-624">624</a></span>
|
|
10214
|
+
<span class="normal"><a href="#__codelineno-0-625">625</a></span>
|
|
10215
|
+
<span class="normal"><a href="#__codelineno-0-626">626</a></span>
|
|
10256
10216
|
<span class="normal"><a href="#__codelineno-0-627">627</a></span>
|
|
10257
10217
|
<span class="normal"><a href="#__codelineno-0-628">628</a></span>
|
|
10258
10218
|
<span class="normal"><a href="#__codelineno-0-629">629</a></span>
|
|
10259
|
-
<span class="normal"><a href="#__codelineno-0-630">630</a></span>
|
|
10260
|
-
<
|
|
10261
|
-
<
|
|
10262
|
-
<a id="__codelineno-0-627" name="__codelineno-0-627"></a><span class="
|
|
10263
|
-
<a id="__codelineno-0-628" name="__codelineno-0-628"></a><span class="sd">
|
|
10264
|
-
<a id="__codelineno-0-629" name="__codelineno-0-629"></a
|
|
10265
|
-
<a id="__codelineno-0-630" name="__codelineno-0-630"></a><span class="
|
|
10266
|
-
<a id="__codelineno-0-631" name="__codelineno-0-631"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10267
|
-
<a id="__codelineno-0-632" name="__codelineno-0-632"></a> <span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]</span>
|
|
10219
|
+
<span class="normal"><a href="#__codelineno-0-630">630</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-624" name="__codelineno-0-624"></a><span class="k">def</span> <span class="nf">clean</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10220
|
+
<a id="__codelineno-0-625" name="__codelineno-0-625"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10221
|
+
<a id="__codelineno-0-626" name="__codelineno-0-626"></a><span class="sd"> Validate `value` and return its "cleaned" value as an appropriate</span>
|
|
10222
|
+
<a id="__codelineno-0-627" name="__codelineno-0-627"></a><span class="sd"> Python object. Raise ValidationError for any errors.</span>
|
|
10223
|
+
<a id="__codelineno-0-628" name="__codelineno-0-628"></a><span class="sd"> """</span>
|
|
10224
|
+
<a id="__codelineno-0-629" name="__codelineno-0-629"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10225
|
+
<a id="__codelineno-0-630" name="__codelineno-0-630"></a> <span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">clean</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]</span>
|
|
10268
10226
|
</code></pre></div></td></tr></table></div>
|
|
10269
10227
|
</details>
|
|
10270
10228
|
</div>
|
|
@@ -10288,21 +10246,21 @@ Python object. Raise ValidationError for any errors.</p>
|
|
|
10288
10246
|
|
|
10289
10247
|
<details class="quote">
|
|
10290
10248
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10291
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10249
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-695">695</a></span>
|
|
10250
|
+
<span class="normal"><a href="#__codelineno-0-696">696</a></span>
|
|
10251
|
+
<span class="normal"><a href="#__codelineno-0-697">697</a></span>
|
|
10292
10252
|
<span class="normal"><a href="#__codelineno-0-698">698</a></span>
|
|
10293
10253
|
<span class="normal"><a href="#__codelineno-0-699">699</a></span>
|
|
10294
10254
|
<span class="normal"><a href="#__codelineno-0-700">700</a></span>
|
|
10295
10255
|
<span class="normal"><a href="#__codelineno-0-701">701</a></span>
|
|
10296
|
-
<span class="normal"><a href="#__codelineno-0-702">702</a></span>
|
|
10297
|
-
<
|
|
10298
|
-
<
|
|
10299
|
-
<a id="__codelineno-0-698" name="__codelineno-0-698"></a><span class="
|
|
10300
|
-
<a id="__codelineno-0-699" name="__codelineno-0-699"></a
|
|
10301
|
-
<a id="__codelineno-0-700" name="__codelineno-0-700"></a><span class="
|
|
10302
|
-
<a id="__codelineno-0-701" name="__codelineno-0-701"></a>
|
|
10303
|
-
<a id="__codelineno-0-702" name="__codelineno-0-702"></a> <span class="k">
|
|
10304
|
-
<a id="__codelineno-0-703" name="__codelineno-0-703"></a> <span class="k">return</span> <span class="kc">False</span>
|
|
10305
|
-
<a id="__codelineno-0-704" name="__codelineno-0-704"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">has_changed</span><span class="p">(</span><span class="n">initial</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
10256
|
+
<span class="normal"><a href="#__codelineno-0-702">702</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-695" name="__codelineno-0-695"></a><span class="k">def</span> <span class="nf">has_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
|
10257
|
+
<a id="__codelineno-0-696" name="__codelineno-0-696"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10258
|
+
<a id="__codelineno-0-697" name="__codelineno-0-697"></a><span class="sd"> Return True if `data` differs from `initial`.</span>
|
|
10259
|
+
<a id="__codelineno-0-698" name="__codelineno-0-698"></a><span class="sd"> """</span>
|
|
10260
|
+
<a id="__codelineno-0-699" name="__codelineno-0-699"></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
|
10261
|
+
<a id="__codelineno-0-700" name="__codelineno-0-700"></a> <span class="k">if</span> <span class="n">initial</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_values</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_values</span><span class="p">:</span>
|
|
10262
|
+
<a id="__codelineno-0-701" name="__codelineno-0-701"></a> <span class="k">return</span> <span class="kc">False</span>
|
|
10263
|
+
<a id="__codelineno-0-702" name="__codelineno-0-702"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">has_changed</span><span class="p">(</span><span class="n">initial</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
10306
10264
|
</code></pre></div></td></tr></table></div>
|
|
10307
10265
|
</details>
|
|
10308
10266
|
</div>
|
|
@@ -10326,19 +10284,19 @@ Python object. Raise ValidationError for any errors.</p>
|
|
|
10326
10284
|
|
|
10327
10285
|
<details class="quote">
|
|
10328
10286
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10329
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10287
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-632">632</a></span>
|
|
10288
|
+
<span class="normal"><a href="#__codelineno-0-633">633</a></span>
|
|
10289
|
+
<span class="normal"><a href="#__codelineno-0-634">634</a></span>
|
|
10330
10290
|
<span class="normal"><a href="#__codelineno-0-635">635</a></span>
|
|
10331
10291
|
<span class="normal"><a href="#__codelineno-0-636">636</a></span>
|
|
10332
10292
|
<span class="normal"><a href="#__codelineno-0-637">637</a></span>
|
|
10333
|
-
<span class="normal"><a href="#__codelineno-0-638">638</a></span>
|
|
10334
|
-
<
|
|
10335
|
-
<
|
|
10336
|
-
<a id="__codelineno-0-635" name="__codelineno-0-635"></a><span class="
|
|
10337
|
-
<a id="__codelineno-0-636" name="__codelineno-0-636"></a><span class="
|
|
10338
|
-
<a id="__codelineno-0-637" name="__codelineno-0-637"></a><span class="
|
|
10339
|
-
<a id="__codelineno-0-638" name="__codelineno-0-638"></a> <span class="k">
|
|
10340
|
-
<a id="__codelineno-0-639" name="__codelineno-0-639"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">delimiter</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">)</span>
|
|
10341
|
-
<a id="__codelineno-0-640" name="__codelineno-0-640"></a> <span class="k">return</span> <span class="n">value</span>
|
|
10293
|
+
<span class="normal"><a href="#__codelineno-0-638">638</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-632" name="__codelineno-0-632"></a><span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10294
|
+
<a id="__codelineno-0-633" name="__codelineno-0-633"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10295
|
+
<a id="__codelineno-0-634" name="__codelineno-0-634"></a><span class="sd"> Return a string of this value.</span>
|
|
10296
|
+
<a id="__codelineno-0-635" name="__codelineno-0-635"></a><span class="sd"> """</span>
|
|
10297
|
+
<a id="__codelineno-0-636" name="__codelineno-0-636"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
10298
|
+
<a id="__codelineno-0-637" name="__codelineno-0-637"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">delimiter</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">prepare_value</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">)</span>
|
|
10299
|
+
<a id="__codelineno-0-638" name="__codelineno-0-638"></a> <span class="k">return</span> <span class="n">value</span>
|
|
10342
10300
|
</code></pre></div></td></tr></table></div>
|
|
10343
10301
|
</details>
|
|
10344
10302
|
</div>
|
|
@@ -10363,7 +10321,9 @@ Some validators can't be created at field initialization time.</p>
|
|
|
10363
10321
|
|
|
10364
10322
|
<details class="quote">
|
|
10365
10323
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10366
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10324
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-680">680</a></span>
|
|
10325
|
+
<span class="normal"><a href="#__codelineno-0-681">681</a></span>
|
|
10326
|
+
<span class="normal"><a href="#__codelineno-0-682">682</a></span>
|
|
10367
10327
|
<span class="normal"><a href="#__codelineno-0-683">683</a></span>
|
|
10368
10328
|
<span class="normal"><a href="#__codelineno-0-684">684</a></span>
|
|
10369
10329
|
<span class="normal"><a href="#__codelineno-0-685">685</a></span>
|
|
@@ -10374,22 +10334,20 @@ Some validators can't be created at field initialization time.</p>
|
|
|
10374
10334
|
<span class="normal"><a href="#__codelineno-0-690">690</a></span>
|
|
10375
10335
|
<span class="normal"><a href="#__codelineno-0-691">691</a></span>
|
|
10376
10336
|
<span class="normal"><a href="#__codelineno-0-692">692</a></span>
|
|
10377
|
-
<span class="normal"><a href="#__codelineno-0-693">693</a></span>
|
|
10378
|
-
<
|
|
10379
|
-
<
|
|
10380
|
-
<a id="__codelineno-0-683" name="__codelineno-0-683"></a><span class="
|
|
10381
|
-
<a id="__codelineno-0-684" name="__codelineno-0-684"></a><span class="sd">
|
|
10382
|
-
<a id="__codelineno-0-685" name="__codelineno-0-685"></a><span class="
|
|
10383
|
-
<a id="__codelineno-0-686" name="__codelineno-0-686"></a
|
|
10384
|
-
<a id="__codelineno-0-687" name="__codelineno-0-687"></a> <span class="
|
|
10385
|
-
<a id="__codelineno-0-688" name="__codelineno-0-688"></a>
|
|
10386
|
-
<a id="__codelineno-0-689" name="__codelineno-0-689"></a>
|
|
10387
|
-
<a id="__codelineno-0-690" name="__codelineno-0-690"></a> <span class="k">
|
|
10388
|
-
<a id="__codelineno-0-691" name="__codelineno-0-691"></a> <span class="
|
|
10389
|
-
<a id="__codelineno-0-692" name="__codelineno-0-692"></a>
|
|
10390
|
-
<a id="__codelineno-0-693" name="__codelineno-0-693"></a>
|
|
10391
|
-
<a id="__codelineno-0-694" name="__codelineno-0-694"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10392
|
-
<a id="__codelineno-0-695" name="__codelineno-0-695"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10337
|
+
<span class="normal"><a href="#__codelineno-0-693">693</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-680" name="__codelineno-0-680"></a><span class="k">def</span> <span class="nf">run_validators</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10338
|
+
<a id="__codelineno-0-681" name="__codelineno-0-681"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10339
|
+
<a id="__codelineno-0-682" name="__codelineno-0-682"></a><span class="sd"> Runs all validators against `value` and raise ValidationError if necessary.</span>
|
|
10340
|
+
<a id="__codelineno-0-683" name="__codelineno-0-683"></a><span class="sd"> Some validators can't be created at field initialization time.</span>
|
|
10341
|
+
<a id="__codelineno-0-684" name="__codelineno-0-684"></a><span class="sd"> """</span>
|
|
10342
|
+
<a id="__codelineno-0-685" name="__codelineno-0-685"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">run_validators</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10343
|
+
<a id="__codelineno-0-686" name="__codelineno-0-686"></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10344
|
+
<a id="__codelineno-0-687" name="__codelineno-0-687"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
10345
|
+
<a id="__codelineno-0-688" name="__codelineno-0-688"></a> <span class="k">try</span><span class="p">:</span>
|
|
10346
|
+
<a id="__codelineno-0-689" name="__codelineno-0-689"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">run_validators</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
10347
|
+
<a id="__codelineno-0-690" name="__codelineno-0-690"></a> <span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
10348
|
+
<a id="__codelineno-0-691" name="__codelineno-0-691"></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
10349
|
+
<a id="__codelineno-0-692" name="__codelineno-0-692"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10350
|
+
<a id="__codelineno-0-693" name="__codelineno-0-693"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10393
10351
|
</code></pre></div></td></tr></table></div>
|
|
10394
10352
|
</details>
|
|
10395
10353
|
</div>
|
|
@@ -10414,7 +10372,9 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10414
10372
|
|
|
10415
10373
|
<details class="quote">
|
|
10416
10374
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10417
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10375
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-640">640</a></span>
|
|
10376
|
+
<span class="normal"><a href="#__codelineno-0-641">641</a></span>
|
|
10377
|
+
<span class="normal"><a href="#__codelineno-0-642">642</a></span>
|
|
10418
10378
|
<span class="normal"><a href="#__codelineno-0-643">643</a></span>
|
|
10419
10379
|
<span class="normal"><a href="#__codelineno-0-644">644</a></span>
|
|
10420
10380
|
<span class="normal"><a href="#__codelineno-0-645">645</a></span>
|
|
@@ -10436,33 +10396,31 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10436
10396
|
<span class="normal"><a href="#__codelineno-0-661">661</a></span>
|
|
10437
10397
|
<span class="normal"><a href="#__codelineno-0-662">662</a></span>
|
|
10438
10398
|
<span class="normal"><a href="#__codelineno-0-663">663</a></span>
|
|
10439
|
-
<span class="normal"><a href="#__codelineno-0-664">664</a></span>
|
|
10440
|
-
<
|
|
10441
|
-
<
|
|
10442
|
-
<a id="__codelineno-0-643" name="__codelineno-0-643"></a><span class="
|
|
10443
|
-
<a id="__codelineno-0-644" name="__codelineno-0-644"></a><span class="sd">
|
|
10444
|
-
<a id="__codelineno-0-645" name="__codelineno-0-645"></a
|
|
10445
|
-
<a id="__codelineno-0-646" name="__codelineno-0-646"></a
|
|
10446
|
-
<a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="k">
|
|
10447
|
-
<a id="__codelineno-0-648" name="__codelineno-0-648"></a> <span class="
|
|
10448
|
-
<a id="__codelineno-0-649" name="__codelineno-0-649"></a>
|
|
10449
|
-
<a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="k">
|
|
10450
|
-
<a id="__codelineno-0-651" name="__codelineno-0-651"></a> <span class="
|
|
10451
|
-
<a id="__codelineno-0-652" name="__codelineno-0-652"></a>
|
|
10452
|
-
<a id="__codelineno-0-653" name="__codelineno-0-653"></a>
|
|
10453
|
-
<a id="__codelineno-0-654" name="__codelineno-0-654"></a>
|
|
10454
|
-
<a id="__codelineno-0-655" name="__codelineno-0-655"></a>
|
|
10455
|
-
<a id="__codelineno-0-656" name="__codelineno-0-656"></a>
|
|
10456
|
-
<a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="n">
|
|
10457
|
-
<a id="__codelineno-0-658" name="__codelineno-0-658"></a>
|
|
10458
|
-
<a id="__codelineno-0-659" name="__codelineno-0-659"></a>
|
|
10459
|
-
<a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="k">
|
|
10460
|
-
<a id="__codelineno-0-661" name="__codelineno-0-661"></a> <span class="n">
|
|
10461
|
-
<a id="__codelineno-0-662" name="__codelineno-0-662"></a>
|
|
10462
|
-
<a id="__codelineno-0-663" name="__codelineno-0-663"></a>
|
|
10463
|
-
<a id="__codelineno-0-664" name="__codelineno-0-664"></a> <span class="k">
|
|
10464
|
-
<a id="__codelineno-0-665" name="__codelineno-0-665"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10465
|
-
<a id="__codelineno-0-666" name="__codelineno-0-666"></a> <span class="k">return</span> <span class="n">values</span>
|
|
10399
|
+
<span class="normal"><a href="#__codelineno-0-664">664</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-640" name="__codelineno-0-640"></a><span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10400
|
+
<a id="__codelineno-0-641" name="__codelineno-0-641"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10401
|
+
<a id="__codelineno-0-642" name="__codelineno-0-642"></a><span class="sd"> Convert `value` into JSON, raising django.core.exceptions.ValidationError</span>
|
|
10402
|
+
<a id="__codelineno-0-643" name="__codelineno-0-643"></a><span class="sd"> if the data can't be converted. Return the converted value.</span>
|
|
10403
|
+
<a id="__codelineno-0-644" name="__codelineno-0-644"></a><span class="sd"> """</span>
|
|
10404
|
+
<a id="__codelineno-0-645" name="__codelineno-0-645"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
10405
|
+
<a id="__codelineno-0-646" name="__codelineno-0-646"></a> <span class="n">items</span> <span class="o">=</span> <span class="n">value</span>
|
|
10406
|
+
<a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="k">elif</span> <span class="n">value</span><span class="p">:</span>
|
|
10407
|
+
<a id="__codelineno-0-648" name="__codelineno-0-648"></a> <span class="k">try</span><span class="p">:</span>
|
|
10408
|
+
<a id="__codelineno-0-649" name="__codelineno-0-649"></a> <span class="n">items</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">delimiter</span><span class="p">)</span>
|
|
10409
|
+
<a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
10410
|
+
<a id="__codelineno-0-651" name="__codelineno-0-651"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
10411
|
+
<a id="__codelineno-0-652" name="__codelineno-0-652"></a> <span class="k">else</span><span class="p">:</span>
|
|
10412
|
+
<a id="__codelineno-0-653" name="__codelineno-0-653"></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10413
|
+
<a id="__codelineno-0-654" name="__codelineno-0-654"></a>
|
|
10414
|
+
<a id="__codelineno-0-655" name="__codelineno-0-655"></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10415
|
+
<a id="__codelineno-0-656" name="__codelineno-0-656"></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10416
|
+
<a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
|
|
10417
|
+
<a id="__codelineno-0-658" name="__codelineno-0-658"></a> <span class="k">try</span><span class="p">:</span>
|
|
10418
|
+
<a id="__codelineno-0-659" name="__codelineno-0-659"></a> <span class="n">values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">item</span><span class="p">))</span>
|
|
10419
|
+
<a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
10420
|
+
<a id="__codelineno-0-661" name="__codelineno-0-661"></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
10421
|
+
<a id="__codelineno-0-662" name="__codelineno-0-662"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10422
|
+
<a id="__codelineno-0-663" name="__codelineno-0-663"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10423
|
+
<a id="__codelineno-0-664" name="__codelineno-0-664"></a> <span class="k">return</span> <span class="n">values</span>
|
|
10466
10424
|
</code></pre></div></td></tr></table></div>
|
|
10467
10425
|
</details>
|
|
10468
10426
|
</div>
|
|
@@ -10486,7 +10444,9 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10486
10444
|
|
|
10487
10445
|
<details class="quote">
|
|
10488
10446
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10489
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10447
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-666">666</a></span>
|
|
10448
|
+
<span class="normal"><a href="#__codelineno-0-667">667</a></span>
|
|
10449
|
+
<span class="normal"><a href="#__codelineno-0-668">668</a></span>
|
|
10490
10450
|
<span class="normal"><a href="#__codelineno-0-669">669</a></span>
|
|
10491
10451
|
<span class="normal"><a href="#__codelineno-0-670">670</a></span>
|
|
10492
10452
|
<span class="normal"><a href="#__codelineno-0-671">671</a></span>
|
|
@@ -10496,21 +10456,19 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10496
10456
|
<span class="normal"><a href="#__codelineno-0-675">675</a></span>
|
|
10497
10457
|
<span class="normal"><a href="#__codelineno-0-676">676</a></span>
|
|
10498
10458
|
<span class="normal"><a href="#__codelineno-0-677">677</a></span>
|
|
10499
|
-
<span class="normal"><a href="#__codelineno-0-678">678</a></span>
|
|
10500
|
-
<
|
|
10501
|
-
<
|
|
10502
|
-
<a id="__codelineno-0-669" name="__codelineno-0-669"></a><span class="
|
|
10503
|
-
<a id="__codelineno-0-670" name="__codelineno-0-670"></a><span class="
|
|
10504
|
-
<a id="__codelineno-0-671" name="__codelineno-0-671"></a
|
|
10505
|
-
<a id="__codelineno-0-672" name="__codelineno-0-672"></a> <span class="
|
|
10506
|
-
<a id="__codelineno-0-673" name="__codelineno-0-673"></a>
|
|
10507
|
-
<a id="__codelineno-0-674" name="__codelineno-0-674"></a>
|
|
10508
|
-
<a id="__codelineno-0-675" name="__codelineno-0-675"></a> <span class="k">
|
|
10509
|
-
<a id="__codelineno-0-676" name="__codelineno-0-676"></a> <span class="
|
|
10510
|
-
<a id="__codelineno-0-677" name="__codelineno-0-677"></a>
|
|
10511
|
-
<a id="__codelineno-0-678" name="__codelineno-0-678"></a>
|
|
10512
|
-
<a id="__codelineno-0-679" name="__codelineno-0-679"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10513
|
-
<a id="__codelineno-0-680" name="__codelineno-0-680"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10459
|
+
<span class="normal"><a href="#__codelineno-0-678">678</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-666" name="__codelineno-0-666"></a><span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10460
|
+
<a id="__codelineno-0-667" name="__codelineno-0-667"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10461
|
+
<a id="__codelineno-0-668" name="__codelineno-0-668"></a><span class="sd"> Validate `value` and raise ValidationError if necessary.</span>
|
|
10462
|
+
<a id="__codelineno-0-669" name="__codelineno-0-669"></a><span class="sd"> """</span>
|
|
10463
|
+
<a id="__codelineno-0-670" name="__codelineno-0-670"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
10464
|
+
<a id="__codelineno-0-671" name="__codelineno-0-671"></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
10465
|
+
<a id="__codelineno-0-672" name="__codelineno-0-672"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
10466
|
+
<a id="__codelineno-0-673" name="__codelineno-0-673"></a> <span class="k">try</span><span class="p">:</span>
|
|
10467
|
+
<a id="__codelineno-0-674" name="__codelineno-0-674"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
10468
|
+
<a id="__codelineno-0-675" name="__codelineno-0-675"></a> <span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
10469
|
+
<a id="__codelineno-0-676" name="__codelineno-0-676"></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
10470
|
+
<a id="__codelineno-0-677" name="__codelineno-0-677"></a> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
10471
|
+
<a id="__codelineno-0-678" name="__codelineno-0-678"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
10514
10472
|
</code></pre></div></td></tr></table></div>
|
|
10515
10473
|
</details>
|
|
10516
10474
|
</div>
|
|
@@ -10545,7 +10503,9 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10545
10503
|
|
|
10546
10504
|
<details class="quote">
|
|
10547
10505
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10548
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10506
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-587">587</a></span>
|
|
10507
|
+
<span class="normal"><a href="#__codelineno-0-588">588</a></span>
|
|
10508
|
+
<span class="normal"><a href="#__codelineno-0-589">589</a></span>
|
|
10549
10509
|
<span class="normal"><a href="#__codelineno-0-590">590</a></span>
|
|
10550
10510
|
<span class="normal"><a href="#__codelineno-0-591">591</a></span>
|
|
10551
10511
|
<span class="normal"><a href="#__codelineno-0-592">592</a></span>
|
|
@@ -10565,31 +10525,29 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10565
10525
|
<span class="normal"><a href="#__codelineno-0-606">606</a></span>
|
|
10566
10526
|
<span class="normal"><a href="#__codelineno-0-607">607</a></span>
|
|
10567
10527
|
<span class="normal"><a href="#__codelineno-0-608">608</a></span>
|
|
10568
|
-
<span class="normal"><a href="#__codelineno-0-609">609</a></span>
|
|
10569
|
-
<
|
|
10570
|
-
<
|
|
10571
|
-
<a id="__codelineno-0-590" name="__codelineno-0-590"></a><span class="
|
|
10572
|
-
<a id="__codelineno-0-591" name="__codelineno-0-591"></a
|
|
10573
|
-
<a id="__codelineno-0-592" name="__codelineno-0-592"></a><span class="
|
|
10574
|
-
<a id="__codelineno-0-593" name="__codelineno-0-593"></a>
|
|
10575
|
-
<a id="__codelineno-0-594" name="__codelineno-0-594"></a>
|
|
10576
|
-
<a id="__codelineno-0-595" name="__codelineno-0-595"></a>
|
|
10577
|
-
<a id="__codelineno-0-596" name="__codelineno-0-596"></a>
|
|
10578
|
-
<a id="__codelineno-0-597" name="__codelineno-0-597"></a>
|
|
10579
|
-
<a id="__codelineno-0-598" name="__codelineno-0-598"></a>
|
|
10580
|
-
<a id="__codelineno-0-599" name="__codelineno-0-599"></a>
|
|
10581
|
-
<a id="__codelineno-0-600" name="__codelineno-0-600"></a>
|
|
10582
|
-
<a id="__codelineno-0-601" name="__codelineno-0-601"></a> <span class="k">if</span> <span class="
|
|
10583
|
-
<a id="__codelineno-0-602" name="__codelineno-0-602"></a> <span class="k">return</span> <span class="
|
|
10584
|
-
<a id="__codelineno-0-603" name="__codelineno-0-603"></a> <span class="k">
|
|
10585
|
-
<a id="__codelineno-0-604" name="__codelineno-0-604"></a>
|
|
10586
|
-
<a id="__codelineno-0-605" name="__codelineno-0-605"></a>
|
|
10587
|
-
<a id="__codelineno-0-606" name="__codelineno-0-606"></a>
|
|
10588
|
-
<a id="__codelineno-0-607" name="__codelineno-0-607"></a>
|
|
10589
|
-
<a id="__codelineno-0-608" name="__codelineno-0-608"></a>
|
|
10590
|
-
<a id="__codelineno-0-609" name="__codelineno-0-609"></a> <span class="k">
|
|
10591
|
-
<a id="__codelineno-0-610" name="__codelineno-0-610"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
10592
|
-
<a id="__codelineno-0-611" name="__codelineno-0-611"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bound_data</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">initial</span><span class="p">)</span>
|
|
10528
|
+
<span class="normal"><a href="#__codelineno-0-609">609</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-587" name="__codelineno-0-587"></a><span class="k">class</span> <span class="nc">JSONField</span><span class="p">(</span><span class="n">_JSONField</span><span class="p">):</span>
|
|
10529
|
+
<a id="__codelineno-0-588" name="__codelineno-0-588"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10530
|
+
<a id="__codelineno-0-589" name="__codelineno-0-589"></a><span class="sd"> Custom wrapper around Django's built-in JSONField to avoid presenting "null" as the default text.</span>
|
|
10531
|
+
<a id="__codelineno-0-590" name="__codelineno-0-590"></a><span class="sd"> """</span>
|
|
10532
|
+
<a id="__codelineno-0-591" name="__codelineno-0-591"></a>
|
|
10533
|
+
<a id="__codelineno-0-592" name="__codelineno-0-592"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
10534
|
+
<a id="__codelineno-0-593" name="__codelineno-0-593"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
10535
|
+
<a id="__codelineno-0-594" name="__codelineno-0-594"></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span><span class="p">:</span>
|
|
10536
|
+
<a id="__codelineno-0-595" name="__codelineno-0-595"></a> <span class="bp">self</span><span class="o">.</span><span class="n">help_text</span> <span class="o">=</span> <span class="s1">'Enter context data in <a href="https://json.org/">JSON</a> format.'</span>
|
|
10537
|
+
<a id="__codelineno-0-596" name="__codelineno-0-596"></a> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"placeholder"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span>
|
|
10538
|
+
<a id="__codelineno-0-597" name="__codelineno-0-597"></a>
|
|
10539
|
+
<a id="__codelineno-0-598" name="__codelineno-0-598"></a> <span class="k">def</span> <span class="nf">prepare_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10540
|
+
<a id="__codelineno-0-599" name="__codelineno-0-599"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">InvalidJSONInput</span><span class="p">):</span>
|
|
10541
|
+
<a id="__codelineno-0-600" name="__codelineno-0-600"></a> <span class="k">return</span> <span class="n">value</span>
|
|
10542
|
+
<a id="__codelineno-0-601" name="__codelineno-0-601"></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
10543
|
+
<a id="__codelineno-0-602" name="__codelineno-0-602"></a> <span class="k">return</span> <span class="s2">""</span>
|
|
10544
|
+
<a id="__codelineno-0-603" name="__codelineno-0-603"></a> <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">sort_keys</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
10545
|
+
<a id="__codelineno-0-604" name="__codelineno-0-604"></a>
|
|
10546
|
+
<a id="__codelineno-0-605" name="__codelineno-0-605"></a> <span class="c1"># TODO: remove this when we upgrade to Django 4</span>
|
|
10547
|
+
<a id="__codelineno-0-606" name="__codelineno-0-606"></a> <span class="k">def</span> <span class="nf">bound_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">initial</span><span class="p">):</span>
|
|
10548
|
+
<a id="__codelineno-0-607" name="__codelineno-0-607"></a> <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
10549
|
+
<a id="__codelineno-0-608" name="__codelineno-0-608"></a> <span class="k">return</span> <span class="kc">None</span>
|
|
10550
|
+
<a id="__codelineno-0-609" name="__codelineno-0-609"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bound_data</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">initial</span><span class="p">)</span>
|
|
10593
10551
|
</code></pre></div></td></tr></table></div>
|
|
10594
10552
|
</details>
|
|
10595
10553
|
|
|
@@ -10634,19 +10592,19 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10634
10592
|
|
|
10635
10593
|
<details class="quote">
|
|
10636
10594
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10637
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10595
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-578">578</a></span>
|
|
10596
|
+
<span class="normal"><a href="#__codelineno-0-579">579</a></span>
|
|
10597
|
+
<span class="normal"><a href="#__codelineno-0-580">580</a></span>
|
|
10638
10598
|
<span class="normal"><a href="#__codelineno-0-581">581</a></span>
|
|
10639
10599
|
<span class="normal"><a href="#__codelineno-0-582">582</a></span>
|
|
10640
10600
|
<span class="normal"><a href="#__codelineno-0-583">583</a></span>
|
|
10641
|
-
<span class="normal"><a href="#__codelineno-0-584">584</a></span>
|
|
10642
|
-
<
|
|
10643
|
-
<
|
|
10644
|
-
<a id="__codelineno-0-581" name="__codelineno-0-581"></a><span class="
|
|
10645
|
-
<a id="__codelineno-0-582" name="__codelineno-0-582"></a><span class="sd">
|
|
10646
|
-
<a id="__codelineno-0-583" name="__codelineno-0-583"></a
|
|
10647
|
-
<a id="__codelineno-0-584" name="__codelineno-0-584"></a><span class="
|
|
10648
|
-
<a id="__codelineno-0-585" name="__codelineno-0-585"></a>
|
|
10649
|
-
<a id="__codelineno-0-586" name="__codelineno-0-586"></a> <span class="n">default_validators</span> <span class="o">=</span> <span class="p">[</span><span class="n">validators</span><span class="o">.</span><span class="n">EnhancedURLValidator</span><span class="p">()]</span>
|
|
10601
|
+
<span class="normal"><a href="#__codelineno-0-584">584</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-578" name="__codelineno-0-578"></a><span class="k">class</span> <span class="nc">LaxURLField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">URLField</span><span class="p">):</span>
|
|
10602
|
+
<a id="__codelineno-0-579" name="__codelineno-0-579"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10603
|
+
<a id="__codelineno-0-580" name="__codelineno-0-580"></a><span class="sd"> Modifies Django's built-in URLField to remove the requirement for fully-qualified domain names</span>
|
|
10604
|
+
<a id="__codelineno-0-581" name="__codelineno-0-581"></a><span class="sd"> (e.g. http://myserver/ is valid)</span>
|
|
10605
|
+
<a id="__codelineno-0-582" name="__codelineno-0-582"></a><span class="sd"> """</span>
|
|
10606
|
+
<a id="__codelineno-0-583" name="__codelineno-0-583"></a>
|
|
10607
|
+
<a id="__codelineno-0-584" name="__codelineno-0-584"></a> <span class="n">default_validators</span> <span class="o">=</span> <span class="p">[</span><span class="n">validators</span><span class="o">.</span><span class="n">EnhancedURLValidator</span><span class="p">()]</span>
|
|
10650
10608
|
</code></pre></div></td></tr></table></div>
|
|
10651
10609
|
</details>
|
|
10652
10610
|
|
|
@@ -10691,7 +10649,9 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10691
10649
|
|
|
10692
10650
|
<details class="quote">
|
|
10693
10651
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10694
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10652
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-716">716</a></span>
|
|
10653
|
+
<span class="normal"><a href="#__codelineno-0-717">717</a></span>
|
|
10654
|
+
<span class="normal"><a href="#__codelineno-0-718">718</a></span>
|
|
10695
10655
|
<span class="normal"><a href="#__codelineno-0-719">719</a></span>
|
|
10696
10656
|
<span class="normal"><a href="#__codelineno-0-720">720</a></span>
|
|
10697
10657
|
<span class="normal"><a href="#__codelineno-0-721">721</a></span>
|
|
@@ -10744,64 +10704,62 @@ if the data can't be converted. Return the converted value.</p>
|
|
|
10744
10704
|
<span class="normal"><a href="#__codelineno-0-768">768</a></span>
|
|
10745
10705
|
<span class="normal"><a href="#__codelineno-0-769">769</a></span>
|
|
10746
10706
|
<span class="normal"><a href="#__codelineno-0-770">770</a></span>
|
|
10747
|
-
<span class="normal"><a href="#__codelineno-0-771">771</a></span>
|
|
10748
|
-
<
|
|
10749
|
-
<
|
|
10750
|
-
<a id="__codelineno-0-719" name="__codelineno-0-719"></a
|
|
10751
|
-
<a id="__codelineno-0-720" name="__codelineno-0-720"></a><span class="sd">
|
|
10752
|
-
<a id="__codelineno-0-721" name="__codelineno-0-721"></a>
|
|
10753
|
-
<a id="__codelineno-0-722" name="__codelineno-0-722"></a
|
|
10754
|
-
<a id="__codelineno-0-723" name="__codelineno-0-723"></a><span class="
|
|
10755
|
-
<a id="__codelineno-0-724" name="__codelineno-0-724"></a>
|
|
10756
|
-
<a id="__codelineno-0-725" name="__codelineno-0-725"></a>
|
|
10757
|
-
<a id="__codelineno-0-726" name="__codelineno-0-726"></a> <span class="
|
|
10758
|
-
<a id="__codelineno-0-727" name="__codelineno-0-727"></a>
|
|
10759
|
-
<a id="__codelineno-0-728" name="__codelineno-0-728"></a>
|
|
10760
|
-
<a id="__codelineno-0-729" name="__codelineno-0-729"></a>
|
|
10761
|
-
<a id="__codelineno-0-730" name="__codelineno-0-730"></a>
|
|
10762
|
-
<a id="__codelineno-0-731" name="__codelineno-0-731"></a>
|
|
10763
|
-
<a id="__codelineno-0-732" name="__codelineno-0-732"></a
|
|
10764
|
-
<a id="__codelineno-0-733" name="__codelineno-0-733"></a><span class="
|
|
10765
|
-
<a id="__codelineno-0-734" name="__codelineno-0-734"></a><span class="sd">
|
|
10766
|
-
<a id="__codelineno-0-735" name="__codelineno-0-735"></a><span class="sd">
|
|
10767
|
-
<a id="__codelineno-0-736" name="__codelineno-0-736"></a><span class="
|
|
10768
|
-
<a id="__codelineno-0-737" name="__codelineno-0-737"></a
|
|
10769
|
-
<a id="__codelineno-0-738" name="__codelineno-0-738"></a>
|
|
10770
|
-
<a id="__codelineno-0-739" name="__codelineno-0-739"></a> <span class="
|
|
10771
|
-
<a id="__codelineno-0-740" name="__codelineno-0-740"></a>
|
|
10772
|
-
<a id="__codelineno-0-741" name="__codelineno-0-741"></a> <span class="
|
|
10773
|
-
<a id="__codelineno-0-742" name="__codelineno-0-742"></a>
|
|
10774
|
-
<a id="__codelineno-0-743" name="__codelineno-0-743"></a> <span class="k">
|
|
10775
|
-
<a id="__codelineno-0-744" name="__codelineno-0-744"></a> <span class="
|
|
10776
|
-
<a id="__codelineno-0-745" name="__codelineno-0-745"></a>
|
|
10777
|
-
<a id="__codelineno-0-746" name="__codelineno-0-746"></a>
|
|
10778
|
-
<a id="__codelineno-0-747" name="__codelineno-0-747"></a>
|
|
10779
|
-
<a id="__codelineno-0-748" name="__codelineno-0-748"></a>
|
|
10780
|
-
<a id="__codelineno-0-749" name="__codelineno-0-749"></a>
|
|
10781
|
-
<a id="__codelineno-0-750" name="__codelineno-0-750"></a>
|
|
10782
|
-
<a id="__codelineno-0-751" name="__codelineno-0-751"></a> <span class="n">
|
|
10783
|
-
<a id="__codelineno-0-752" name="__codelineno-0-752"></a>
|
|
10784
|
-
<a id="__codelineno-0-753" name="__codelineno-0-753"></a>
|
|
10785
|
-
<a id="__codelineno-0-754" name="__codelineno-0-754"></a>
|
|
10786
|
-
<a id="__codelineno-0-755" name="__codelineno-0-755"></a>
|
|
10787
|
-
<a id="__codelineno-0-756" name="__codelineno-0-756"></a>
|
|
10788
|
-
<a id="__codelineno-0-757" name="__codelineno-0-757"></a> <span class="n">
|
|
10789
|
-
<a id="__codelineno-0-758" name="__codelineno-0-758"></a>
|
|
10790
|
-
<a id="__codelineno-0-759" name="__codelineno-0-759"></a>
|
|
10791
|
-
<a id="__codelineno-0-760" name="__codelineno-0-760"></a>
|
|
10792
|
-
<a id="__codelineno-0-761" name="__codelineno-0-761"></a>
|
|
10793
|
-
<a id="__codelineno-0-762" name="__codelineno-0-762"></a>
|
|
10794
|
-
<a id="__codelineno-0-763" name="__codelineno-0-763"></a>
|
|
10795
|
-
<a id="__codelineno-0-764" name="__codelineno-0-764"></a> <span class="
|
|
10796
|
-
<a id="__codelineno-0-765" name="__codelineno-0-765"></a>
|
|
10797
|
-
<a id="__codelineno-0-766" name="__codelineno-0-766"></a>
|
|
10798
|
-
<a id="__codelineno-0-767" name="__codelineno-0-767"></a>
|
|
10799
|
-
<a id="__codelineno-0-768" name="__codelineno-0-768"></a> <span class="n">
|
|
10800
|
-
<a id="__codelineno-0-769" name="__codelineno-0-769"></a> <span class="
|
|
10801
|
-
<a id="__codelineno-0-770" name="__codelineno-0-770"></a>
|
|
10802
|
-
<a id="__codelineno-0-771" name="__codelineno-0-771"></a> <span class="k">
|
|
10803
|
-
<a id="__codelineno-0-772" name="__codelineno-0-772"></a> <span class="n">result</span> <span class="o">+=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">null_value</span><span class="p">]</span>
|
|
10804
|
-
<a id="__codelineno-0-773" name="__codelineno-0-773"></a> <span class="k">return</span> <span class="n">result</span>
|
|
10707
|
+
<span class="normal"><a href="#__codelineno-0-771">771</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-716" name="__codelineno-0-716"></a><span class="k">class</span> <span class="nc">MultiMatchModelMultipleChoiceField</span><span class="p">(</span><span class="n">DynamicModelChoiceMixin</span><span class="p">,</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">fields</span><span class="o">.</span><span class="n">ModelMultipleChoiceField</span><span class="p">):</span>
|
|
10708
|
+
<a id="__codelineno-0-717" name="__codelineno-0-717"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10709
|
+
<a id="__codelineno-0-718" name="__codelineno-0-718"></a><span class="sd"> Filter field to support matching on the PK *or* `to_field_name` fields (defaulting to `slug` if not specified).</span>
|
|
10710
|
+
<a id="__codelineno-0-719" name="__codelineno-0-719"></a>
|
|
10711
|
+
<a id="__codelineno-0-720" name="__codelineno-0-720"></a><span class="sd"> Raises ValidationError if none of the fields match the requested value.</span>
|
|
10712
|
+
<a id="__codelineno-0-721" name="__codelineno-0-721"></a><span class="sd"> """</span>
|
|
10713
|
+
<a id="__codelineno-0-722" name="__codelineno-0-722"></a>
|
|
10714
|
+
<a id="__codelineno-0-723" name="__codelineno-0-723"></a> <span class="nb">filter</span> <span class="o">=</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">ModelMultipleChoiceFilter</span>
|
|
10715
|
+
<a id="__codelineno-0-724" name="__codelineno-0-724"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">APISelectMultiple</span>
|
|
10716
|
+
<a id="__codelineno-0-725" name="__codelineno-0-725"></a>
|
|
10717
|
+
<a id="__codelineno-0-726" name="__codelineno-0-726"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
10718
|
+
<a id="__codelineno-0-727" name="__codelineno-0-727"></a> <span class="bp">self</span><span class="o">.</span><span class="n">natural_key</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"to_field_name"</span><span class="p">,</span> <span class="s2">"slug"</span><span class="p">)</span>
|
|
10719
|
+
<a id="__codelineno-0-728" name="__codelineno-0-728"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
10720
|
+
<a id="__codelineno-0-729" name="__codelineno-0-729"></a>
|
|
10721
|
+
<a id="__codelineno-0-730" name="__codelineno-0-730"></a> <span class="k">def</span> <span class="nf">_check_values</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">):</span>
|
|
10722
|
+
<a id="__codelineno-0-731" name="__codelineno-0-731"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10723
|
+
<a id="__codelineno-0-732" name="__codelineno-0-732"></a><span class="sd"> This method overloads the grandparent method in `django.forms.models.ModelMultipleChoiceField`,</span>
|
|
10724
|
+
<a id="__codelineno-0-733" name="__codelineno-0-733"></a><span class="sd"> re-using some of that method's existing logic and adding support for coupling this field with</span>
|
|
10725
|
+
<a id="__codelineno-0-734" name="__codelineno-0-734"></a><span class="sd"> multiple model fields.</span>
|
|
10726
|
+
<a id="__codelineno-0-735" name="__codelineno-0-735"></a><span class="sd"> """</span>
|
|
10727
|
+
<a id="__codelineno-0-736" name="__codelineno-0-736"></a> <span class="n">null</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_label</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">values</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_value</span> <span class="ow">in</span> <span class="n">values</span>
|
|
10728
|
+
<a id="__codelineno-0-737" name="__codelineno-0-737"></a> <span class="k">if</span> <span class="n">null</span><span class="p">:</span>
|
|
10729
|
+
<a id="__codelineno-0-738" name="__codelineno-0-738"></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[</span><span class="n">v</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values</span> <span class="k">if</span> <span class="n">v</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_value</span><span class="p">]</span>
|
|
10730
|
+
<a id="__codelineno-0-739" name="__codelineno-0-739"></a> <span class="c1"># deduplicate given values to avoid creating many querysets or</span>
|
|
10731
|
+
<a id="__codelineno-0-740" name="__codelineno-0-740"></a> <span class="c1"># requiring the database backend deduplicate efficiently.</span>
|
|
10732
|
+
<a id="__codelineno-0-741" name="__codelineno-0-741"></a> <span class="k">try</span><span class="p">:</span>
|
|
10733
|
+
<a id="__codelineno-0-742" name="__codelineno-0-742"></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
|
|
10734
|
+
<a id="__codelineno-0-743" name="__codelineno-0-743"></a> <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
|
10735
|
+
<a id="__codelineno-0-744" name="__codelineno-0-744"></a> <span class="c1"># list of lists isn't hashable, for example</span>
|
|
10736
|
+
<a id="__codelineno-0-745" name="__codelineno-0-745"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span>
|
|
10737
|
+
<a id="__codelineno-0-746" name="__codelineno-0-746"></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s2">"invalid_list"</span><span class="p">],</span>
|
|
10738
|
+
<a id="__codelineno-0-747" name="__codelineno-0-747"></a> <span class="n">code</span><span class="o">=</span><span class="s2">"invalid_list"</span><span class="p">,</span>
|
|
10739
|
+
<a id="__codelineno-0-748" name="__codelineno-0-748"></a> <span class="p">)</span>
|
|
10740
|
+
<a id="__codelineno-0-749" name="__codelineno-0-749"></a> <span class="n">pk_values</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
10741
|
+
<a id="__codelineno-0-750" name="__codelineno-0-750"></a> <span class="n">natural_key_values</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
10742
|
+
<a id="__codelineno-0-751" name="__codelineno-0-751"></a> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
|
|
10743
|
+
<a id="__codelineno-0-752" name="__codelineno-0-752"></a> <span class="n">query</span> <span class="o">=</span> <span class="n">Q</span><span class="p">()</span>
|
|
10744
|
+
<a id="__codelineno-0-753" name="__codelineno-0-753"></a> <span class="k">if</span> <span class="n">data_utils</span><span class="o">.</span><span class="n">is_uuid</span><span class="p">(</span><span class="n">item</span><span class="p">):</span>
|
|
10745
|
+
<a id="__codelineno-0-754" name="__codelineno-0-754"></a> <span class="n">pk_values</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
10746
|
+
<a id="__codelineno-0-755" name="__codelineno-0-755"></a> <span class="n">query</span> <span class="o">|=</span> <span class="n">Q</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">item</span><span class="p">)</span>
|
|
10747
|
+
<a id="__codelineno-0-756" name="__codelineno-0-756"></a> <span class="k">else</span><span class="p">:</span>
|
|
10748
|
+
<a id="__codelineno-0-757" name="__codelineno-0-757"></a> <span class="n">natural_key_values</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
10749
|
+
<a id="__codelineno-0-758" name="__codelineno-0-758"></a> <span class="n">query</span> <span class="o">|=</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">natural_key</span><span class="p">:</span> <span class="n">item</span><span class="p">})</span>
|
|
10750
|
+
<a id="__codelineno-0-759" name="__codelineno-0-759"></a> <span class="n">qs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
|
|
10751
|
+
<a id="__codelineno-0-760" name="__codelineno-0-760"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">qs</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
10752
|
+
<a id="__codelineno-0-761" name="__codelineno-0-761"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span>
|
|
10753
|
+
<a id="__codelineno-0-762" name="__codelineno-0-762"></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s2">"invalid_choice"</span><span class="p">],</span>
|
|
10754
|
+
<a id="__codelineno-0-763" name="__codelineno-0-763"></a> <span class="n">code</span><span class="o">=</span><span class="s2">"invalid_choice"</span><span class="p">,</span>
|
|
10755
|
+
<a id="__codelineno-0-764" name="__codelineno-0-764"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">"value"</span><span class="p">:</span> <span class="n">item</span><span class="p">},</span>
|
|
10756
|
+
<a id="__codelineno-0-765" name="__codelineno-0-765"></a> <span class="p">)</span>
|
|
10757
|
+
<a id="__codelineno-0-766" name="__codelineno-0-766"></a> <span class="n">query</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">pk__in</span><span class="o">=</span><span class="n">pk_values</span><span class="p">)</span> <span class="o">|</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</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="n">natural_key</span><span class="si">}</span><span class="s2">__in"</span><span class="p">:</span> <span class="n">natural_key_values</span><span class="p">})</span>
|
|
10758
|
+
<a id="__codelineno-0-767" name="__codelineno-0-767"></a> <span class="n">qs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
|
|
10759
|
+
<a id="__codelineno-0-768" name="__codelineno-0-768"></a> <span class="n">result</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">qs</span><span class="p">)</span>
|
|
10760
|
+
<a id="__codelineno-0-769" name="__codelineno-0-769"></a> <span class="k">if</span> <span class="n">null</span><span class="p">:</span>
|
|
10761
|
+
<a id="__codelineno-0-770" name="__codelineno-0-770"></a> <span class="n">result</span> <span class="o">+=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">null_value</span><span class="p">]</span>
|
|
10762
|
+
<a id="__codelineno-0-771" name="__codelineno-0-771"></a> <span class="k">return</span> <span class="n">result</span>
|
|
10805
10763
|
</code></pre></div></td></tr></table></div>
|
|
10806
10764
|
</details>
|
|
10807
10765
|
|
|
@@ -10846,7 +10804,9 @@ Press enter to complete an input.</p>
|
|
|
10846
10804
|
|
|
10847
10805
|
<details class="quote">
|
|
10848
10806
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
10849
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10807
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-247">247</a></span>
|
|
10808
|
+
<span class="normal"><a href="#__codelineno-0-248">248</a></span>
|
|
10809
|
+
<span class="normal"><a href="#__codelineno-0-249">249</a></span>
|
|
10850
10810
|
<span class="normal"><a href="#__codelineno-0-250">250</a></span>
|
|
10851
10811
|
<span class="normal"><a href="#__codelineno-0-251">251</a></span>
|
|
10852
10812
|
<span class="normal"><a href="#__codelineno-0-252">252</a></span>
|
|
@@ -10876,41 +10836,39 @@ Press enter to complete an input.</p>
|
|
|
10876
10836
|
<span class="normal"><a href="#__codelineno-0-276">276</a></span>
|
|
10877
10837
|
<span class="normal"><a href="#__codelineno-0-277">277</a></span>
|
|
10878
10838
|
<span class="normal"><a href="#__codelineno-0-278">278</a></span>
|
|
10879
|
-
<span class="normal"><a href="#__codelineno-0-279">279</a></span>
|
|
10880
|
-
<
|
|
10881
|
-
<
|
|
10882
|
-
<a id="__codelineno-0-250" name="__codelineno-0-250"></a><span class="
|
|
10883
|
-
<a id="__codelineno-0-251" name="__codelineno-0-251"></a><span class="sd">
|
|
10884
|
-
<a id="__codelineno-0-252" name="__codelineno-0-252"></a
|
|
10885
|
-
<a id="__codelineno-0-253" name="__codelineno-0-253"></a><span class="
|
|
10839
|
+
<span class="normal"><a href="#__codelineno-0-279">279</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-247" name="__codelineno-0-247"></a><span class="k">class</span> <span class="nc">MultiValueCharField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">):</span>
|
|
10840
|
+
<a id="__codelineno-0-248" name="__codelineno-0-248"></a><span class="w"> </span><span class="sd">"""</span>
|
|
10841
|
+
<a id="__codelineno-0-249" name="__codelineno-0-249"></a><span class="sd"> CharField that takes multiple user character inputs and render them as tags in the form field.</span>
|
|
10842
|
+
<a id="__codelineno-0-250" name="__codelineno-0-250"></a><span class="sd"> Press enter to complete an input.</span>
|
|
10843
|
+
<a id="__codelineno-0-251" name="__codelineno-0-251"></a><span class="sd"> """</span>
|
|
10844
|
+
<a id="__codelineno-0-252" name="__codelineno-0-252"></a>
|
|
10845
|
+
<a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">MultiValueCharInput</span><span class="p">()</span>
|
|
10886
10846
|
<a id="__codelineno-0-254" name="__codelineno-0-254"></a>
|
|
10887
|
-
<a id="__codelineno-0-255" name="__codelineno-0-255"></a> <span class="
|
|
10888
|
-
<a id="__codelineno-0-256" name="__codelineno-0-256"></a>
|
|
10889
|
-
<a id="__codelineno-0-257" name="__codelineno-0-257"></a>
|
|
10890
|
-
<a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="n">
|
|
10891
|
-
<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="
|
|
10892
|
-
<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="
|
|
10893
|
-
<a id="__codelineno-0-261" name="__codelineno-0-261"></a>
|
|
10894
|
-
<a id="__codelineno-0-262" name="__codelineno-0-262"></a>
|
|
10895
|
-
<a id="__codelineno-0-263" name="__codelineno-0-263"></a>
|
|
10847
|
+
<a id="__codelineno-0-255" name="__codelineno-0-255"></a> <span class="k">def</span> <span class="nf">get_bound_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
|
10848
|
+
<a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="n">bound_field</span> <span class="o">=</span> <span class="n">BoundField</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">)</span>
|
|
10849
|
+
<a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">bound_field</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
|
|
10850
|
+
<a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="n">widget</span> <span class="o">=</span> <span class="n">bound_field</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">widget</span>
|
|
10851
|
+
<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="c1"># Save the selected choices in the widget even after the filterform is submitted</span>
|
|
10852
|
+
<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
10853
|
+
<a id="__codelineno-0-261" name="__codelineno-0-261"></a> <span class="n">widget</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="p">[(</span><span class="n">v</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]</span>
|
|
10854
|
+
<a id="__codelineno-0-262" name="__codelineno-0-262"></a>
|
|
10855
|
+
<a id="__codelineno-0-263" name="__codelineno-0-263"></a> <span class="k">return</span> <span class="n">bound_field</span>
|
|
10896
10856
|
<a id="__codelineno-0-264" name="__codelineno-0-264"></a>
|
|
10897
|
-
<a id="__codelineno-0-265" name="__codelineno-0-265"></a>
|
|
10898
|
-
<a id="__codelineno-0-266" name="__codelineno-0-266"></a>
|
|
10899
|
-
<a id="__codelineno-0-267" name="__codelineno-0-267"></a>
|
|
10900
|
-
<a id="__codelineno-0-268" name="__codelineno-0-268"></a>
|
|
10901
|
-
<a id="__codelineno-0-269" name="__codelineno-0-269"></a>
|
|
10902
|
-
<a id="__codelineno-0-270" name="__codelineno-0-270"></a>
|
|
10903
|
-
<a id="__codelineno-0-271" name="__codelineno-0-271"></a>
|
|
10904
|
-
<a id="__codelineno-0-272" name="__codelineno-0-272"></a>
|
|
10905
|
-
<a id="__codelineno-0-273" name="__codelineno-0-273"></a>
|
|
10906
|
-
<a id="__codelineno-0-274" name="__codelineno-0-274"></a>
|
|
10907
|
-
<a id="__codelineno-0-275" name="__codelineno-0-275"></a>
|
|
10908
|
-
<a id="__codelineno-0-276" name="__codelineno-0-276"></a>
|
|
10909
|
-
<a id="__codelineno-0-277" name="__codelineno-0-277"></a> <span class="
|
|
10910
|
-
<a id="__codelineno-0-278" name="__codelineno-0-278"></a> <span class="
|
|
10911
|
-
<a id="__codelineno-0-279" name="__codelineno-0-279"></a>
|
|
10912
|
-
<a id="__codelineno-0-280" name="__codelineno-0-280"></a> <span class="k">if</span> <span class="n">v</span>
|
|
10913
|
-
<a id="__codelineno-0-281" name="__codelineno-0-281"></a> <span class="p">]</span>
|
|
10857
|
+
<a id="__codelineno-0-265" name="__codelineno-0-265"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
10858
|
+
<a id="__codelineno-0-266" name="__codelineno-0-266"></a> <span class="bp">self</span><span class="o">.</span><span class="n">field_class</span> <span class="o">=</span> <span class="n">django_forms</span><span class="o">.</span><span class="n">CharField</span>
|
|
10859
|
+
<a id="__codelineno-0-267" name="__codelineno-0-267"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
|
10860
|
+
<a id="__codelineno-0-268" name="__codelineno-0-268"></a> <span class="k">return</span> <span class="p">[]</span>
|
|
10861
|
+
<a id="__codelineno-0-269" name="__codelineno-0-269"></a>
|
|
10862
|
+
<a id="__codelineno-0-270" name="__codelineno-0-270"></a> <span class="c1"># Make it a list if it's a string.</span>
|
|
10863
|
+
<a id="__codelineno-0-271" name="__codelineno-0-271"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
10864
|
+
<a id="__codelineno-0-272" name="__codelineno-0-272"></a> <span class="n">value</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span>
|
|
10865
|
+
<a id="__codelineno-0-273" name="__codelineno-0-273"></a>
|
|
10866
|
+
<a id="__codelineno-0-274" name="__codelineno-0-274"></a> <span class="k">return</span> <span class="p">[</span>
|
|
10867
|
+
<a id="__codelineno-0-275" name="__codelineno-0-275"></a> <span class="c1"># Only append non-empty values (this avoids e.g. trying to cast '' as an integer)</span>
|
|
10868
|
+
<a id="__codelineno-0-276" name="__codelineno-0-276"></a> <span class="bp">self</span><span class="o">.</span><span class="n">field_class</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
|
|
10869
|
+
<a id="__codelineno-0-277" name="__codelineno-0-277"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span>
|
|
10870
|
+
<a id="__codelineno-0-278" name="__codelineno-0-278"></a> <span class="k">if</span> <span class="n">v</span>
|
|
10871
|
+
<a id="__codelineno-0-279" name="__codelineno-0-279"></a> <span class="p">]</span>
|
|
10914
10872
|
</code></pre></div></td></tr></table></div>
|
|
10915
10873
|
</details>
|
|
10916
10874
|
|
|
@@ -11017,7 +10975,9 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
|
|
|
11017
10975
|
|
|
11018
10976
|
<details class="quote">
|
|
11019
10977
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
11020
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
10978
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-207">207</a></span>
|
|
10979
|
+
<span class="normal"><a href="#__codelineno-0-208">208</a></span>
|
|
10980
|
+
<span class="normal"><a href="#__codelineno-0-209">209</a></span>
|
|
11021
10981
|
<span class="normal"><a href="#__codelineno-0-210">210</a></span>
|
|
11022
10982
|
<span class="normal"><a href="#__codelineno-0-211">211</a></span>
|
|
11023
10983
|
<span class="normal"><a href="#__codelineno-0-212">212</a></span>
|
|
@@ -11052,46 +11012,44 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
|
|
|
11052
11012
|
<span class="normal"><a href="#__codelineno-0-241">241</a></span>
|
|
11053
11013
|
<span class="normal"><a href="#__codelineno-0-242">242</a></span>
|
|
11054
11014
|
<span class="normal"><a href="#__codelineno-0-243">243</a></span>
|
|
11055
|
-
<span class="normal"><a href="#__codelineno-0-244">244</a></span>
|
|
11056
|
-
<
|
|
11057
|
-
<
|
|
11058
|
-
<a id="__codelineno-0-210" name="__codelineno-0-210"></a
|
|
11059
|
-
<a id="__codelineno-0-211" name="__codelineno-0-211"></a><span class="sd">
|
|
11060
|
-
<a id="__codelineno-0-212" name="__codelineno-0-212"></a>
|
|
11061
|
-
<a id="__codelineno-0-213" name="__codelineno-0-213"></a><span class="sd">
|
|
11062
|
-
<a id="__codelineno-0-214" name="__codelineno-0-214"></a
|
|
11063
|
-
<a id="__codelineno-0-215" name="__codelineno-0-215"></a
|
|
11015
|
+
<span class="normal"><a href="#__codelineno-0-244">244</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-207" name="__codelineno-0-207"></a><span class="k">class</span> <span class="nc">MultipleContentTypeField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">ModelMultipleChoiceField</span><span class="p">):</span>
|
|
11016
|
+
<a id="__codelineno-0-208" name="__codelineno-0-208"></a><span class="w"> </span><span class="sd">"""</span>
|
|
11017
|
+
<a id="__codelineno-0-209" name="__codelineno-0-209"></a><span class="sd"> Field for choosing any number of `ContentType` objects.</span>
|
|
11018
|
+
<a id="__codelineno-0-210" name="__codelineno-0-210"></a>
|
|
11019
|
+
<a id="__codelineno-0-211" name="__codelineno-0-211"></a><span class="sd"> Optionally can restrict the available ContentTypes to those supporting a particular feature only.</span>
|
|
11020
|
+
<a id="__codelineno-0-212" name="__codelineno-0-212"></a><span class="sd"> Optionally can pass the selection through as a list of `{app_label}.{model}` strings instead of PK values.</span>
|
|
11021
|
+
<a id="__codelineno-0-213" name="__codelineno-0-213"></a><span class="sd"> """</span>
|
|
11022
|
+
<a id="__codelineno-0-214" name="__codelineno-0-214"></a>
|
|
11023
|
+
<a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="n">STATIC_CHOICES</span> <span class="o">=</span> <span class="kc">True</span>
|
|
11064
11024
|
<a id="__codelineno-0-216" name="__codelineno-0-216"></a>
|
|
11065
|
-
<a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="n">
|
|
11066
|
-
<a id="__codelineno-0-218" name="__codelineno-0-218"></a>
|
|
11067
|
-
<a id="__codelineno-0-219" name="__codelineno-0-219"></a
|
|
11068
|
-
<a id="__codelineno-0-220" name="__codelineno-0-220"></a
|
|
11069
|
-
<a id="__codelineno-0-221" name="__codelineno-0-221"></a><span class="sd">
|
|
11070
|
-
<a id="__codelineno-0-222" name="__codelineno-0-222"></a>
|
|
11071
|
-
<a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd">
|
|
11072
|
-
<a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd">
|
|
11073
|
-
<a id="__codelineno-0-225" name="__codelineno-0-225"></a
|
|
11074
|
-
<a id="__codelineno-0-226" name="__codelineno-0-226"></a
|
|
11075
|
-
<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="
|
|
11076
|
-
<a id="__codelineno-0-228" name="__codelineno-0-228"></a>
|
|
11077
|
-
<a id="__codelineno-0-229" name="__codelineno-0-229"></a>
|
|
11078
|
-
<a id="__codelineno-0-230" name="__codelineno-0-230"></a>
|
|
11079
|
-
<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="
|
|
11080
|
-
<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
|
|
11081
|
-
<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="p">
|
|
11082
|
-
<a id="__codelineno-0-234" name="__codelineno-0-234"></a>
|
|
11083
|
-
<a id="__codelineno-0-235" name="__codelineno-0-235"></a>
|
|
11084
|
-
<a id="__codelineno-0-236" name="__codelineno-0-236"></a>
|
|
11085
|
-
<a id="__codelineno-0-237" name="__codelineno-0-237"></a>
|
|
11025
|
+
<a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">feature</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">choices_as_strings</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
11026
|
+
<a id="__codelineno-0-218" name="__codelineno-0-218"></a><span class="w"> </span><span class="sd">"""</span>
|
|
11027
|
+
<a id="__codelineno-0-219" name="__codelineno-0-219"></a><span class="sd"> Construct a MultipleContentTypeField.</span>
|
|
11028
|
+
<a id="__codelineno-0-220" name="__codelineno-0-220"></a>
|
|
11029
|
+
<a id="__codelineno-0-221" name="__codelineno-0-221"></a><span class="sd"> Args:</span>
|
|
11030
|
+
<a id="__codelineno-0-222" name="__codelineno-0-222"></a><span class="sd"> feature (str): Feature name to use in constructing a FeatureQuery to restrict the available ContentTypes.</span>
|
|
11031
|
+
<a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd"> choices_as_strings (bool): If True, render selection as a list of `"{app_label}.{model}"` strings.</span>
|
|
11032
|
+
<a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd"> """</span>
|
|
11033
|
+
<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="kn">from</span> <span class="nn">nautobot.extras</span> <span class="kn">import</span> <span class="n">utils</span> <span class="k">as</span> <span class="n">extras_utils</span>
|
|
11034
|
+
<a id="__codelineno-0-226" name="__codelineno-0-226"></a>
|
|
11035
|
+
<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="k">if</span> <span class="s2">"queryset"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
11036
|
+
<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="k">if</span> <span class="n">feature</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
11037
|
+
<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"queryset"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
11038
|
+
<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">extras_utils</span><span class="o">.</span><span class="n">FeatureQuery</span><span class="p">(</span><span class="n">feature</span><span class="p">)</span><span class="o">.</span><span class="n">get_query</span><span class="p">()</span>
|
|
11039
|
+
<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"app_label"</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">)</span>
|
|
11040
|
+
<a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="k">else</span><span class="p">:</span>
|
|
11041
|
+
<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"queryset"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"app_label"</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">)</span>
|
|
11042
|
+
<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">if</span> <span class="s2">"widget"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
11043
|
+
<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"widget"</span><span class="p">]</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">StaticSelect2Multiple</span><span class="p">()</span>
|
|
11044
|
+
<a id="__codelineno-0-236" name="__codelineno-0-236"></a>
|
|
11045
|
+
<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
11086
11046
|
<a id="__codelineno-0-238" name="__codelineno-0-238"></a>
|
|
11087
|
-
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="
|
|
11088
|
-
<a id="__codelineno-0-240" name="__codelineno-0-240"></a>
|
|
11089
|
-
<a id="__codelineno-0-241" name="__codelineno-0-241"></a>
|
|
11090
|
-
<a id="__codelineno-0-242" name="__codelineno-0-242"></a>
|
|
11091
|
-
<a id="__codelineno-0-243" name="__codelineno-0-243"></a>
|
|
11092
|
-
<a id="__codelineno-0-244" name="__codelineno-0-244"></a>
|
|
11093
|
-
<a id="__codelineno-0-245" name="__codelineno-0-245"></a><span class="w"> </span><span class="sd">"""Overload choices to return `{app_label}.{model}` instead of PKs."""</span>
|
|
11094
|
-
<a id="__codelineno-0-246" name="__codelineno-0-246"></a> <span class="k">return</span> <span class="p">[(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">m</span><span class="o">.</span><span class="n">app_label</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">m</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">m</span><span class="o">.</span><span class="n">app_labeled_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
|
11047
|
+
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="k">if</span> <span class="n">choices_as_strings</span><span class="p">:</span>
|
|
11048
|
+
<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_string_choices_from_queryset</span>
|
|
11049
|
+
<a id="__codelineno-0-241" name="__codelineno-0-241"></a>
|
|
11050
|
+
<a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="k">def</span> <span class="nf">_string_choices_from_queryset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
11051
|
+
<a id="__codelineno-0-243" name="__codelineno-0-243"></a><span class="w"> </span><span class="sd">"""Overload choices to return `{app_label}.{model}` instead of PKs."""</span>
|
|
11052
|
+
<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="k">return</span> <span class="p">[(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">m</span><span class="o">.</span><span class="n">app_label</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">m</span><span class="o">.</span><span class="n">model</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">m</span><span class="o">.</span><span class="n">app_labeled_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
|
11095
11053
|
</code></pre></div></td></tr></table></div>
|
|
11096
11054
|
</details>
|
|
11097
11055
|
|
|
@@ -11168,7 +11126,9 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
|
|
|
11168
11126
|
|
|
11169
11127
|
<details class="quote">
|
|
11170
11128
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
11171
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
11129
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-217">217</a></span>
|
|
11130
|
+
<span class="normal"><a href="#__codelineno-0-218">218</a></span>
|
|
11131
|
+
<span class="normal"><a href="#__codelineno-0-219">219</a></span>
|
|
11172
11132
|
<span class="normal"><a href="#__codelineno-0-220">220</a></span>
|
|
11173
11133
|
<span class="normal"><a href="#__codelineno-0-221">221</a></span>
|
|
11174
11134
|
<span class="normal"><a href="#__codelineno-0-222">222</a></span>
|
|
@@ -11189,32 +11149,30 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
|
|
|
11189
11149
|
<span class="normal"><a href="#__codelineno-0-237">237</a></span>
|
|
11190
11150
|
<span class="normal"><a href="#__codelineno-0-238">238</a></span>
|
|
11191
11151
|
<span class="normal"><a href="#__codelineno-0-239">239</a></span>
|
|
11192
|
-
<span class="normal"><a href="#__codelineno-0-240">240</a></span>
|
|
11193
|
-
<
|
|
11194
|
-
<
|
|
11195
|
-
<a id="__codelineno-0-220" name="__codelineno-0-220"></a
|
|
11196
|
-
<a id="__codelineno-0-221" name="__codelineno-0-221"></a><span class="sd">
|
|
11197
|
-
<a id="__codelineno-0-222" name="__codelineno-0-222"></a>
|
|
11198
|
-
<a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd">
|
|
11199
|
-
<a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd">
|
|
11200
|
-
<a id="__codelineno-0-225" name="__codelineno-0-225"></a
|
|
11201
|
-
<a id="__codelineno-0-226" name="__codelineno-0-226"></a
|
|
11202
|
-
<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="
|
|
11203
|
-
<a id="__codelineno-0-228" name="__codelineno-0-228"></a>
|
|
11204
|
-
<a id="__codelineno-0-229" name="__codelineno-0-229"></a>
|
|
11205
|
-
<a id="__codelineno-0-230" name="__codelineno-0-230"></a>
|
|
11206
|
-
<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="
|
|
11207
|
-
<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
|
|
11208
|
-
<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="p">
|
|
11209
|
-
<a id="__codelineno-0-234" name="__codelineno-0-234"></a>
|
|
11210
|
-
<a id="__codelineno-0-235" name="__codelineno-0-235"></a>
|
|
11211
|
-
<a id="__codelineno-0-236" name="__codelineno-0-236"></a>
|
|
11212
|
-
<a id="__codelineno-0-237" name="__codelineno-0-237"></a>
|
|
11152
|
+
<span class="normal"><a href="#__codelineno-0-240">240</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-217" name="__codelineno-0-217"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">feature</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">choices_as_strings</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
11153
|
+
<a id="__codelineno-0-218" name="__codelineno-0-218"></a><span class="w"> </span><span class="sd">"""</span>
|
|
11154
|
+
<a id="__codelineno-0-219" name="__codelineno-0-219"></a><span class="sd"> Construct a MultipleContentTypeField.</span>
|
|
11155
|
+
<a id="__codelineno-0-220" name="__codelineno-0-220"></a>
|
|
11156
|
+
<a id="__codelineno-0-221" name="__codelineno-0-221"></a><span class="sd"> Args:</span>
|
|
11157
|
+
<a id="__codelineno-0-222" name="__codelineno-0-222"></a><span class="sd"> feature (str): Feature name to use in constructing a FeatureQuery to restrict the available ContentTypes.</span>
|
|
11158
|
+
<a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd"> choices_as_strings (bool): If True, render selection as a list of `"{app_label}.{model}"` strings.</span>
|
|
11159
|
+
<a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd"> """</span>
|
|
11160
|
+
<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="kn">from</span> <span class="nn">nautobot.extras</span> <span class="kn">import</span> <span class="n">utils</span> <span class="k">as</span> <span class="n">extras_utils</span>
|
|
11161
|
+
<a id="__codelineno-0-226" name="__codelineno-0-226"></a>
|
|
11162
|
+
<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="k">if</span> <span class="s2">"queryset"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
11163
|
+
<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="k">if</span> <span class="n">feature</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
11164
|
+
<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"queryset"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
11165
|
+
<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">extras_utils</span><span class="o">.</span><span class="n">FeatureQuery</span><span class="p">(</span><span class="n">feature</span><span class="p">)</span><span class="o">.</span><span class="n">get_query</span><span class="p">()</span>
|
|
11166
|
+
<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"app_label"</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">)</span>
|
|
11167
|
+
<a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="k">else</span><span class="p">:</span>
|
|
11168
|
+
<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"queryset"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"app_label"</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">)</span>
|
|
11169
|
+
<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">if</span> <span class="s2">"widget"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
11170
|
+
<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"widget"</span><span class="p">]</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">StaticSelect2Multiple</span><span class="p">()</span>
|
|
11171
|
+
<a id="__codelineno-0-236" name="__codelineno-0-236"></a>
|
|
11172
|
+
<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
11213
11173
|
<a id="__codelineno-0-238" name="__codelineno-0-238"></a>
|
|
11214
|
-
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="
|
|
11215
|
-
<a id="__codelineno-0-240" name="__codelineno-0-240"></a>
|
|
11216
|
-
<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="k">if</span> <span class="n">choices_as_strings</span><span class="p">:</span>
|
|
11217
|
-
<a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_string_choices_from_queryset</span>
|
|
11174
|
+
<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="k">if</span> <span class="n">choices_as_strings</span><span class="p">:</span>
|
|
11175
|
+
<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_string_choices_from_queryset</span>
|
|
11218
11176
|
</code></pre></div></td></tr></table></div>
|
|
11219
11177
|
</details>
|
|
11220
11178
|
</div>
|
|
@@ -11489,23 +11447,23 @@ NoteModelFormMixin are needed.</p>
|
|
|
11489
11447
|
|
|
11490
11448
|
<details class="quote">
|
|
11491
11449
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
11492
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
11450
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-705">705</a></span>
|
|
11451
|
+
<span class="normal"><a href="#__codelineno-0-706">706</a></span>
|
|
11452
|
+
<span class="normal"><a href="#__codelineno-0-707">707</a></span>
|
|
11493
11453
|
<span class="normal"><a href="#__codelineno-0-708">708</a></span>
|
|
11494
11454
|
<span class="normal"><a href="#__codelineno-0-709">709</a></span>
|
|
11495
11455
|
<span class="normal"><a href="#__codelineno-0-710">710</a></span>
|
|
11496
11456
|
<span class="normal"><a href="#__codelineno-0-711">711</a></span>
|
|
11497
11457
|
<span class="normal"><a href="#__codelineno-0-712">712</a></span>
|
|
11498
|
-
<span class="normal"><a href="#__codelineno-0-713">713</a></span>
|
|
11499
|
-
<
|
|
11500
|
-
<
|
|
11501
|
-
<a id="__codelineno-0-708" name="__codelineno-0-708"></a><span class="
|
|
11502
|
-
<a id="__codelineno-0-709" name="__codelineno-0-709"></a>
|
|
11503
|
-
<a id="__codelineno-0-710" name="__codelineno-0-710"></a>
|
|
11504
|
-
<a id="__codelineno-0-711" name="__codelineno-0-711"></a> <span class="k">
|
|
11505
|
-
<a id="__codelineno-0-712" name="__codelineno-0-712"></a> <span class="
|
|
11506
|
-
<a id="__codelineno-0-713" name="__codelineno-0-713"></a> <span class="k">
|
|
11507
|
-
<a id="__codelineno-0-714" name="__codelineno-0-714"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
11508
|
-
<a id="__codelineno-0-715" name="__codelineno-0-715"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
11458
|
+
<span class="normal"><a href="#__codelineno-0-713">713</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-705" name="__codelineno-0-705"></a><span class="k">class</span> <span class="nc">NumericArrayField</span><span class="p">(</span><span class="n">SimpleArrayField</span><span class="p">):</span>
|
|
11459
|
+
<a id="__codelineno-0-706" name="__codelineno-0-706"></a><span class="w"> </span><span class="sd">"""Basic array field that takes comma-separated or hyphenated ranges."""</span>
|
|
11460
|
+
<a id="__codelineno-0-707" name="__codelineno-0-707"></a>
|
|
11461
|
+
<a id="__codelineno-0-708" name="__codelineno-0-708"></a> <span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
11462
|
+
<a id="__codelineno-0-709" name="__codelineno-0-709"></a> <span class="k">try</span><span class="p">:</span>
|
|
11463
|
+
<a id="__codelineno-0-710" name="__codelineno-0-710"></a> <span class="n">value</span> <span class="o">=</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">forms</span><span class="o">.</span><span class="n">parse_numeric_range</span><span class="p">(</span><span class="n">value</span><span class="p">)])</span>
|
|
11464
|
+
<a id="__codelineno-0-711" name="__codelineno-0-711"></a> <span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
|
|
11465
|
+
<a id="__codelineno-0-712" name="__codelineno-0-712"></a> <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
11466
|
+
<a id="__codelineno-0-713" name="__codelineno-0-713"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">to_python</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
11509
11467
|
</code></pre></div></td></tr></table></div>
|
|
11510
11468
|
</details>
|
|
11511
11469
|
|
|
@@ -12161,7 +12119,7 @@ NoteModelFormMixin are needed.</p>
|
|
|
12161
12119
|
<a id="__codelineno-0-424" name="__codelineno-0-424"></a> <span class="p">]</span>
|
|
12162
12120
|
<a id="__codelineno-0-425" name="__codelineno-0-425"></a> <span class="n">requires_message</span> <span class="o">=</span> <span class="p">(</span>
|
|
12163
12121
|
<a id="__codelineno-0-426" name="__codelineno-0-426"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">editing</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">verbose_name_plural</span><span class="si">}</span><span class="s2"> require a </span><span class="si">{</span><span class="n">required_type_verbose_name</span><span class="si">}</span><span class="s2"> "</span>
|
|
12164
|
-
<a id="__codelineno-0-427" name="__codelineno-0-427"></a> <span class="sa">f</span><span class="s1">'for the required relationship "</span><span class="si">{</span><span class="
|
|
12122
|
+
<a id="__codelineno-0-427" name="__codelineno-0-427"></a> <span class="sa">f</span><span class="s1">'for the required relationship "</span><span class="si">{</span><span class="n">relationship</span><span class="si">!s}</span><span class="s1">"'</span>
|
|
12165
12123
|
<a id="__codelineno-0-428" name="__codelineno-0-428"></a> <span class="p">)</span>
|
|
12166
12124
|
<a id="__codelineno-0-429" name="__codelineno-0-429"></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">existing_objects</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">relationship_to_check</span><span class="p">[</span><span class="s2">"to_add"</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
12167
12125
|
<a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="n">relationship_data_errors</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">requires_message</span><span class="p">,</span> <span class="p">[])</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">editing</span><span class="p">))</span>
|
|
@@ -13465,7 +13423,9 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
13465
13423
|
|
|
13466
13424
|
<details class="quote">
|
|
13467
13425
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
13468
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
13426
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-416">416</a></span>
|
|
13427
|
+
<span class="normal"><a href="#__codelineno-0-417">417</a></span>
|
|
13428
|
+
<span class="normal"><a href="#__codelineno-0-418">418</a></span>
|
|
13469
13429
|
<span class="normal"><a href="#__codelineno-0-419">419</a></span>
|
|
13470
13430
|
<span class="normal"><a href="#__codelineno-0-420">420</a></span>
|
|
13471
13431
|
<span class="normal"><a href="#__codelineno-0-421">421</a></span>
|
|
@@ -13481,27 +13441,25 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
13481
13441
|
<span class="normal"><a href="#__codelineno-0-431">431</a></span>
|
|
13482
13442
|
<span class="normal"><a href="#__codelineno-0-432">432</a></span>
|
|
13483
13443
|
<span class="normal"><a href="#__codelineno-0-433">433</a></span>
|
|
13484
|
-
<span class="normal"><a href="#__codelineno-0-434">434</a></span>
|
|
13485
|
-
<
|
|
13486
|
-
<
|
|
13487
|
-
<a id="__codelineno-0-419" name="__codelineno-0-419"></a><span class="
|
|
13488
|
-
<a id="__codelineno-0-420" name="__codelineno-0-420"></a
|
|
13489
|
-
<a id="__codelineno-0-421" name="__codelineno-0-421"></a><span class="
|
|
13490
|
-
<a id="__codelineno-0-422" name="__codelineno-0-422"></a>
|
|
13491
|
-
<a id="__codelineno-0-423" name="__codelineno-0-423"></a
|
|
13492
|
-
<a id="__codelineno-0-424" name="__codelineno-0-424"></a
|
|
13493
|
-
<a id="__codelineno-0-425" name="__codelineno-0-425"></a><span class="sd">
|
|
13494
|
-
<a id="__codelineno-0-426" name="__codelineno-0-426"></a>
|
|
13495
|
-
<a id="__codelineno-0-427" name="__codelineno-0-427"></a><span class="sd">
|
|
13496
|
-
<a id="__codelineno-0-428" name="__codelineno-0-428"></a
|
|
13497
|
-
<a id="__codelineno-0-429" name="__codelineno-0-429"></a><span class="
|
|
13498
|
-
<a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"
|
|
13499
|
-
<a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="
|
|
13500
|
-
<a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="
|
|
13501
|
-
<a id="__codelineno-0-433" name="__codelineno-0-433"></a>
|
|
13502
|
-
<a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="
|
|
13503
|
-
<a id="__codelineno-0-435" name="__codelineno-0-435"></a> <span class="n">slug_source</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">slug_source</span><span class="p">)</span>
|
|
13504
|
-
<a id="__codelineno-0-436" name="__codelineno-0-436"></a> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"slug-source"</span><span class="p">]</span> <span class="o">=</span> <span class="n">slug_source</span>
|
|
13444
|
+
<span class="normal"><a href="#__codelineno-0-434">434</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-416" name="__codelineno-0-416"></a><span class="k">class</span> <span class="nc">SlugField</span><span class="p">(</span><span class="n">django_forms</span><span class="o">.</span><span class="n">SlugField</span><span class="p">):</span>
|
|
13445
|
+
<a id="__codelineno-0-417" name="__codelineno-0-417"></a><span class="w"> </span><span class="sd">"""</span>
|
|
13446
|
+
<a id="__codelineno-0-418" name="__codelineno-0-418"></a><span class="sd"> Extend the built-in SlugField to automatically populate from a field called `name` unless otherwise specified.</span>
|
|
13447
|
+
<a id="__codelineno-0-419" name="__codelineno-0-419"></a><span class="sd"> """</span>
|
|
13448
|
+
<a id="__codelineno-0-420" name="__codelineno-0-420"></a>
|
|
13449
|
+
<a id="__codelineno-0-421" name="__codelineno-0-421"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">slug_source</span><span class="o">=</span><span class="s2">"name"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
13450
|
+
<a id="__codelineno-0-422" name="__codelineno-0-422"></a><span class="w"> </span><span class="sd">"""</span>
|
|
13451
|
+
<a id="__codelineno-0-423" name="__codelineno-0-423"></a><span class="sd"> Instantiate a SlugField.</span>
|
|
13452
|
+
<a id="__codelineno-0-424" name="__codelineno-0-424"></a>
|
|
13453
|
+
<a id="__codelineno-0-425" name="__codelineno-0-425"></a><span class="sd"> Args:</span>
|
|
13454
|
+
<a id="__codelineno-0-426" name="__codelineno-0-426"></a><span class="sd"> slug_source (str, tuple): Name of the field (or a list of field names) that will be used to suggest a slug.</span>
|
|
13455
|
+
<a id="__codelineno-0-427" name="__codelineno-0-427"></a><span class="sd"> """</span>
|
|
13456
|
+
<a id="__codelineno-0-428" name="__codelineno-0-428"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"label"</span><span class="p">,</span> <span class="s2">"Slug"</span><span class="p">)</span>
|
|
13457
|
+
<a id="__codelineno-0-429" name="__codelineno-0-429"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"help_text"</span><span class="p">,</span> <span class="s2">"URL-friendly unique shorthand"</span><span class="p">)</span>
|
|
13458
|
+
<a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"widget"</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">SlugWidget</span><span class="p">)</span>
|
|
13459
|
+
<a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
13460
|
+
<a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">slug_source</span><span class="p">,</span> <span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
|
|
13461
|
+
<a id="__codelineno-0-433" name="__codelineno-0-433"></a> <span class="n">slug_source</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">slug_source</span><span class="p">)</span>
|
|
13462
|
+
<a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"slug-source"</span><span class="p">]</span> <span class="o">=</span> <span class="n">slug_source</span>
|
|
13505
13463
|
</code></pre></div></td></tr></table></div>
|
|
13506
13464
|
</details>
|
|
13507
13465
|
|
|
@@ -13564,7 +13522,9 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
13564
13522
|
|
|
13565
13523
|
<details class="quote">
|
|
13566
13524
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
13567
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
13525
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-421">421</a></span>
|
|
13526
|
+
<span class="normal"><a href="#__codelineno-0-422">422</a></span>
|
|
13527
|
+
<span class="normal"><a href="#__codelineno-0-423">423</a></span>
|
|
13568
13528
|
<span class="normal"><a href="#__codelineno-0-424">424</a></span>
|
|
13569
13529
|
<span class="normal"><a href="#__codelineno-0-425">425</a></span>
|
|
13570
13530
|
<span class="normal"><a href="#__codelineno-0-426">426</a></span>
|
|
@@ -13575,22 +13535,20 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
13575
13535
|
<span class="normal"><a href="#__codelineno-0-431">431</a></span>
|
|
13576
13536
|
<span class="normal"><a href="#__codelineno-0-432">432</a></span>
|
|
13577
13537
|
<span class="normal"><a href="#__codelineno-0-433">433</a></span>
|
|
13578
|
-
<span class="normal"><a href="#__codelineno-0-434">434</a></span>
|
|
13579
|
-
<
|
|
13580
|
-
<
|
|
13581
|
-
<a id="__codelineno-0-424" name="__codelineno-0-424"></a
|
|
13582
|
-
<a id="__codelineno-0-425" name="__codelineno-0-425"></a><span class="sd">
|
|
13583
|
-
<a id="__codelineno-0-426" name="__codelineno-0-426"></a>
|
|
13584
|
-
<a id="__codelineno-0-427" name="__codelineno-0-427"></a><span class="sd">
|
|
13585
|
-
<a id="__codelineno-0-428" name="__codelineno-0-428"></a
|
|
13586
|
-
<a id="__codelineno-0-429" name="__codelineno-0-429"></a><span class="
|
|
13587
|
-
<a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"
|
|
13588
|
-
<a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="
|
|
13589
|
-
<a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="
|
|
13590
|
-
<a id="__codelineno-0-433" name="__codelineno-0-433"></a>
|
|
13591
|
-
<a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="
|
|
13592
|
-
<a id="__codelineno-0-435" name="__codelineno-0-435"></a> <span class="n">slug_source</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">slug_source</span><span class="p">)</span>
|
|
13593
|
-
<a id="__codelineno-0-436" name="__codelineno-0-436"></a> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"slug-source"</span><span class="p">]</span> <span class="o">=</span> <span class="n">slug_source</span>
|
|
13538
|
+
<span class="normal"><a href="#__codelineno-0-434">434</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-421" name="__codelineno-0-421"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">slug_source</span><span class="o">=</span><span class="s2">"name"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
13539
|
+
<a id="__codelineno-0-422" name="__codelineno-0-422"></a><span class="w"> </span><span class="sd">"""</span>
|
|
13540
|
+
<a id="__codelineno-0-423" name="__codelineno-0-423"></a><span class="sd"> Instantiate a SlugField.</span>
|
|
13541
|
+
<a id="__codelineno-0-424" name="__codelineno-0-424"></a>
|
|
13542
|
+
<a id="__codelineno-0-425" name="__codelineno-0-425"></a><span class="sd"> Args:</span>
|
|
13543
|
+
<a id="__codelineno-0-426" name="__codelineno-0-426"></a><span class="sd"> slug_source (str, tuple): Name of the field (or a list of field names) that will be used to suggest a slug.</span>
|
|
13544
|
+
<a id="__codelineno-0-427" name="__codelineno-0-427"></a><span class="sd"> """</span>
|
|
13545
|
+
<a id="__codelineno-0-428" name="__codelineno-0-428"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"label"</span><span class="p">,</span> <span class="s2">"Slug"</span><span class="p">)</span>
|
|
13546
|
+
<a id="__codelineno-0-429" name="__codelineno-0-429"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"help_text"</span><span class="p">,</span> <span class="s2">"URL-friendly unique shorthand"</span><span class="p">)</span>
|
|
13547
|
+
<a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"widget"</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">SlugWidget</span><span class="p">)</span>
|
|
13548
|
+
<a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
13549
|
+
<a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">slug_source</span><span class="p">,</span> <span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
|
|
13550
|
+
<a id="__codelineno-0-433" name="__codelineno-0-433"></a> <span class="n">slug_source</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">slug_source</span><span class="p">)</span>
|
|
13551
|
+
<a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"slug-source"</span><span class="p">]</span> <span class="o">=</span> <span class="n">slug_source</span>
|
|
13594
13552
|
</code></pre></div></td></tr></table></div>
|
|
13595
13553
|
</details>
|
|
13596
13554
|
</div>
|
|
@@ -13998,7 +13956,9 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
13998
13956
|
|
|
13999
13957
|
<details class="quote">
|
|
14000
13958
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
14001
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
13959
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-774">774</a></span>
|
|
13960
|
+
<span class="normal"><a href="#__codelineno-0-775">775</a></span>
|
|
13961
|
+
<span class="normal"><a href="#__codelineno-0-776">776</a></span>
|
|
14002
13962
|
<span class="normal"><a href="#__codelineno-0-777">777</a></span>
|
|
14003
13963
|
<span class="normal"><a href="#__codelineno-0-778">778</a></span>
|
|
14004
13964
|
<span class="normal"><a href="#__codelineno-0-779">779</a></span>
|
|
@@ -14018,31 +13978,29 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
14018
13978
|
<span class="normal"><a href="#__codelineno-0-793">793</a></span>
|
|
14019
13979
|
<span class="normal"><a href="#__codelineno-0-794">794</a></span>
|
|
14020
13980
|
<span class="normal"><a href="#__codelineno-0-795">795</a></span>
|
|
14021
|
-
<span class="normal"><a href="#__codelineno-0-796">796</a></span>
|
|
14022
|
-
<
|
|
14023
|
-
<
|
|
14024
|
-
<a id="__codelineno-0-777" name="__codelineno-0-777"></a
|
|
14025
|
-
<a id="__codelineno-0-778" name="__codelineno-0-778"></a><span class="sd">
|
|
14026
|
-
<a id="__codelineno-0-779" name="__codelineno-0-779"></a>
|
|
14027
|
-
<a id="__codelineno-0-780" name="__codelineno-0-780"></a
|
|
14028
|
-
<a id="__codelineno-0-781" name="__codelineno-0-781"></a><span class="
|
|
14029
|
-
<a id="__codelineno-0-782" name="__codelineno-0-782"></a>
|
|
14030
|
-
<a id="__codelineno-0-783" name="__codelineno-0-783"></a>
|
|
14031
|
-
<a id="__codelineno-0-784" name="__codelineno-0-784"></a> <span class="
|
|
14032
|
-
<a id="__codelineno-0-785" name="__codelineno-0-785"></a>
|
|
14033
|
-
<a id="__codelineno-0-786" name="__codelineno-0-786"></a> <span class="
|
|
14034
|
-
<a id="__codelineno-0-787" name="__codelineno-0-787"></a>
|
|
14035
|
-
<a id="__codelineno-0-788" name="__codelineno-0-788"></a> <span class="
|
|
14036
|
-
<a id="__codelineno-0-789" name="__codelineno-0-789"></a>
|
|
14037
|
-
<a id="__codelineno-0-790" name="__codelineno-0-790"></a>
|
|
14038
|
-
<a id="__codelineno-0-791" name="__codelineno-0-791"></a> <span class="n">
|
|
14039
|
-
<a id="__codelineno-0-792" name="__codelineno-0-792"></a> <span class="n">
|
|
14040
|
-
<a id="__codelineno-0-793" name="__codelineno-0-793"></a> <span class="n">
|
|
14041
|
-
<a id="__codelineno-0-794" name="__codelineno-0-794"></a> <span class="
|
|
14042
|
-
<a id="__codelineno-0-795" name="__codelineno-0-795"></a> <span class="
|
|
14043
|
-
<a id="__codelineno-0-796" name="__codelineno-0-796"></a>
|
|
14044
|
-
<a id="__codelineno-0-797" name="__codelineno-0-797"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
14045
|
-
<a id="__codelineno-0-798" name="__codelineno-0-798"></a> <span class="p">)</span>
|
|
13981
|
+
<span class="normal"><a href="#__codelineno-0-796">796</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-774" name="__codelineno-0-774"></a><span class="k">class</span> <span class="nc">TagFilterField</span><span class="p">(</span><span class="n">DynamicModelMultipleChoiceField</span><span class="p">):</span>
|
|
13982
|
+
<a id="__codelineno-0-775" name="__codelineno-0-775"></a><span class="w"> </span><span class="sd">"""</span>
|
|
13983
|
+
<a id="__codelineno-0-776" name="__codelineno-0-776"></a><span class="sd"> A filter field for the tags of a model. Only the tags used by a model are displayed.</span>
|
|
13984
|
+
<a id="__codelineno-0-777" name="__codelineno-0-777"></a>
|
|
13985
|
+
<a id="__codelineno-0-778" name="__codelineno-0-778"></a><span class="sd"> :param model: The model of the filter</span>
|
|
13986
|
+
<a id="__codelineno-0-779" name="__codelineno-0-779"></a><span class="sd"> """</span>
|
|
13987
|
+
<a id="__codelineno-0-780" name="__codelineno-0-780"></a>
|
|
13988
|
+
<a id="__codelineno-0-781" name="__codelineno-0-781"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">query_params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
13989
|
+
<a id="__codelineno-0-782" name="__codelineno-0-782"></a> <span class="kn">from</span> <span class="nn">nautobot.extras.models</span> <span class="kn">import</span> <span class="n">Tag</span>
|
|
13990
|
+
<a id="__codelineno-0-783" name="__codelineno-0-783"></a>
|
|
13991
|
+
<a id="__codelineno-0-784" name="__codelineno-0-784"></a> <span class="k">if</span> <span class="n">queryset</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
13992
|
+
<a id="__codelineno-0-785" name="__codelineno-0-785"></a> <span class="n">queryset</span> <span class="o">=</span> <span class="n">Tag</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
|
13993
|
+
<a id="__codelineno-0-786" name="__codelineno-0-786"></a> <span class="n">query_params</span> <span class="o">=</span> <span class="n">query_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
13994
|
+
<a id="__codelineno-0-787" name="__codelineno-0-787"></a> <span class="n">query_params</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s2">"content_types"</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">label_lower</span><span class="p">})</span>
|
|
13995
|
+
<a id="__codelineno-0-788" name="__codelineno-0-788"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
|
|
13996
|
+
<a id="__codelineno-0-789" name="__codelineno-0-789"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Tags"</span><span class="p">,</span>
|
|
13997
|
+
<a id="__codelineno-0-790" name="__codelineno-0-790"></a> <span class="n">query_params</span><span class="o">=</span><span class="n">query_params</span><span class="p">,</span>
|
|
13998
|
+
<a id="__codelineno-0-791" name="__codelineno-0-791"></a> <span class="n">queryset</span><span class="o">=</span><span class="n">queryset</span><span class="p">,</span>
|
|
13999
|
+
<a id="__codelineno-0-792" name="__codelineno-0-792"></a> <span class="n">required</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
14000
|
+
<a id="__codelineno-0-793" name="__codelineno-0-793"></a> <span class="n">to_field_name</span><span class="o">=</span><span class="s2">"name"</span><span class="p">,</span>
|
|
14001
|
+
<a id="__codelineno-0-794" name="__codelineno-0-794"></a> <span class="o">*</span><span class="n">args</span><span class="p">,</span>
|
|
14002
|
+
<a id="__codelineno-0-795" name="__codelineno-0-795"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
14003
|
+
<a id="__codelineno-0-796" name="__codelineno-0-796"></a> <span class="p">)</span>
|
|
14046
14004
|
</code></pre></div></td></tr></table></div>
|
|
14047
14005
|
</details>
|
|
14048
14006
|
|
|
@@ -14073,7 +14031,9 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
14073
14031
|
|
|
14074
14032
|
<details class="quote">
|
|
14075
14033
|
<summary>Source code in <code>nautobot/core/forms/fields.py</code></summary>
|
|
14076
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
14034
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-781">781</a></span>
|
|
14035
|
+
<span class="normal"><a href="#__codelineno-0-782">782</a></span>
|
|
14036
|
+
<span class="normal"><a href="#__codelineno-0-783">783</a></span>
|
|
14077
14037
|
<span class="normal"><a href="#__codelineno-0-784">784</a></span>
|
|
14078
14038
|
<span class="normal"><a href="#__codelineno-0-785">785</a></span>
|
|
14079
14039
|
<span class="normal"><a href="#__codelineno-0-786">786</a></span>
|
|
@@ -14086,24 +14046,22 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
14086
14046
|
<span class="normal"><a href="#__codelineno-0-793">793</a></span>
|
|
14087
14047
|
<span class="normal"><a href="#__codelineno-0-794">794</a></span>
|
|
14088
14048
|
<span class="normal"><a href="#__codelineno-0-795">795</a></span>
|
|
14089
|
-
<span class="normal"><a href="#__codelineno-0-796">796</a></span>
|
|
14090
|
-
<
|
|
14091
|
-
<
|
|
14092
|
-
<a id="__codelineno-0-784" name="__codelineno-0-784"></a> <span class="
|
|
14093
|
-
<a id="__codelineno-0-785" name="__codelineno-0-785"></a>
|
|
14094
|
-
<a id="__codelineno-0-786" name="__codelineno-0-786"></a> <span class="
|
|
14095
|
-
<a id="__codelineno-0-787" name="__codelineno-0-787"></a>
|
|
14096
|
-
<a id="__codelineno-0-788" name="__codelineno-0-788"></a> <span class="
|
|
14097
|
-
<a id="__codelineno-0-789" name="__codelineno-0-789"></a>
|
|
14098
|
-
<a id="__codelineno-0-790" name="__codelineno-0-790"></a>
|
|
14099
|
-
<a id="__codelineno-0-791" name="__codelineno-0-791"></a> <span class="n">
|
|
14100
|
-
<a id="__codelineno-0-792" name="__codelineno-0-792"></a> <span class="n">
|
|
14101
|
-
<a id="__codelineno-0-793" name="__codelineno-0-793"></a> <span class="n">
|
|
14102
|
-
<a id="__codelineno-0-794" name="__codelineno-0-794"></a> <span class="
|
|
14103
|
-
<a id="__codelineno-0-795" name="__codelineno-0-795"></a> <span class="
|
|
14104
|
-
<a id="__codelineno-0-796" name="__codelineno-0-796"></a>
|
|
14105
|
-
<a id="__codelineno-0-797" name="__codelineno-0-797"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
14106
|
-
<a id="__codelineno-0-798" name="__codelineno-0-798"></a> <span class="p">)</span>
|
|
14049
|
+
<span class="normal"><a href="#__codelineno-0-796">796</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-781" name="__codelineno-0-781"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">query_params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
14050
|
+
<a id="__codelineno-0-782" name="__codelineno-0-782"></a> <span class="kn">from</span> <span class="nn">nautobot.extras.models</span> <span class="kn">import</span> <span class="n">Tag</span>
|
|
14051
|
+
<a id="__codelineno-0-783" name="__codelineno-0-783"></a>
|
|
14052
|
+
<a id="__codelineno-0-784" name="__codelineno-0-784"></a> <span class="k">if</span> <span class="n">queryset</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
14053
|
+
<a id="__codelineno-0-785" name="__codelineno-0-785"></a> <span class="n">queryset</span> <span class="o">=</span> <span class="n">Tag</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
|
14054
|
+
<a id="__codelineno-0-786" name="__codelineno-0-786"></a> <span class="n">query_params</span> <span class="o">=</span> <span class="n">query_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
14055
|
+
<a id="__codelineno-0-787" name="__codelineno-0-787"></a> <span class="n">query_params</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s2">"content_types"</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">label_lower</span><span class="p">})</span>
|
|
14056
|
+
<a id="__codelineno-0-788" name="__codelineno-0-788"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
|
|
14057
|
+
<a id="__codelineno-0-789" name="__codelineno-0-789"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Tags"</span><span class="p">,</span>
|
|
14058
|
+
<a id="__codelineno-0-790" name="__codelineno-0-790"></a> <span class="n">query_params</span><span class="o">=</span><span class="n">query_params</span><span class="p">,</span>
|
|
14059
|
+
<a id="__codelineno-0-791" name="__codelineno-0-791"></a> <span class="n">queryset</span><span class="o">=</span><span class="n">queryset</span><span class="p">,</span>
|
|
14060
|
+
<a id="__codelineno-0-792" name="__codelineno-0-792"></a> <span class="n">required</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
14061
|
+
<a id="__codelineno-0-793" name="__codelineno-0-793"></a> <span class="n">to_field_name</span><span class="o">=</span><span class="s2">"name"</span><span class="p">,</span>
|
|
14062
|
+
<a id="__codelineno-0-794" name="__codelineno-0-794"></a> <span class="o">*</span><span class="n">args</span><span class="p">,</span>
|
|
14063
|
+
<a id="__codelineno-0-795" name="__codelineno-0-795"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
14064
|
+
<a id="__codelineno-0-796" name="__codelineno-0-796"></a> <span class="p">)</span>
|
|
14107
14065
|
</code></pre></div></td></tr></table></div>
|
|
14108
14066
|
</details>
|
|
14109
14067
|
</div>
|
|
@@ -14204,7 +14162,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
|
|
|
14204
14162
|
<a id="__codelineno-0-113" name="__codelineno-0-113"></a><span class="w"> </span><span class="sd">"""</span>
|
|
14205
14163
|
<a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> Add a blank choice to the beginning of a choices list.</span>
|
|
14206
14164
|
<a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="sd"> """</span>
|
|
14207
|
-
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">return</span> <span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s2">"---------"</span><span class="p">)
|
|
14165
|
+
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">return</span> <span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s2">"---------"</span><span class="p">),</span> <span class="o">*</span><span class="nb">tuple</span><span class="p">(</span><span class="n">choices</span><span class="p">))</span>
|
|
14208
14166
|
</code></pre></div></td></tr></table></div>
|
|
14209
14167
|
</details>
|
|
14210
14168
|
</div>
|