nautobot 2.3.15b1__py3-none-any.whl → 2.4.0__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.
Potentially problematic release.
This version of nautobot might be problematic. Click here for more details.
- nautobot/__init__.py +15 -0
- nautobot/apps/__init__.py +1 -1
- nautobot/apps/api.py +8 -10
- nautobot/apps/change_logging.py +2 -2
- nautobot/apps/choices.py +4 -4
- nautobot/apps/config.py +32 -3
- nautobot/apps/events.py +19 -0
- nautobot/apps/exceptions.py +0 -2
- nautobot/apps/factory.py +2 -2
- nautobot/apps/filters.py +1 -1
- nautobot/apps/forms.py +20 -20
- nautobot/apps/graphql.py +2 -2
- nautobot/apps/jobs.py +8 -8
- nautobot/apps/models.py +19 -19
- nautobot/apps/tables.py +1 -1
- nautobot/apps/testing.py +10 -10
- nautobot/apps/ui.py +44 -9
- nautobot/apps/utils.py +7 -15
- nautobot/apps/views.py +8 -6
- nautobot/circuits/api/serializers.py +1 -0
- nautobot/circuits/api/views.py +4 -8
- nautobot/circuits/navigation.py +0 -57
- nautobot/circuits/templates/circuits/circuit_create.html +1 -7
- nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -71
- nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -64
- nautobot/circuits/templates/circuits/inc/circuit_termination_cable_fragment.html +40 -0
- nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +26 -0
- nautobot/circuits/templates/circuits/provider_retrieve.html +0 -76
- nautobot/circuits/tests/integration/test_relationships.py +33 -24
- nautobot/circuits/tests/test_filters.py +4 -8
- nautobot/circuits/views.py +143 -26
- nautobot/cloud/api/views.py +6 -10
- nautobot/cloud/factory.py +4 -1
- nautobot/cloud/models.py +1 -1
- nautobot/cloud/tests/test_filters.py +5 -4
- nautobot/cloud/views.py +0 -16
- nautobot/core/api/constants.py +11 -0
- nautobot/core/api/fields.py +5 -5
- nautobot/core/api/filter_backends.py +3 -9
- nautobot/core/api/metadata.py +28 -256
- nautobot/core/api/pagination.py +3 -2
- nautobot/core/api/renderers.py +3 -0
- nautobot/core/api/schema.py +13 -2
- nautobot/core/api/serializers.py +54 -268
- nautobot/core/api/urls.py +3 -4
- nautobot/core/api/utils.py +0 -62
- nautobot/core/api/views.py +102 -159
- nautobot/core/apps/__init__.py +22 -575
- nautobot/core/celery/__init__.py +13 -0
- nautobot/core/celery/schedulers.py +48 -3
- nautobot/core/choices.py +2 -2
- nautobot/core/cli/__init__.py +8 -0
- nautobot/core/constants.py +7 -0
- nautobot/core/events/__init__.py +116 -0
- nautobot/core/events/base.py +27 -0
- nautobot/core/events/exceptions.py +10 -0
- nautobot/core/events/redis_broker.py +48 -0
- nautobot/core/events/syslog_broker.py +19 -0
- nautobot/core/exceptions.py +0 -6
- nautobot/core/filters.py +19 -16
- nautobot/core/forms/__init__.py +19 -19
- nautobot/core/forms/fields.py +62 -14
- nautobot/core/forms/forms.py +33 -2
- nautobot/core/forms/utils.py +2 -1
- nautobot/core/graphql/schema.py +3 -1
- nautobot/core/graphql/types.py +1 -1
- nautobot/core/jobs/__init__.py +28 -7
- nautobot/core/jobs/bulk_actions.py +248 -0
- nautobot/core/jobs/cleanup.py +2 -2
- nautobot/core/jobs/groups.py +1 -1
- nautobot/core/management/commands/generate_test_data.py +21 -0
- nautobot/core/management/commands/validate_models.py +1 -1
- nautobot/core/middleware.py +16 -0
- nautobot/core/models/__init__.py +1 -1
- nautobot/core/models/fields.py +11 -7
- nautobot/core/models/query_functions.py +2 -2
- nautobot/core/models/tree_queries.py +2 -2
- nautobot/core/settings.py +71 -4
- nautobot/core/settings.yaml +107 -0
- nautobot/core/tables.py +15 -51
- nautobot/core/tasks.py +1 -1
- nautobot/core/templates/about.html +67 -0
- nautobot/core/templates/components/button/default.html +7 -0
- nautobot/core/templates/components/button/dropdown.html +20 -0
- nautobot/core/templates/components/layout/one_over_two.html +19 -0
- nautobot/core/templates/components/layout/two_over_one.html +19 -0
- nautobot/core/templates/components/panel/body_content_data_table.html +27 -0
- nautobot/core/templates/components/panel/body_content_objects_table.html +4 -0
- nautobot/core/templates/components/panel/body_content_tags.html +6 -0
- nautobot/core/templates/components/panel/body_content_text.html +12 -0
- nautobot/core/templates/components/panel/body_wrapper_generic.html +3 -0
- nautobot/core/templates/components/panel/body_wrapper_key_value_table.html +3 -0
- nautobot/core/templates/components/panel/body_wrapper_table.html +3 -0
- nautobot/core/templates/components/panel/footer_contacts_table.html +20 -0
- nautobot/core/templates/components/panel/footer_content_table.html +14 -0
- nautobot/core/templates/components/panel/grouping_toggle.html +14 -0
- nautobot/core/templates/components/panel/header_extra_content_table.html +3 -0
- nautobot/core/templates/components/panel/panel.html +16 -0
- nautobot/core/templates/components/panel/stats_panel_body.html +8 -0
- nautobot/core/templates/components/tab/content_wrapper.html +3 -0
- nautobot/core/templates/components/tab/label_wrapper.html +5 -0
- nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +3 -0
- nautobot/core/templates/generic/object_retrieve.html +28 -17
- nautobot/core/templates/inc/computed_fields/panel_data.html +4 -7
- nautobot/core/templates/inc/custom_fields/panel.html +2 -2
- nautobot/core/templates/inc/custom_fields/panel_data.html +4 -7
- nautobot/core/templates/inc/footer.html +1 -0
- nautobot/core/templates/inc/media.html +3 -0
- nautobot/core/templates/inc/nav_menu.html +2 -1
- nautobot/core/templates/inc/relationships_panel.html +1 -1
- nautobot/core/templates/inc/tenancy_form_panel.html +9 -0
- nautobot/core/templates/inc/tenant_table_row.html +11 -0
- nautobot/core/templates/nautobot_config.py.j2 +16 -0
- nautobot/core/templates/panel_table.html +12 -0
- nautobot/core/templates/utilities/render_jinja2.html +117 -0
- nautobot/core/templates/utilities/templatetags/tag.html +1 -1
- nautobot/core/templates/utilities/theme_preview.html +7 -0
- nautobot/core/templatetags/helpers.py +104 -6
- nautobot/core/templatetags/ui_framework.py +40 -0
- nautobot/core/testing/__init__.py +8 -8
- nautobot/core/testing/api.py +187 -137
- nautobot/core/testing/context.py +18 -0
- nautobot/core/testing/filters.py +44 -34
- nautobot/core/testing/forms.py +2 -0
- nautobot/core/testing/views.py +68 -146
- nautobot/core/tests/integration/test_app_home.py +0 -1
- nautobot/core/tests/integration/test_app_navbar.py +0 -1
- nautobot/core/tests/integration/test_filters.py +0 -2
- nautobot/core/tests/integration/test_home.py +0 -1
- nautobot/core/tests/integration/test_navbar.py +0 -1
- nautobot/core/tests/integration/test_view_authentication.py +2 -1
- nautobot/core/tests/nautobot_config.py +198 -0
- nautobot/core/tests/runner.py +3 -3
- nautobot/core/tests/test_api.py +154 -176
- nautobot/core/tests/test_events.py +214 -0
- nautobot/core/tests/test_forms.py +1 -0
- nautobot/core/tests/test_jinja_filters.py +1 -0
- nautobot/core/tests/test_jobs.py +387 -14
- nautobot/core/tests/test_navigations.py +7 -241
- nautobot/core/tests/test_settings_schema.py +7 -0
- nautobot/core/tests/test_tables.py +100 -0
- nautobot/core/tests/test_templatetags_helpers.py +16 -0
- nautobot/core/tests/test_ui.py +150 -0
- nautobot/core/tests/test_utils.py +55 -18
- nautobot/core/tests/test_views.py +153 -5
- nautobot/core/ui/__init__.py +0 -0
- nautobot/core/ui/base.py +11 -0
- nautobot/core/ui/choices.py +44 -0
- nautobot/core/ui/homepage.py +167 -0
- nautobot/core/ui/nav.py +280 -0
- nautobot/core/ui/object_detail.py +1855 -0
- nautobot/core/ui/utils.py +36 -0
- nautobot/core/urls.py +15 -0
- nautobot/core/utils/config.py +30 -3
- nautobot/core/utils/lookup.py +12 -2
- nautobot/core/utils/querysets.py +64 -0
- nautobot/core/utils/requests.py +24 -9
- nautobot/core/views/__init__.py +48 -1
- nautobot/core/views/generic.py +82 -177
- nautobot/core/views/mixins.py +98 -38
- nautobot/core/views/paginator.py +8 -5
- nautobot/core/views/renderers.py +9 -9
- nautobot/core/views/utils.py +11 -0
- nautobot/core/wsgi.py +3 -3
- nautobot/dcim/api/serializers.py +82 -189
- nautobot/dcim/api/urls.py +5 -0
- nautobot/dcim/api/views.py +57 -110
- nautobot/dcim/apps.py +1 -0
- nautobot/dcim/choices.py +28 -0
- nautobot/dcim/factory.py +58 -0
- nautobot/dcim/filters/__init__.py +204 -2
- nautobot/dcim/forms.py +221 -9
- nautobot/dcim/graphql/types.py +2 -2
- nautobot/dcim/migrations/0063_interfacevdcassignment_virtualdevicecontext_and_more.py +165 -0
- nautobot/dcim/migrations/0064_virtualdevicecontext_status_data_migration.py +28 -0
- nautobot/dcim/migrations/0065_controller_capabilities_and_more.py +29 -0
- nautobot/dcim/migrations/0066_controllermanageddevicegroup_radio_profiles_and_more.py +33 -0
- nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +25 -0
- nautobot/dcim/models/__init__.py +5 -1
- nautobot/dcim/models/device_component_templates.py +2 -2
- nautobot/dcim/models/device_components.py +22 -20
- nautobot/dcim/models/devices.py +181 -3
- nautobot/dcim/models/locations.py +3 -3
- nautobot/dcim/models/power.py +6 -5
- nautobot/dcim/models/racks.py +6 -6
- nautobot/dcim/navigation.py +25 -224
- nautobot/dcim/signals.py +44 -0
- nautobot/dcim/tables/__init__.py +5 -3
- nautobot/dcim/tables/devices.py +103 -7
- nautobot/dcim/tables/devicetypes.py +2 -2
- nautobot/dcim/tables/racks.py +1 -1
- nautobot/dcim/templates/dcim/controller/base.html +10 -0
- nautobot/dcim/templates/dcim/controller_create.html +2 -7
- nautobot/dcim/templates/dcim/controller_retrieve.html +6 -10
- nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +25 -0
- nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +68 -0
- nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +51 -0
- nautobot/dcim/templates/dcim/device/base.html +6 -42
- nautobot/dcim/templates/dcim/device/wireless.html +73 -0
- nautobot/dcim/templates/dcim/device.html +4 -10
- nautobot/dcim/templates/dcim/device_edit.html +36 -37
- nautobot/dcim/templates/dcim/interface.html +1 -0
- nautobot/dcim/templates/dcim/interface_edit.html +1 -0
- nautobot/dcim/templates/dcim/location.html +1 -9
- nautobot/dcim/templates/dcim/location_edit.html +1 -7
- nautobot/dcim/templates/dcim/locationtype.html +0 -107
- nautobot/dcim/templates/dcim/locationtype_retrieve.html +8 -0
- nautobot/dcim/templates/dcim/rack.html +1 -9
- nautobot/dcim/templates/dcim/rack_edit.html +1 -7
- nautobot/dcim/templates/dcim/rackreservation.html +1 -9
- nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +68 -0
- nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +28 -0
- nautobot/dcim/tests/integration/test_controller.py +62 -0
- nautobot/dcim/tests/integration/test_controller_managed_device_group.py +71 -0
- nautobot/dcim/tests/test_api.py +188 -64
- nautobot/dcim/tests/test_filters.py +172 -76
- nautobot/dcim/tests/test_graphql.py +52 -0
- nautobot/dcim/tests/test_jobs.py +118 -0
- nautobot/dcim/tests/test_models.py +159 -5
- nautobot/dcim/tests/test_signals.py +1 -0
- nautobot/dcim/tests/test_views.py +118 -88
- nautobot/dcim/urls.py +72 -27
- nautobot/dcim/utils.py +2 -2
- nautobot/dcim/views.py +357 -62
- nautobot/extras/api/customfields.py +2 -2
- nautobot/extras/api/serializers.py +111 -87
- nautobot/extras/api/urls.py +4 -0
- nautobot/extras/api/views.py +93 -35
- nautobot/extras/choices.py +13 -0
- nautobot/extras/constants.py +2 -1
- nautobot/extras/context_managers.py +23 -6
- nautobot/extras/datasources/git.py +4 -1
- nautobot/extras/factory.py +27 -0
- nautobot/extras/filters/__init__.py +66 -5
- nautobot/extras/forms/base.py +2 -2
- nautobot/extras/forms/forms.py +262 -59
- nautobot/extras/forms/mixins.py +3 -3
- nautobot/extras/graphql/types.py +25 -1
- nautobot/extras/health_checks.py +1 -2
- nautobot/extras/jobs.py +114 -20
- nautobot/extras/management/__init__.py +1 -0
- nautobot/extras/management/commands/runjob.py +7 -79
- nautobot/extras/management/commands/runjob_with_job_result.py +46 -0
- nautobot/extras/management/utils.py +87 -0
- nautobot/extras/managers.py +3 -1
- nautobot/extras/migrations/0018_joblog_data_migration.py +7 -9
- nautobot/extras/migrations/0117_create_job_queue_model.py +129 -0
- nautobot/extras/migrations/0118_task_queue_to_job_queue_migration.py +78 -0
- nautobot/extras/migrations/0119_remove_task_queues_from_job_and_queue_from_scheduled_job.py +28 -0
- nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +22 -0
- nautobot/extras/migrations/0121_alter_team_contacts.py +17 -0
- nautobot/extras/models/__init__.py +5 -1
- nautobot/extras/models/change_logging.py +7 -3
- nautobot/extras/models/contacts.py +1 -1
- nautobot/extras/models/customfields.py +12 -11
- nautobot/extras/models/groups.py +11 -9
- nautobot/extras/models/jobs.py +237 -37
- nautobot/extras/models/models.py +2 -2
- nautobot/extras/models/relationships.py +69 -1
- nautobot/extras/models/secrets.py +5 -0
- nautobot/extras/navigation.py +20 -262
- nautobot/extras/plugins/__init__.py +54 -19
- nautobot/extras/plugins/marketplace_manifest.yml +455 -0
- nautobot/extras/plugins/tables.py +16 -14
- nautobot/extras/plugins/urls.py +1 -0
- nautobot/extras/plugins/views.py +104 -61
- nautobot/extras/registry.py +1 -1
- nautobot/extras/secrets/__init__.py +2 -2
- nautobot/extras/signals.py +39 -1
- nautobot/extras/tables.py +42 -6
- nautobot/extras/templates/extras/dynamicgroup.html +1 -9
- nautobot/extras/templates/extras/externalintegration_retrieve.html +0 -47
- nautobot/extras/templates/extras/inc/tags_panel.html +1 -5
- nautobot/extras/templates/extras/job_bulk_edit.html +2 -1
- nautobot/extras/templates/extras/job_detail.html +52 -6
- nautobot/extras/templates/extras/job_edit.html +6 -2
- nautobot/extras/templates/extras/job_list.html +2 -7
- nautobot/extras/templates/extras/jobqueue_retrieve.html +36 -0
- nautobot/extras/templates/extras/marketplace.html +296 -0
- nautobot/extras/templates/extras/plugin_detail.html +32 -15
- nautobot/extras/templates/extras/plugins_list.html +35 -1
- nautobot/extras/templates/extras/plugins_tiles.html +90 -0
- nautobot/extras/templates/extras/role_retrieve.html +16 -0
- nautobot/extras/templates/extras/secret.html +0 -65
- nautobot/extras/templates/extras/secret_check.js +16 -0
- nautobot/extras/templates/extras/secret_create.html +114 -0
- nautobot/extras/templates/extras/secret_edit.html +1 -114
- nautobot/extras/templates/extras/secretsgroup_edit.html +1 -1
- nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +2 -0
- nautobot/extras/templatetags/job_buttons.py +5 -4
- nautobot/extras/templatetags/plugins.py +69 -6
- nautobot/extras/test_jobs/api_test_job.py +1 -1
- nautobot/extras/test_jobs/atomic_transaction.py +2 -2
- nautobot/extras/test_jobs/dry_run.py +1 -1
- nautobot/extras/test_jobs/fail.py +5 -5
- nautobot/extras/test_jobs/file_output.py +1 -1
- nautobot/extras/test_jobs/file_upload_fail.py +1 -1
- nautobot/extras/test_jobs/file_upload_pass.py +1 -1
- nautobot/extras/test_jobs/ipaddress_vars.py +3 -1
- nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
- nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
- nautobot/extras/test_jobs/log_redaction.py +1 -1
- nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
- nautobot/extras/test_jobs/modify_db.py +1 -1
- nautobot/extras/test_jobs/object_var_optional.py +1 -1
- nautobot/extras/test_jobs/object_var_required.py +1 -1
- nautobot/extras/test_jobs/object_vars.py +1 -1
- nautobot/extras/test_jobs/pass.py +3 -3
- nautobot/extras/test_jobs/profiling.py +1 -1
- nautobot/extras/test_jobs/relative_import.py +3 -3
- nautobot/extras/test_jobs/singleton.py +16 -0
- nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
- nautobot/extras/test_jobs/task_queues.py +1 -1
- nautobot/extras/tests/integration/test_plugin_banner.py +0 -2
- nautobot/extras/tests/test_api.py +157 -55
- nautobot/extras/tests/test_context_managers.py +4 -1
- nautobot/extras/tests/test_customfields.py +1 -1
- nautobot/extras/tests/test_datasources.py +2 -1
- nautobot/extras/tests/test_dynamicgroups.py +1 -1
- nautobot/extras/tests/test_filters.py +219 -535
- nautobot/extras/tests/test_forms.py +20 -1
- nautobot/extras/tests/test_job_variables.py +73 -152
- nautobot/extras/tests/test_jobs.py +192 -62
- nautobot/extras/tests/test_models.py +71 -16
- nautobot/extras/tests/test_plugins.py +62 -9
- nautobot/extras/tests/test_relationships.py +124 -10
- nautobot/extras/tests/test_utils.py +23 -2
- nautobot/extras/tests/test_views.py +162 -161
- nautobot/extras/tests/test_webhooks.py +2 -1
- nautobot/extras/urls.py +2 -20
- nautobot/extras/utils.py +119 -4
- nautobot/extras/views.py +188 -141
- nautobot/extras/webhooks.py +5 -2
- nautobot/ipam/api/fields.py +3 -3
- nautobot/ipam/api/serializers.py +44 -137
- nautobot/ipam/api/views.py +68 -110
- nautobot/ipam/factory.py +1 -1
- nautobot/ipam/filters.py +3 -2
- nautobot/ipam/models.py +10 -12
- nautobot/ipam/navigation.py +0 -90
- nautobot/ipam/querysets.py +2 -2
- nautobot/ipam/tables.py +3 -1
- nautobot/ipam/templates/ipam/ipaddress.html +1 -9
- nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +1 -7
- nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -7
- nautobot/ipam/templates/ipam/prefix.html +1 -9
- nautobot/ipam/templates/ipam/prefix_edit.html +1 -7
- nautobot/ipam/templates/ipam/routetarget.html +0 -28
- nautobot/ipam/templates/ipam/vlan.html +1 -9
- nautobot/ipam/templates/ipam/vlan_edit.html +1 -7
- nautobot/ipam/templates/ipam/vrf.html +0 -47
- nautobot/ipam/templates/ipam/vrf_edit.html +1 -7
- nautobot/ipam/tests/test_api.py +19 -6
- nautobot/ipam/tests/test_filters.py +39 -119
- nautobot/ipam/tests/test_forms.py +49 -47
- nautobot/ipam/tests/test_migrations.py +30 -30
- nautobot/ipam/tests/test_models.py +56 -36
- nautobot/ipam/tests/test_querysets.py +14 -0
- nautobot/ipam/tests/test_views.py +3 -0
- nautobot/ipam/urls.py +3 -69
- nautobot/ipam/utils/__init__.py +16 -10
- nautobot/ipam/views.py +91 -162
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +40 -2
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
- nautobot/project-static/css/base.css +38 -3
- nautobot/project-static/docs/404.html +463 -19
- nautobot/project-static/docs/apps/index.html +463 -19
- nautobot/project-static/docs/apps/nautobot-apps.html +464 -21
- nautobot/project-static/docs/assets/_mkdocstrings.css +25 -1
- nautobot/project-static/docs/assets/extra.css +5 -1
- nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js → bundle.88dd0f4e.min.js} +2 -2
- nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js.map → bundle.88dd0f4e.min.js.map} +2 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +479 -25
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +476 -22
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +792 -291
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +507 -33
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +512 -36
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +473 -22
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +469 -20
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +499 -35
- nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9883 -0
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +525 -77
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +548 -53
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +672 -96
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1033 -180
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +526 -51
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +876 -190
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +957 -237
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +477 -23
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +488 -30
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +663 -101
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +949 -481
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +6427 -1236
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +476 -22
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +879 -346
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +830 -173
- nautobot/project-static/docs/development/apps/api/configuration-view.html +463 -19
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +463 -19
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +463 -19
- nautobot/project-static/docs/development/apps/api/models/global-search.html +463 -19
- nautobot/project-static/docs/development/apps/api/models/graphql.html +463 -19
- nautobot/project-static/docs/development/apps/api/models/index.html +463 -19
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +463 -19
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +463 -19
- nautobot/project-static/docs/development/apps/api/prometheus.html +463 -19
- nautobot/project-static/docs/development/apps/api/setup.html +467 -155
- nautobot/project-static/docs/development/apps/api/testing.html +463 -19
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +463 -19
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +463 -19
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +463 -19
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +463 -19
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +743 -130
- nautobot/project-static/docs/development/apps/api/views/base-template.html +463 -19
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +463 -19
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +463 -19
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +463 -19
- nautobot/project-static/docs/development/apps/api/views/index.html +465 -20
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +467 -19
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +493 -19
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +463 -19
- nautobot/project-static/docs/development/apps/api/views/notes.html +463 -19
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +469 -21
- nautobot/project-static/docs/development/apps/api/views/urls.html +463 -19
- nautobot/project-static/docs/development/apps/index.html +463 -19
- nautobot/project-static/docs/development/apps/migration/code-updates.html +464 -52
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +464 -20
- nautobot/project-static/docs/development/apps/migration/from-v1.html +463 -19
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +463 -19
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +463 -19
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +463 -19
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +466 -22
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9261 -0
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +9375 -0
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +9671 -0
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +9559 -0
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +466 -22
- nautobot/project-static/docs/development/core/application-registry.html +463 -19
- nautobot/project-static/docs/development/core/best-practices.html +463 -19
- nautobot/project-static/docs/development/core/bootstrap-ui.html +463 -19
- nautobot/project-static/docs/development/core/caching.html +463 -19
- nautobot/project-static/docs/development/core/controllers.html +465 -19
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +491 -90
- nautobot/project-static/docs/development/core/generic-views.html +463 -19
- nautobot/project-static/docs/development/core/getting-started.html +541 -129
- nautobot/project-static/docs/development/core/homepage.html +474 -30
- nautobot/project-static/docs/development/core/index.html +463 -19
- nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9754 -0
- nautobot/project-static/docs/development/core/model-checklist.html +473 -27
- nautobot/project-static/docs/development/core/model-features.html +463 -19
- nautobot/project-static/docs/development/core/natural-keys.html +463 -19
- nautobot/project-static/docs/development/core/navigation-menu.html +480 -26
- nautobot/project-static/docs/development/core/release-checklist.html +480 -48
- nautobot/project-static/docs/development/core/role-internals.html +463 -19
- nautobot/project-static/docs/development/core/settings.html +463 -19
- nautobot/project-static/docs/development/core/style-guide.html +466 -22
- nautobot/project-static/docs/development/core/templates.html +473 -22
- nautobot/project-static/docs/development/core/testing.html +463 -19
- nautobot/project-static/docs/development/core/ui-component-framework.html +11116 -0
- nautobot/project-static/docs/development/core/user-preferences.html +466 -22
- nautobot/project-static/docs/development/index.html +463 -19
- nautobot/project-static/docs/development/jobs/index.html +501 -21
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +463 -19
- nautobot/project-static/docs/index.html +471 -38
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/basic-panel-layout.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/button-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/dropdown-button-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-1.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-2.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/table-panels-family.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/text-panels-family.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/ui-framework-example.png +0 -0
- nautobot/project-static/docs/media/models/virtual_device_context_overview.drawio +73 -0
- nautobot/project-static/docs/media/models/virtual_device_context_overview.png +0 -0
- nautobot/project-static/docs/models/dcim/virtualdevicecontext.html +14 -0
- nautobot/project-static/docs/models/extras/jobqueue.html +14 -0
- nautobot/project-static/docs/models/wireless/radioprofile.html +14 -0
- nautobot/project-static/docs/models/wireless/supporteddatarate.html +14 -0
- nautobot/project-static/docs/models/wireless/wirelessnetwork.html +14 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +469 -23
- nautobot/project-static/docs/overview/design_philosophy.html +463 -19
- nautobot/project-static/docs/release-notes/index.html +485 -22
- nautobot/project-static/docs/release-notes/version-1.0.html +651 -208
- nautobot/project-static/docs/release-notes/version-1.1.html +648 -205
- nautobot/project-static/docs/release-notes/version-1.2.html +723 -280
- nautobot/project-static/docs/release-notes/version-1.3.html +749 -306
- nautobot/project-static/docs/release-notes/version-1.4.html +834 -392
- nautobot/project-static/docs/release-notes/version-1.5.html +1022 -581
- nautobot/project-static/docs/release-notes/version-1.6.html +942 -518
- nautobot/project-static/docs/release-notes/version-2.0.html +945 -504
- nautobot/project-static/docs/release-notes/version-2.1.html +780 -339
- nautobot/project-static/docs/release-notes/version-2.2.html +773 -332
- nautobot/project-static/docs/release-notes/version-2.3.html +1142 -448
- nautobot/project-static/docs/release-notes/version-2.4.html +10323 -0
- nautobot/project-static/docs/requirements.txt +2 -2
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +342 -270
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +463 -19
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +463 -19
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +463 -19
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +475 -32
- nautobot/project-static/docs/user-guide/administration/configuration/redis.html +463 -19
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +894 -180
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/docker.html +476 -29
- nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +463 -19
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +465 -21
- nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +463 -19
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +463 -19
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +463 -19
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +483 -23
- nautobot/project-static/docs/user-guide/administration/installation/index.html +468 -20
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +464 -20
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +463 -19
- nautobot/project-static/docs/user-guide/administration/installation/services.html +463 -19
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +463 -19
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +484 -41
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +477 -66
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +477 -66
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +466 -23
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-nautobot-app-location.yaml +0 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +463 -19
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +469 -21
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +499 -20
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +489 -22
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9375 -0
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +470 -30
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +466 -22
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +463 -19
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +466 -22
- nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9313 -0
- nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9217 -0
- nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9211 -0
- nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9277 -0
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +468 -22
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +463 -19
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +466 -22
- nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +9444 -0
- nautobot/project-static/docs/user-guide/index.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +466 -22
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +467 -23
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/events.html +9617 -0
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +466 -22
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +472 -23
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +466 -22
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +466 -22
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9224 -0
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9722 -0
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +466 -22
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +467 -23
- nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9292 -0
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +511 -40
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +494 -23
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +466 -22
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +531 -56
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +463 -19
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +463 -19
- nautobot/project-static/img/jinja_logo.svg +97 -0
- nautobot/project-static/js/forms.js +6 -1
- nautobot/project-static/js/nav_menu.js +2 -1
- nautobot/tenancy/api/serializers.py +0 -2
- nautobot/tenancy/api/views.py +9 -13
- nautobot/tenancy/factory.py +1 -1
- nautobot/tenancy/navigation.py +0 -29
- nautobot/tenancy/templates/tenancy/tenant.html +4 -91
- nautobot/tenancy/tests/test_filters.py +29 -134
- nautobot/tenancy/views.py +35 -24
- nautobot/users/admin.py +3 -1
- nautobot/users/api/serializers.py +4 -4
- nautobot/users/api/views.py +3 -3
- nautobot/users/forms.py +19 -0
- nautobot/users/templates/users/preferences.html +22 -0
- nautobot/users/tests/test_filters.py +1 -19
- nautobot/users/tests/test_views.py +57 -0
- nautobot/users/utils.py +8 -0
- nautobot/users/views.py +48 -11
- nautobot/virtualization/api/serializers.py +4 -4
- nautobot/virtualization/api/views.py +5 -24
- nautobot/virtualization/filters.py +1 -2
- nautobot/virtualization/models.py +1 -1
- nautobot/virtualization/navigation.py +0 -48
- nautobot/virtualization/tables.py +2 -2
- nautobot/virtualization/templates/virtualization/cluster_edit.html +1 -7
- nautobot/virtualization/templates/virtualization/clustertype.html +0 -39
- nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -9
- nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -8
- nautobot/virtualization/tests/test_filters.py +57 -166
- nautobot/virtualization/views.py +18 -15
- nautobot/wireless/__init__.py +0 -0
- nautobot/wireless/api/__init__.py +0 -0
- nautobot/wireless/api/serializers.py +44 -0
- nautobot/wireless/api/urls.py +20 -0
- nautobot/wireless/api/views.py +34 -0
- nautobot/wireless/apps.py +8 -0
- nautobot/wireless/choices.py +345 -0
- nautobot/wireless/factory.py +138 -0
- nautobot/wireless/filters.py +167 -0
- nautobot/wireless/forms.py +283 -0
- nautobot/wireless/homepage.py +19 -0
- nautobot/wireless/migrations/0001_initial.py +223 -0
- nautobot/wireless/migrations/__init__.py +0 -0
- nautobot/wireless/models.py +207 -0
- nautobot/wireless/navigation.py +105 -0
- nautobot/wireless/tables.py +244 -0
- nautobot/wireless/templates/wireless/radioprofile_retrieve.html +81 -0
- nautobot/wireless/templates/wireless/supporteddatarate_retrieve.html +26 -0
- nautobot/wireless/templates/wireless/wirelessnetwork_create.html +88 -0
- nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +56 -0
- nautobot/wireless/tests/__init__.py +0 -0
- nautobot/wireless/tests/integration/__init__.py +0 -0
- nautobot/wireless/tests/integration/test_radio_profile.py +42 -0
- nautobot/wireless/tests/test_api.py +247 -0
- nautobot/wireless/tests/test_filters.py +82 -0
- nautobot/wireless/tests/test_models.py +22 -0
- nautobot/wireless/tests/test_views.py +378 -0
- nautobot/wireless/urls.py +13 -0
- nautobot/wireless/views.py +119 -0
- {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/METADATA +11 -13
- {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/RECORD +783 -613
- {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/WHEEL +1 -1
- nautobot/core/fixtures/user-data.json +0 -59
- nautobot/core/utils/navigation.py +0 -54
- {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/NOTICE +0 -0
- {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/entry_points.txt +0 -0
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
<link rel="icon" href="../../../../assets/favicon.ico">
|
|
21
|
-
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.
|
|
21
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -2112,6 +2112,27 @@
|
|
|
2112
2112
|
|
|
2113
2113
|
|
|
2114
2114
|
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
<li class="md-nav__item">
|
|
2122
|
+
<a href="../../../../user-guide/feature-guides/wireless-networks-and-controllers.html" class="md-nav__link">
|
|
2123
|
+
|
|
2124
|
+
|
|
2125
|
+
<span class="md-ellipsis">
|
|
2126
|
+
Wireless Networks and Controllers
|
|
2127
|
+
</span>
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
</a>
|
|
2131
|
+
</li>
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
|
|
2115
2136
|
</ul>
|
|
2116
2137
|
</nav>
|
|
2117
2138
|
|
|
@@ -3944,6 +3965,27 @@
|
|
|
3944
3965
|
|
|
3945
3966
|
|
|
3946
3967
|
|
|
3968
|
+
|
|
3969
|
+
|
|
3970
|
+
|
|
3971
|
+
|
|
3972
|
+
|
|
3973
|
+
|
|
3974
|
+
<li class="md-nav__item">
|
|
3975
|
+
<a href="../../../../user-guide/core-data-model/dcim/virtualdevicecontext.html" class="md-nav__link">
|
|
3976
|
+
|
|
3977
|
+
|
|
3978
|
+
<span class="md-ellipsis">
|
|
3979
|
+
Virtual Device Context
|
|
3980
|
+
</span>
|
|
3981
|
+
|
|
3982
|
+
|
|
3983
|
+
</a>
|
|
3984
|
+
</li>
|
|
3985
|
+
|
|
3986
|
+
|
|
3987
|
+
|
|
3988
|
+
|
|
3947
3989
|
</ul>
|
|
3948
3990
|
</nav>
|
|
3949
3991
|
|
|
@@ -4556,6 +4598,123 @@
|
|
|
4556
4598
|
|
|
4557
4599
|
|
|
4558
4600
|
|
|
4601
|
+
|
|
4602
|
+
|
|
4603
|
+
|
|
4604
|
+
|
|
4605
|
+
|
|
4606
|
+
|
|
4607
|
+
|
|
4608
|
+
|
|
4609
|
+
|
|
4610
|
+
|
|
4611
|
+
|
|
4612
|
+
|
|
4613
|
+
|
|
4614
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
4615
|
+
|
|
4616
|
+
|
|
4617
|
+
|
|
4618
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_9" >
|
|
4619
|
+
|
|
4620
|
+
|
|
4621
|
+
|
|
4622
|
+
<div class="md-nav__link md-nav__container">
|
|
4623
|
+
<a href="../../../../user-guide/core-data-model/wireless/index.html" class="md-nav__link ">
|
|
4624
|
+
|
|
4625
|
+
|
|
4626
|
+
<span class="md-ellipsis">
|
|
4627
|
+
Wireless
|
|
4628
|
+
</span>
|
|
4629
|
+
|
|
4630
|
+
|
|
4631
|
+
</a>
|
|
4632
|
+
|
|
4633
|
+
|
|
4634
|
+
<label class="md-nav__link " for="__nav_2_3_9" id="__nav_2_3_9_label" tabindex="0">
|
|
4635
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4636
|
+
</label>
|
|
4637
|
+
|
|
4638
|
+
</div>
|
|
4639
|
+
|
|
4640
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_9_label" aria-expanded="false">
|
|
4641
|
+
<label class="md-nav__title" for="__nav_2_3_9">
|
|
4642
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4643
|
+
Wireless
|
|
4644
|
+
</label>
|
|
4645
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
4646
|
+
|
|
4647
|
+
|
|
4648
|
+
|
|
4649
|
+
|
|
4650
|
+
|
|
4651
|
+
|
|
4652
|
+
|
|
4653
|
+
<li class="md-nav__item">
|
|
4654
|
+
<a href="../../../../user-guide/core-data-model/wireless/supporteddatarate.html" class="md-nav__link">
|
|
4655
|
+
|
|
4656
|
+
|
|
4657
|
+
<span class="md-ellipsis">
|
|
4658
|
+
Supported Data Rate
|
|
4659
|
+
</span>
|
|
4660
|
+
|
|
4661
|
+
|
|
4662
|
+
</a>
|
|
4663
|
+
</li>
|
|
4664
|
+
|
|
4665
|
+
|
|
4666
|
+
|
|
4667
|
+
|
|
4668
|
+
|
|
4669
|
+
|
|
4670
|
+
|
|
4671
|
+
|
|
4672
|
+
|
|
4673
|
+
|
|
4674
|
+
<li class="md-nav__item">
|
|
4675
|
+
<a href="../../../../user-guide/core-data-model/wireless/radioprofile.html" class="md-nav__link">
|
|
4676
|
+
|
|
4677
|
+
|
|
4678
|
+
<span class="md-ellipsis">
|
|
4679
|
+
Radio Profile
|
|
4680
|
+
</span>
|
|
4681
|
+
|
|
4682
|
+
|
|
4683
|
+
</a>
|
|
4684
|
+
</li>
|
|
4685
|
+
|
|
4686
|
+
|
|
4687
|
+
|
|
4688
|
+
|
|
4689
|
+
|
|
4690
|
+
|
|
4691
|
+
|
|
4692
|
+
|
|
4693
|
+
|
|
4694
|
+
|
|
4695
|
+
<li class="md-nav__item">
|
|
4696
|
+
<a href="../../../../user-guide/core-data-model/wireless/wirelessnetwork.html" class="md-nav__link">
|
|
4697
|
+
|
|
4698
|
+
|
|
4699
|
+
<span class="md-ellipsis">
|
|
4700
|
+
Wireless Network
|
|
4701
|
+
</span>
|
|
4702
|
+
|
|
4703
|
+
|
|
4704
|
+
</a>
|
|
4705
|
+
</li>
|
|
4706
|
+
|
|
4707
|
+
|
|
4708
|
+
|
|
4709
|
+
|
|
4710
|
+
</ul>
|
|
4711
|
+
</nav>
|
|
4712
|
+
|
|
4713
|
+
</li>
|
|
4714
|
+
|
|
4715
|
+
|
|
4716
|
+
|
|
4717
|
+
|
|
4559
4718
|
</ul>
|
|
4560
4719
|
</nav>
|
|
4561
4720
|
|
|
@@ -4767,6 +4926,27 @@
|
|
|
4767
4926
|
|
|
4768
4927
|
|
|
4769
4928
|
|
|
4929
|
+
<li class="md-nav__item">
|
|
4930
|
+
<a href="../../../../user-guide/platform-functionality/events.html" class="md-nav__link">
|
|
4931
|
+
|
|
4932
|
+
|
|
4933
|
+
<span class="md-ellipsis">
|
|
4934
|
+
Event Notifications
|
|
4935
|
+
</span>
|
|
4936
|
+
|
|
4937
|
+
|
|
4938
|
+
</a>
|
|
4939
|
+
</li>
|
|
4940
|
+
|
|
4941
|
+
|
|
4942
|
+
|
|
4943
|
+
|
|
4944
|
+
|
|
4945
|
+
|
|
4946
|
+
|
|
4947
|
+
|
|
4948
|
+
|
|
4949
|
+
|
|
4770
4950
|
<li class="md-nav__item">
|
|
4771
4951
|
<a href="../../../../user-guide/platform-functionality/exporttemplate.html" class="md-nav__link">
|
|
4772
4952
|
|
|
@@ -4841,7 +5021,7 @@
|
|
|
4841
5021
|
|
|
4842
5022
|
|
|
4843
5023
|
|
|
4844
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
5024
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_10" >
|
|
4845
5025
|
|
|
4846
5026
|
|
|
4847
5027
|
|
|
@@ -4857,14 +5037,14 @@
|
|
|
4857
5037
|
</a>
|
|
4858
5038
|
|
|
4859
5039
|
|
|
4860
|
-
<label class="md-nav__link " for="
|
|
5040
|
+
<label class="md-nav__link " for="__nav_2_4_10" id="__nav_2_4_10_label" tabindex="0">
|
|
4861
5041
|
<span class="md-nav__icon md-icon"></span>
|
|
4862
5042
|
</label>
|
|
4863
5043
|
|
|
4864
5044
|
</div>
|
|
4865
5045
|
|
|
4866
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
4867
|
-
<label class="md-nav__title" for="
|
|
5046
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_10_label" aria-expanded="false">
|
|
5047
|
+
<label class="md-nav__title" for="__nav_2_4_10">
|
|
4868
5048
|
<span class="md-nav__icon md-icon"></span>
|
|
4869
5049
|
GraphQL
|
|
4870
5050
|
</label>
|
|
@@ -4937,7 +5117,7 @@
|
|
|
4937
5117
|
|
|
4938
5118
|
|
|
4939
5119
|
|
|
4940
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
5120
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_12" >
|
|
4941
5121
|
|
|
4942
5122
|
|
|
4943
5123
|
|
|
@@ -4953,14 +5133,14 @@
|
|
|
4953
5133
|
</a>
|
|
4954
5134
|
|
|
4955
5135
|
|
|
4956
|
-
<label class="md-nav__link " for="
|
|
5136
|
+
<label class="md-nav__link " for="__nav_2_4_12" id="__nav_2_4_12_label" tabindex="0">
|
|
4957
5137
|
<span class="md-nav__icon md-icon"></span>
|
|
4958
5138
|
</label>
|
|
4959
5139
|
|
|
4960
5140
|
</div>
|
|
4961
5141
|
|
|
4962
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
4963
|
-
<label class="md-nav__title" for="
|
|
5142
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_12_label" aria-expanded="false">
|
|
5143
|
+
<label class="md-nav__title" for="__nav_2_4_12">
|
|
4964
5144
|
<span class="md-nav__icon md-icon"></span>
|
|
4965
5145
|
Jobs
|
|
4966
5146
|
</label>
|
|
@@ -4972,6 +5152,27 @@
|
|
|
4972
5152
|
|
|
4973
5153
|
|
|
4974
5154
|
|
|
5155
|
+
<li class="md-nav__item">
|
|
5156
|
+
<a href="../../../../user-guide/platform-functionality/jobs/kubernetes-job-support.html" class="md-nav__link">
|
|
5157
|
+
|
|
5158
|
+
|
|
5159
|
+
<span class="md-ellipsis">
|
|
5160
|
+
Kubernetes Job Support
|
|
5161
|
+
</span>
|
|
5162
|
+
|
|
5163
|
+
|
|
5164
|
+
</a>
|
|
5165
|
+
</li>
|
|
5166
|
+
|
|
5167
|
+
|
|
5168
|
+
|
|
5169
|
+
|
|
5170
|
+
|
|
5171
|
+
|
|
5172
|
+
|
|
5173
|
+
|
|
5174
|
+
|
|
5175
|
+
|
|
4975
5176
|
<li class="md-nav__item">
|
|
4976
5177
|
<a href="../../../../user-guide/platform-functionality/jobs/jobbutton.html" class="md-nav__link">
|
|
4977
5178
|
|
|
@@ -5035,6 +5236,27 @@
|
|
|
5035
5236
|
|
|
5036
5237
|
|
|
5037
5238
|
|
|
5239
|
+
<li class="md-nav__item">
|
|
5240
|
+
<a href="../../../../user-guide/platform-functionality/jobs/jobqueue.html" class="md-nav__link">
|
|
5241
|
+
|
|
5242
|
+
|
|
5243
|
+
<span class="md-ellipsis">
|
|
5244
|
+
Job Queues
|
|
5245
|
+
</span>
|
|
5246
|
+
|
|
5247
|
+
|
|
5248
|
+
</a>
|
|
5249
|
+
</li>
|
|
5250
|
+
|
|
5251
|
+
|
|
5252
|
+
|
|
5253
|
+
|
|
5254
|
+
|
|
5255
|
+
|
|
5256
|
+
|
|
5257
|
+
|
|
5258
|
+
|
|
5259
|
+
|
|
5038
5260
|
<li class="md-nav__item">
|
|
5039
5261
|
<a href="../../../../user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html" class="md-nav__link">
|
|
5040
5262
|
|
|
@@ -5148,6 +5370,27 @@
|
|
|
5148
5370
|
|
|
5149
5371
|
|
|
5150
5372
|
|
|
5373
|
+
<li class="md-nav__item">
|
|
5374
|
+
<a href="../../../../user-guide/platform-functionality/rendering-jinja-templates.html" class="md-nav__link">
|
|
5375
|
+
|
|
5376
|
+
|
|
5377
|
+
<span class="md-ellipsis">
|
|
5378
|
+
Rendering Jinja Templates
|
|
5379
|
+
</span>
|
|
5380
|
+
|
|
5381
|
+
|
|
5382
|
+
</a>
|
|
5383
|
+
</li>
|
|
5384
|
+
|
|
5385
|
+
|
|
5386
|
+
|
|
5387
|
+
|
|
5388
|
+
|
|
5389
|
+
|
|
5390
|
+
|
|
5391
|
+
|
|
5392
|
+
|
|
5393
|
+
|
|
5151
5394
|
|
|
5152
5395
|
|
|
5153
5396
|
|
|
@@ -5159,7 +5402,7 @@
|
|
|
5159
5402
|
|
|
5160
5403
|
|
|
5161
5404
|
|
|
5162
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
5405
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_18" >
|
|
5163
5406
|
|
|
5164
5407
|
|
|
5165
5408
|
|
|
@@ -5175,14 +5418,14 @@
|
|
|
5175
5418
|
</a>
|
|
5176
5419
|
|
|
5177
5420
|
|
|
5178
|
-
<label class="md-nav__link " for="
|
|
5421
|
+
<label class="md-nav__link " for="__nav_2_4_18" id="__nav_2_4_18_label" tabindex="0">
|
|
5179
5422
|
<span class="md-nav__icon md-icon"></span>
|
|
5180
5423
|
</label>
|
|
5181
5424
|
|
|
5182
5425
|
</div>
|
|
5183
5426
|
|
|
5184
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
5185
|
-
<label class="md-nav__title" for="
|
|
5427
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_18_label" aria-expanded="false">
|
|
5428
|
+
<label class="md-nav__title" for="__nav_2_4_18">
|
|
5186
5429
|
<span class="md-nav__icon md-icon"></span>
|
|
5187
5430
|
REST API
|
|
5188
5431
|
</label>
|
|
@@ -5402,10 +5645,10 @@
|
|
|
5402
5645
|
|
|
5403
5646
|
|
|
5404
5647
|
|
|
5405
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
5648
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_25" >
|
|
5406
5649
|
|
|
5407
5650
|
|
|
5408
|
-
<label class="md-nav__link" for="
|
|
5651
|
+
<label class="md-nav__link" for="__nav_2_4_25" id="__nav_2_4_25_label" tabindex="0">
|
|
5409
5652
|
|
|
5410
5653
|
|
|
5411
5654
|
<span class="md-ellipsis">
|
|
@@ -5416,8 +5659,8 @@
|
|
|
5416
5659
|
<span class="md-nav__icon md-icon"></span>
|
|
5417
5660
|
</label>
|
|
5418
5661
|
|
|
5419
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
5420
|
-
<label class="md-nav__title" for="
|
|
5662
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_25_label" aria-expanded="false">
|
|
5663
|
+
<label class="md-nav__title" for="__nav_2_4_25">
|
|
5421
5664
|
<span class="md-nav__icon md-icon"></span>
|
|
5422
5665
|
Users
|
|
5423
5666
|
</label>
|
|
@@ -6628,24 +6871,96 @@
|
|
|
6628
6871
|
</span>
|
|
6629
6872
|
</a>
|
|
6630
6873
|
|
|
6874
|
+
<nav class="md-nav" aria-label="Extending Object Detail Views">
|
|
6875
|
+
<ul class="md-nav__list">
|
|
6876
|
+
|
|
6877
|
+
<li class="md-nav__item">
|
|
6878
|
+
<a href="#additional-methods-and-the-render-context" class="md-nav__link">
|
|
6879
|
+
<span class="md-ellipsis">
|
|
6880
|
+
Additional Methods and the Render Context
|
|
6881
|
+
</span>
|
|
6882
|
+
</a>
|
|
6883
|
+
|
|
6884
|
+
</li>
|
|
6885
|
+
|
|
6886
|
+
</ul>
|
|
6887
|
+
</nav>
|
|
6888
|
+
|
|
6631
6889
|
</li>
|
|
6632
6890
|
|
|
6633
6891
|
<li class="md-nav__item">
|
|
6634
|
-
<a href="#adding-detail-
|
|
6892
|
+
<a href="#adding-detail-panels" class="md-nav__link">
|
|
6635
6893
|
<span class="md-ellipsis">
|
|
6636
|
-
Adding Detail
|
|
6894
|
+
Adding Detail Panels
|
|
6895
|
+
</span>
|
|
6896
|
+
</a>
|
|
6897
|
+
|
|
6898
|
+
<nav class="md-nav" aria-label="Adding Detail Panels">
|
|
6899
|
+
<ul class="md-nav__list">
|
|
6900
|
+
|
|
6901
|
+
<li class="md-nav__item">
|
|
6902
|
+
<a href="#via-object_detail_panels" class="md-nav__link">
|
|
6903
|
+
<span class="md-ellipsis">
|
|
6904
|
+
Via object_detail_panels
|
|
6905
|
+
</span>
|
|
6906
|
+
</a>
|
|
6907
|
+
|
|
6908
|
+
</li>
|
|
6909
|
+
|
|
6910
|
+
<li class="md-nav__item">
|
|
6911
|
+
<a href="#via-the-_page-methods-deprecated" class="md-nav__link">
|
|
6912
|
+
<span class="md-ellipsis">
|
|
6913
|
+
Via the *_page() Methods (Deprecated)
|
|
6637
6914
|
</span>
|
|
6638
6915
|
</a>
|
|
6639
6916
|
|
|
6917
|
+
</li>
|
|
6918
|
+
|
|
6919
|
+
</ul>
|
|
6920
|
+
</nav>
|
|
6921
|
+
|
|
6640
6922
|
</li>
|
|
6641
6923
|
|
|
6642
6924
|
<li class="md-nav__item">
|
|
6643
|
-
<a href="#
|
|
6925
|
+
<a href="#adding-detail-tabs" class="md-nav__link">
|
|
6926
|
+
<span class="md-ellipsis">
|
|
6927
|
+
Adding Detail Tabs
|
|
6928
|
+
</span>
|
|
6929
|
+
</a>
|
|
6930
|
+
|
|
6931
|
+
<nav class="md-nav" aria-label="Adding Detail Tabs">
|
|
6932
|
+
<ul class="md-nav__list">
|
|
6933
|
+
|
|
6934
|
+
<li class="md-nav__item">
|
|
6935
|
+
<a href="#via-object_detail_tabs" class="md-nav__link">
|
|
6936
|
+
<span class="md-ellipsis">
|
|
6937
|
+
Via object_detail_tabs
|
|
6938
|
+
</span>
|
|
6939
|
+
</a>
|
|
6940
|
+
|
|
6941
|
+
</li>
|
|
6942
|
+
|
|
6943
|
+
<li class="md-nav__item">
|
|
6944
|
+
<a href="#via-detail_tabs-deprecated" class="md-nav__link">
|
|
6644
6945
|
<span class="md-ellipsis">
|
|
6645
|
-
|
|
6946
|
+
Via detail_tabs() (Deprecated)
|
|
6646
6947
|
</span>
|
|
6647
6948
|
</a>
|
|
6648
6949
|
|
|
6950
|
+
</li>
|
|
6951
|
+
|
|
6952
|
+
<li class="md-nav__item">
|
|
6953
|
+
<a href="#defining-distinct-tab-views" class="md-nav__link">
|
|
6954
|
+
<span class="md-ellipsis">
|
|
6955
|
+
Defining Distinct Tab Views
|
|
6956
|
+
</span>
|
|
6957
|
+
</a>
|
|
6958
|
+
|
|
6959
|
+
</li>
|
|
6960
|
+
|
|
6961
|
+
</ul>
|
|
6962
|
+
</nav>
|
|
6963
|
+
|
|
6649
6964
|
</li>
|
|
6650
6965
|
|
|
6651
6966
|
</ul>
|
|
@@ -6898,6 +7213,27 @@
|
|
|
6898
7213
|
|
|
6899
7214
|
|
|
6900
7215
|
|
|
7216
|
+
<li class="md-nav__item">
|
|
7217
|
+
<a href="../../../../code-reference/nautobot/apps/events.html" class="md-nav__link">
|
|
7218
|
+
|
|
7219
|
+
|
|
7220
|
+
<span class="md-ellipsis">
|
|
7221
|
+
nautobot.apps.events
|
|
7222
|
+
</span>
|
|
7223
|
+
|
|
7224
|
+
|
|
7225
|
+
</a>
|
|
7226
|
+
</li>
|
|
7227
|
+
|
|
7228
|
+
|
|
7229
|
+
|
|
7230
|
+
|
|
7231
|
+
|
|
7232
|
+
|
|
7233
|
+
|
|
7234
|
+
|
|
7235
|
+
|
|
7236
|
+
|
|
6901
7237
|
<li class="md-nav__item">
|
|
6902
7238
|
<a href="../../../../code-reference/nautobot/apps/exceptions.html" class="md-nav__link">
|
|
6903
7239
|
|
|
@@ -7446,6 +7782,123 @@
|
|
|
7446
7782
|
|
|
7447
7783
|
|
|
7448
7784
|
|
|
7785
|
+
|
|
7786
|
+
|
|
7787
|
+
|
|
7788
|
+
|
|
7789
|
+
|
|
7790
|
+
|
|
7791
|
+
|
|
7792
|
+
|
|
7793
|
+
|
|
7794
|
+
|
|
7795
|
+
|
|
7796
|
+
|
|
7797
|
+
|
|
7798
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
7799
|
+
|
|
7800
|
+
|
|
7801
|
+
|
|
7802
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_9_5" >
|
|
7803
|
+
|
|
7804
|
+
|
|
7805
|
+
|
|
7806
|
+
<div class="md-nav__link md-nav__container">
|
|
7807
|
+
<a href="../../migration/ui-component-framework/index.html" class="md-nav__link ">
|
|
7808
|
+
|
|
7809
|
+
|
|
7810
|
+
<span class="md-ellipsis">
|
|
7811
|
+
UI Component Framework
|
|
7812
|
+
</span>
|
|
7813
|
+
|
|
7814
|
+
|
|
7815
|
+
</a>
|
|
7816
|
+
|
|
7817
|
+
|
|
7818
|
+
<label class="md-nav__link " for="__nav_3_2_9_5" id="__nav_3_2_9_5_label" tabindex="0">
|
|
7819
|
+
<span class="md-nav__icon md-icon"></span>
|
|
7820
|
+
</label>
|
|
7821
|
+
|
|
7822
|
+
</div>
|
|
7823
|
+
|
|
7824
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_2_9_5_label" aria-expanded="false">
|
|
7825
|
+
<label class="md-nav__title" for="__nav_3_2_9_5">
|
|
7826
|
+
<span class="md-nav__icon md-icon"></span>
|
|
7827
|
+
UI Component Framework
|
|
7828
|
+
</label>
|
|
7829
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
7830
|
+
|
|
7831
|
+
|
|
7832
|
+
|
|
7833
|
+
|
|
7834
|
+
|
|
7835
|
+
|
|
7836
|
+
|
|
7837
|
+
<li class="md-nav__item">
|
|
7838
|
+
<a href="../../migration/ui-component-framework/migration-steps.html" class="md-nav__link">
|
|
7839
|
+
|
|
7840
|
+
|
|
7841
|
+
<span class="md-ellipsis">
|
|
7842
|
+
Migration steps
|
|
7843
|
+
</span>
|
|
7844
|
+
|
|
7845
|
+
|
|
7846
|
+
</a>
|
|
7847
|
+
</li>
|
|
7848
|
+
|
|
7849
|
+
|
|
7850
|
+
|
|
7851
|
+
|
|
7852
|
+
|
|
7853
|
+
|
|
7854
|
+
|
|
7855
|
+
|
|
7856
|
+
|
|
7857
|
+
|
|
7858
|
+
<li class="md-nav__item">
|
|
7859
|
+
<a href="../../migration/ui-component-framework/custom-content.html" class="md-nav__link">
|
|
7860
|
+
|
|
7861
|
+
|
|
7862
|
+
<span class="md-ellipsis">
|
|
7863
|
+
Custom content
|
|
7864
|
+
</span>
|
|
7865
|
+
|
|
7866
|
+
|
|
7867
|
+
</a>
|
|
7868
|
+
</li>
|
|
7869
|
+
|
|
7870
|
+
|
|
7871
|
+
|
|
7872
|
+
|
|
7873
|
+
|
|
7874
|
+
|
|
7875
|
+
|
|
7876
|
+
|
|
7877
|
+
|
|
7878
|
+
|
|
7879
|
+
<li class="md-nav__item">
|
|
7880
|
+
<a href="../../migration/ui-component-framework/best-practices.html" class="md-nav__link">
|
|
7881
|
+
|
|
7882
|
+
|
|
7883
|
+
<span class="md-ellipsis">
|
|
7884
|
+
Best practices
|
|
7885
|
+
</span>
|
|
7886
|
+
|
|
7887
|
+
|
|
7888
|
+
</a>
|
|
7889
|
+
</li>
|
|
7890
|
+
|
|
7891
|
+
|
|
7892
|
+
|
|
7893
|
+
|
|
7894
|
+
</ul>
|
|
7895
|
+
</nav>
|
|
7896
|
+
|
|
7897
|
+
</li>
|
|
7898
|
+
|
|
7899
|
+
|
|
7900
|
+
|
|
7901
|
+
|
|
7449
7902
|
</ul>
|
|
7450
7903
|
</nav>
|
|
7451
7904
|
|
|
@@ -7791,6 +8244,27 @@
|
|
|
7791
8244
|
|
|
7792
8245
|
|
|
7793
8246
|
|
|
8247
|
+
<li class="md-nav__item">
|
|
8248
|
+
<a href="../../../core/minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
|
|
8249
|
+
|
|
8250
|
+
|
|
8251
|
+
<span class="md-ellipsis">
|
|
8252
|
+
Minikube Dev Environment for K8s Jobs
|
|
8253
|
+
</span>
|
|
8254
|
+
|
|
8255
|
+
|
|
8256
|
+
</a>
|
|
8257
|
+
</li>
|
|
8258
|
+
|
|
8259
|
+
|
|
8260
|
+
|
|
8261
|
+
|
|
8262
|
+
|
|
8263
|
+
|
|
8264
|
+
|
|
8265
|
+
|
|
8266
|
+
|
|
8267
|
+
|
|
7794
8268
|
<li class="md-nav__item">
|
|
7795
8269
|
<a href="../../../core/model-checklist.html" class="md-nav__link">
|
|
7796
8270
|
|
|
@@ -7980,6 +8454,27 @@
|
|
|
7980
8454
|
|
|
7981
8455
|
|
|
7982
8456
|
|
|
8457
|
+
<li class="md-nav__item">
|
|
8458
|
+
<a href="../../../core/ui-component-framework.html" class="md-nav__link">
|
|
8459
|
+
|
|
8460
|
+
|
|
8461
|
+
<span class="md-ellipsis">
|
|
8462
|
+
UI Component Framework
|
|
8463
|
+
</span>
|
|
8464
|
+
|
|
8465
|
+
|
|
8466
|
+
</a>
|
|
8467
|
+
</li>
|
|
8468
|
+
|
|
8469
|
+
|
|
8470
|
+
|
|
8471
|
+
|
|
8472
|
+
|
|
8473
|
+
|
|
8474
|
+
|
|
8475
|
+
|
|
8476
|
+
|
|
8477
|
+
|
|
7983
8478
|
<li class="md-nav__item">
|
|
7984
8479
|
<a href="../../../core/release-checklist.html" class="md-nav__link">
|
|
7985
8480
|
|
|
@@ -8062,6 +8557,27 @@
|
|
|
8062
8557
|
|
|
8063
8558
|
|
|
8064
8559
|
|
|
8560
|
+
<li class="md-nav__item">
|
|
8561
|
+
<a href="../../../../release-notes/version-2.4.html" class="md-nav__link">
|
|
8562
|
+
|
|
8563
|
+
|
|
8564
|
+
<span class="md-ellipsis">
|
|
8565
|
+
Version 2.4
|
|
8566
|
+
</span>
|
|
8567
|
+
|
|
8568
|
+
|
|
8569
|
+
</a>
|
|
8570
|
+
</li>
|
|
8571
|
+
|
|
8572
|
+
|
|
8573
|
+
|
|
8574
|
+
|
|
8575
|
+
|
|
8576
|
+
|
|
8577
|
+
|
|
8578
|
+
|
|
8579
|
+
|
|
8580
|
+
|
|
8065
8581
|
<li class="md-nav__item">
|
|
8066
8582
|
<a href="../../../../release-notes/version-2.3.html" class="md-nav__link">
|
|
8067
8583
|
|
|
@@ -8656,24 +9172,96 @@
|
|
|
8656
9172
|
</span>
|
|
8657
9173
|
</a>
|
|
8658
9174
|
|
|
9175
|
+
<nav class="md-nav" aria-label="Extending Object Detail Views">
|
|
9176
|
+
<ul class="md-nav__list">
|
|
9177
|
+
|
|
9178
|
+
<li class="md-nav__item">
|
|
9179
|
+
<a href="#additional-methods-and-the-render-context" class="md-nav__link">
|
|
9180
|
+
<span class="md-ellipsis">
|
|
9181
|
+
Additional Methods and the Render Context
|
|
9182
|
+
</span>
|
|
9183
|
+
</a>
|
|
9184
|
+
|
|
9185
|
+
</li>
|
|
9186
|
+
|
|
9187
|
+
</ul>
|
|
9188
|
+
</nav>
|
|
9189
|
+
|
|
8659
9190
|
</li>
|
|
8660
9191
|
|
|
8661
9192
|
<li class="md-nav__item">
|
|
8662
|
-
<a href="#adding-detail-
|
|
9193
|
+
<a href="#adding-detail-panels" class="md-nav__link">
|
|
8663
9194
|
<span class="md-ellipsis">
|
|
8664
|
-
Adding Detail
|
|
9195
|
+
Adding Detail Panels
|
|
9196
|
+
</span>
|
|
9197
|
+
</a>
|
|
9198
|
+
|
|
9199
|
+
<nav class="md-nav" aria-label="Adding Detail Panels">
|
|
9200
|
+
<ul class="md-nav__list">
|
|
9201
|
+
|
|
9202
|
+
<li class="md-nav__item">
|
|
9203
|
+
<a href="#via-object_detail_panels" class="md-nav__link">
|
|
9204
|
+
<span class="md-ellipsis">
|
|
9205
|
+
Via object_detail_panels
|
|
9206
|
+
</span>
|
|
9207
|
+
</a>
|
|
9208
|
+
|
|
9209
|
+
</li>
|
|
9210
|
+
|
|
9211
|
+
<li class="md-nav__item">
|
|
9212
|
+
<a href="#via-the-_page-methods-deprecated" class="md-nav__link">
|
|
9213
|
+
<span class="md-ellipsis">
|
|
9214
|
+
Via the *_page() Methods (Deprecated)
|
|
8665
9215
|
</span>
|
|
8666
9216
|
</a>
|
|
8667
9217
|
|
|
9218
|
+
</li>
|
|
9219
|
+
|
|
9220
|
+
</ul>
|
|
9221
|
+
</nav>
|
|
9222
|
+
|
|
8668
9223
|
</li>
|
|
8669
9224
|
|
|
8670
9225
|
<li class="md-nav__item">
|
|
8671
|
-
<a href="#
|
|
9226
|
+
<a href="#adding-detail-tabs" class="md-nav__link">
|
|
9227
|
+
<span class="md-ellipsis">
|
|
9228
|
+
Adding Detail Tabs
|
|
9229
|
+
</span>
|
|
9230
|
+
</a>
|
|
9231
|
+
|
|
9232
|
+
<nav class="md-nav" aria-label="Adding Detail Tabs">
|
|
9233
|
+
<ul class="md-nav__list">
|
|
9234
|
+
|
|
9235
|
+
<li class="md-nav__item">
|
|
9236
|
+
<a href="#via-object_detail_tabs" class="md-nav__link">
|
|
8672
9237
|
<span class="md-ellipsis">
|
|
8673
|
-
|
|
9238
|
+
Via object_detail_tabs
|
|
8674
9239
|
</span>
|
|
8675
9240
|
</a>
|
|
8676
9241
|
|
|
9242
|
+
</li>
|
|
9243
|
+
|
|
9244
|
+
<li class="md-nav__item">
|
|
9245
|
+
<a href="#via-detail_tabs-deprecated" class="md-nav__link">
|
|
9246
|
+
<span class="md-ellipsis">
|
|
9247
|
+
Via detail_tabs() (Deprecated)
|
|
9248
|
+
</span>
|
|
9249
|
+
</a>
|
|
9250
|
+
|
|
9251
|
+
</li>
|
|
9252
|
+
|
|
9253
|
+
<li class="md-nav__item">
|
|
9254
|
+
<a href="#defining-distinct-tab-views" class="md-nav__link">
|
|
9255
|
+
<span class="md-ellipsis">
|
|
9256
|
+
Defining Distinct Tab Views
|
|
9257
|
+
</span>
|
|
9258
|
+
</a>
|
|
9259
|
+
|
|
9260
|
+
</li>
|
|
9261
|
+
|
|
9262
|
+
</ul>
|
|
9263
|
+
</nav>
|
|
9264
|
+
|
|
8677
9265
|
</li>
|
|
8678
9266
|
|
|
8679
9267
|
</ul>
|
|
@@ -8696,21 +9284,31 @@
|
|
|
8696
9284
|
|
|
8697
9285
|
<h1 id="extending-object-detail-views-and-tabs">Extending Object Detail Views and Tabs<a class="headerlink" href="#extending-object-detail-views-and-tabs" title="Permanent link">¶</a></h1>
|
|
8698
9286
|
<h2 id="extending-object-detail-views">Extending Object Detail Views<a class="headerlink" href="#extending-object-detail-views" title="Permanent link">¶</a></h2>
|
|
8699
|
-
<p>Apps can inject custom content into certain areas of the detail and list views of applicable models. This is accomplished by subclassing <code>TemplateExtension</code>, designating a particular Nautobot model, and defining the desired methods to
|
|
9287
|
+
<p>Apps can inject custom content into certain areas of the detail and list views of applicable models. This is accomplished by subclassing <code>TemplateExtension</code>, designating a particular Nautobot model, and defining the desired attributes and/or methods to provide custom content. Several attributes and methods are available:</p>
|
|
8700
9288
|
<ul>
|
|
8701
|
-
<li><code>
|
|
8702
|
-
<li><code>
|
|
8703
|
-
<li><code>
|
|
8704
|
-
<li><code>
|
|
9289
|
+
<li><code>object_detail_tabs</code> - List of <code>Tab</code> instances to add to the detail view as additional tabs.</li>
|
|
9290
|
+
<li><code>object_detail_buttons</code> - List of <code>Button</code> instances to add to the detail view.</li>
|
|
9291
|
+
<li><code>object_detail_panels</code> - List of <code>Panel</code> instances to add to the main tab of the detail view.</li>
|
|
9292
|
+
<li><code>left_page()</code> - Inject content on the left side of the object detail page (deprecated since Nautobot 2.4.0; <code>object_detail_panels</code> is preferred)</li>
|
|
9293
|
+
<li><code>right_page()</code> - Inject content on the right side of the object detail page (deprecated since Nautobot 2.4.0; <code>object_detail_panels</code> is preferred)</li>
|
|
9294
|
+
<li><code>full_width_page()</code> - Inject content across the entire bottom of the object detail page (deprecated since Nautobot 2.4.0; <code>object_detail_panels</code> is preferred)</li>
|
|
9295
|
+
<li><code>buttons()</code> - Add buttons to the top of the object detail page (deprecated since Nautobot 2.4.0; <code>object_detail_buttons</code> is preferred)</li>
|
|
8705
9296
|
<li><code>list_buttons()</code> - Add buttons to the object list page. This works in the same way as <code>buttons()</code> for the object detail page.</li>
|
|
8706
|
-
<li><code>detail_tabs()</code> - Add extra tabs to the end of the list of tabs within the object detail page tabs navigation</li>
|
|
9297
|
+
<li><code>detail_tabs()</code> - Add extra tabs to the end of the list of tabs within the object detail page tabs navigation (deprecated since Nautobot 2.4.0; <code>object_detail_tabs</code> is preferred)</li>
|
|
8707
9298
|
</ul>
|
|
8708
9299
|
<details class="version-added">
|
|
8709
|
-
<summary>Added in version 2.1.8</summary>
|
|
9300
|
+
<summary>Added in version 2.1.8 — <code>list_buttons()</code> support</summary>
|
|
8710
9301
|
<p>Support for the <code>list_buttons()</code> method was added.</p>
|
|
8711
9302
|
</details>
|
|
8712
|
-
<
|
|
8713
|
-
<
|
|
9303
|
+
<details class="version-changed">
|
|
9304
|
+
<summary>Changed in version 2.4.0 — <code>object_detail_tabs</code>, <code>object_detail_buttons</code>, <code>object_detail_panels</code> support, deprecation of some patterns</summary>
|
|
9305
|
+
<p>Support for the <code>object_detail_tabs</code>, <code>object_detail_buttons</code>, and <code>object_detail_panels</code> attributes was added. The <code>detail_tabs()</code>, <code>buttons()</code>, <code>left_page()</code>, <code>right_page()</code>, and <code>full_width_page()</code> methods were deprecated.</p>
|
|
9306
|
+
</details>
|
|
9307
|
+
<p>For details about the <code>Tab</code>, <code>Button</code>, and <code>Panel</code> classes and their subclasses, refer to the <a href="../../../../code-reference/nautobot/apps/ui.html">relevant section of documentation</a> for full details. You may also find the <a href="../../../core/ui-component-framework.html">UI Component Framework documentation</a> a useful reference as most of the concepts described therein apply to template extensions as well.</p>
|
|
9308
|
+
<p>Declared subclasses should be gathered into a list or tuple for integration with Nautobot. By default, Nautobot looks for an iterable named <code>template_extensions</code> within a <code>template_content.py</code> file. (This can be overridden by setting <code>template_extensions</code> to a custom value on the app's <code>NautobotAppConfig</code>.)</p>
|
|
9309
|
+
<h3 id="additional-methods-and-the-render-context">Additional Methods and the Render Context<a class="headerlink" href="#additional-methods-and-the-render-context" title="Permanent link">¶</a></h3>
|
|
9310
|
+
<p>In support of the method APIs described above, a <code>render()</code> method is available for convenience. This method accepts the name of a template to render, and any additional context data you want to pass. Its use is optional, however.</p>
|
|
9311
|
+
<p>When a TemplateExtension is instantiated, context data is assigned to <code>self.context</code> for the method APIs to access as needed. Available data include:</p>
|
|
8714
9312
|
<ul>
|
|
8715
9313
|
<li><code>object</code> - The object being viewed (note that this will be the model class when accessed in the context of <code>list_buttons()</code>)</li>
|
|
8716
9314
|
<li><code>request</code> - The current request</li>
|
|
@@ -8718,8 +9316,72 @@
|
|
|
8718
9316
|
<li><code>config</code> - App-specific configuration parameters</li>
|
|
8719
9317
|
</ul>
|
|
8720
9318
|
<p>For example, accessing <code>{{ request.user }}</code> within a template will return the current user.</p>
|
|
8721
|
-
<
|
|
9319
|
+
<h2 id="adding-detail-panels">Adding Detail Panels<a class="headerlink" href="#adding-detail-panels" title="Permanent link">¶</a></h2>
|
|
9320
|
+
<h3 id="via-object_detail_panels">Via <code>object_detail_panels</code><a class="headerlink" href="#via-object_detail_panels" title="Permanent link">¶</a></h3>
|
|
9321
|
+
<details class="version-added">
|
|
9322
|
+
<summary>Added in version 2.4.0</summary>
|
|
9323
|
+
</details>
|
|
9324
|
+
<p>The <code>TemplateExtension.object_detail_panels</code> should be a list or tuple of Panel objects (as provided by the <code>nautobot.apps.ui</code> module). A variety of base classes are available; refer to the <a href="../../../../code-reference/nautobot/apps/ui.html">relevant section of documentation</a> for full details. You may also find the <a href="../../../core/ui-component-framework.html">UI Component Framework documentation</a> a useful reference as most of the concepts described therein apply to template extensions as well.</p>
|
|
9325
|
+
<p>For example:</p>
|
|
9326
|
+
<div class="highlight"><span class="filename">example_app/template_content.py</span><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">ObjectTextPanel</span><span class="p">,</span> <span class="n">SectionChoices</span><span class="p">,</span> <span class="n">TemplateExtension</span>
|
|
9327
|
+
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>
|
|
9328
|
+
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>
|
|
9329
|
+
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="k">class</span> <span class="nc">CircuitContent</span><span class="p">(</span><span class="n">TemplateExtension</span><span class="p">):</span>
|
|
9330
|
+
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">model</span> <span class="o">=</span> <span class="s2">"circuits.circuit"</span>
|
|
9331
|
+
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>
|
|
9332
|
+
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">object_detail_panels</span> <span class="o">=</span> <span class="p">(</span>
|
|
9333
|
+
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">ObjectTextPanel</span><span class="p">(</span>
|
|
9334
|
+
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
9335
|
+
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Example App Text Panel"</span><span class="p">,</span>
|
|
9336
|
+
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">LEFT_HALF</span><span class="p">,</span>
|
|
9337
|
+
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">render_as</span><span class="o">=</span><span class="n">ObjectTextPanel</span><span class="o">.</span><span class="n">RenderOptions</span><span class="o">.</span><span class="n">CODE</span><span class="p">,</span>
|
|
9338
|
+
<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="n">object_field</span><span class="o">=</span><span class="s2">"description"</span><span class="p">,</span>
|
|
9339
|
+
<a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="p">),</span>
|
|
9340
|
+
<a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="p">)</span>
|
|
9341
|
+
<a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a>
|
|
9342
|
+
<a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a><span class="n">template_extensions</span> <span class="o">=</span> <span class="p">[</span><span class="n">CircuitContent</span><span class="p">]</span>
|
|
9343
|
+
</code></pre></div>
|
|
9344
|
+
<h3 id="via-the-_page-methods-deprecated">Via the <code>*_page()</code> Methods (Deprecated)<a class="headerlink" href="#via-the-_page-methods-deprecated" title="Permanent link">¶</a></h3>
|
|
9345
|
+
<p>The <code>left_page()</code>, <code>right_page()</code>, and <code>full_width_page()</code> methods each simply return a fragment of HTML. You are responsible for ensuring that the returned HTML is properly constructed and doesn't break the page layout and rendering.</p>
|
|
8722
9346
|
<h2 id="adding-detail-tabs">Adding Detail Tabs<a class="headerlink" href="#adding-detail-tabs" title="Permanent link">¶</a></h2>
|
|
9347
|
+
<h3 id="via-object_detail_tabs">Via <code>object_detail_tabs</code><a class="headerlink" href="#via-object_detail_tabs" title="Permanent link">¶</a></h3>
|
|
9348
|
+
<details class="version-added">
|
|
9349
|
+
<summary>Added in version 2.4.0</summary>
|
|
9350
|
+
</details>
|
|
9351
|
+
<p>The <code>TemplateExtension.object_detail_tabs</code> should be a list or tuple of Tab objects (as provided by the <code>nautobot.apps.ui</code> module). Two base classes are available:</p>
|
|
9352
|
+
<ul>
|
|
9353
|
+
<li><code>Tab</code> - add a tab and its contents to the main object detail page, rendered inline with the rest of that page. Best used for quick-rendering content.</li>
|
|
9354
|
+
<li><code>DistinctViewTab</code> - add a tab to the main object detail page that links to a distinct view of its own when clicked. Best used for more involved content.</li>
|
|
9355
|
+
</ul>
|
|
9356
|
+
<p>For example:</p>
|
|
9357
|
+
<div class="highlight"><span class="filename">example_app/template_content.py</span><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">DistinctViewTab</span><span class="p">,</span> <span class="n">Tab</span><span class="p">,</span> <span class="n">TemplateExtension</span>
|
|
9358
|
+
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>
|
|
9359
|
+
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
|
|
9360
|
+
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="k">class</span> <span class="nc">DeviceExtraTabs</span><span class="p">(</span><span class="n">TemplateExtension</span><span class="p">):</span>
|
|
9361
|
+
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="n">model</span> <span class="o">=</span> <span class="s2">"dcim.device"</span>
|
|
9362
|
+
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>
|
|
9363
|
+
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a> <span class="n">object_detail_tabs</span> <span class="o">=</span> <span class="p">(</span>
|
|
9364
|
+
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a> <span class="n">Tab</span><span class="p">(</span>
|
|
9365
|
+
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
9366
|
+
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a> <span class="n">tab_id</span><span class="o">=</span><span class="s2">"example_app_inline_tab"</span><span class="p">,</span>
|
|
9367
|
+
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Example App Inline Tab"</span><span class="p">,</span>
|
|
9368
|
+
<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a> <span class="n">panels</span><span class="o">=</span><span class="p">[</span>
|
|
9369
|
+
<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a> <span class="n">ObjectFieldsPanel</span><span class="p">(</span><span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="s2">"__all__"</span><span class="p">),</span>
|
|
9370
|
+
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a> <span class="p">],</span>
|
|
9371
|
+
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a> <span class="p">),</span>
|
|
9372
|
+
<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a> <span class="n">DistinctViewTab</span><span class="p">(</span>
|
|
9373
|
+
<a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
|
9374
|
+
<a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a> <span class="n">tab_id</span><span class="o">=</span><span class="s2">"example_app_distinct_view_tab"</span><span class="p">,</span>
|
|
9375
|
+
<a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Example App Distinct View Tab"</span><span class="p">,</span>
|
|
9376
|
+
<a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a> <span class="n">url_name</span><span class="o">=</span><span class="s2">"plugins:example_app:device_detail_tab_1"</span><span class="p">,</span>
|
|
9377
|
+
<a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a> <span class="p">),</span>
|
|
9378
|
+
<a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a> <span class="p">)</span>
|
|
9379
|
+
<a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a>
|
|
9380
|
+
<a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a>
|
|
9381
|
+
<a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="n">template_extensions</span> <span class="o">=</span> <span class="p">[</span><span class="n">DeviceExtraTabs</span><span class="p">]</span>
|
|
9382
|
+
</code></pre></div>
|
|
9383
|
+
<p>Note that a <code>Tab</code> defines its contents directly (as <code>panels</code>) while the <code>DistinctViewTab</code> instead provides a <code>url_name</code> to the related URL that it should link against.</p>
|
|
9384
|
+
<h3 id="via-detail_tabs-deprecated">Via <code>detail_tabs()</code> (Deprecated)<a class="headerlink" href="#via-detail_tabs-deprecated" title="Permanent link">¶</a></h3>
|
|
8723
9385
|
<details class="version-added">
|
|
8724
9386
|
<summary>Added in version 1.4.0</summary>
|
|
8725
9387
|
</details>
|
|
@@ -8730,109 +9392,60 @@
|
|
|
8730
9392
|
<li>The template rendered by this view must extend the object's detail template</li>
|
|
8731
9393
|
</ul>
|
|
8732
9394
|
<p>For example:</p>
|
|
8733
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8734
|
-
<a id="__codelineno-
|
|
8735
|
-
<a id="__codelineno-
|
|
8736
|
-
<a id="__codelineno-
|
|
8737
|
-
<a id="__codelineno-
|
|
8738
|
-
<a id="__codelineno-
|
|
8739
|
-
<a id="__codelineno-
|
|
8740
|
-
<a id="__codelineno-
|
|
8741
|
-
<a id="__codelineno-
|
|
8742
|
-
<a id="__codelineno-
|
|
8743
|
-
<a id="__codelineno-
|
|
9395
|
+
<div class="highlight"><span class="filename">example_app/template_content.py</span><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="k">class</span> <span class="nc">DeviceExtraTabs</span><span class="p">(</span><span class="n">TemplateExtension</span><span class="p">):</span>
|
|
9396
|
+
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="sd">"""Template extension to add extra tabs to the Device detail view."""</span>
|
|
9397
|
+
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a> <span class="n">model</span> <span class="o">=</span> <span class="s2">"dcim.device"</span>
|
|
9398
|
+
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>
|
|
9399
|
+
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> <span class="k">def</span> <span class="nf">detail_tabs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
9400
|
+
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a> <span class="k">return</span> <span class="p">[</span>
|
|
9401
|
+
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a> <span class="p">{</span>
|
|
9402
|
+
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="s2">"App Tab 1"</span><span class="p">,</span>
|
|
9403
|
+
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a> <span class="s2">"url"</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s2">"plugins:example_app:device_detail_tab_1"</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"pk"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="p">[</span><span class="s2">"object"</span><span class="p">]</span><span class="o">.</span><span class="n">pk</span><span class="p">}),</span>
|
|
9404
|
+
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a> <span class="p">},</span>
|
|
9405
|
+
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a> <span class="p">]</span>
|
|
9406
|
+
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a>
|
|
9407
|
+
<a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a>
|
|
9408
|
+
<a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a><span class="n">template_extensions</span> <span class="o">=</span> <span class="p">[</span><span class="n">DeviceExtraTabs</span><span class="p">]</span>
|
|
8744
9409
|
</code></pre></div>
|
|
8745
|
-
<
|
|
8746
|
-
<a
|
|
8747
|
-
<a id="__codelineno-1
|
|
8748
|
-
<a id="__codelineno-
|
|
8749
|
-
<a id="__codelineno-
|
|
8750
|
-
<a id="__codelineno-
|
|
8751
|
-
<a id="__codelineno-
|
|
9410
|
+
<h3 id="defining-distinct-tab-views">Defining Distinct Tab Views<a class="headerlink" href="#defining-distinct-tab-views" title="Permanent link">¶</a></h3>
|
|
9411
|
+
<p>In either of the above cases, you would need to define a new view for the <code>device_detail_tab_1</code> tab to display, following a pattern similar to the below.</p>
|
|
9412
|
+
<div class="highlight"><span class="filename">example_app/tab_device_detail_1.html</span><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>{% extends 'dcim/device.html' %}
|
|
9413
|
+
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>
|
|
9414
|
+
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>{% block content %}
|
|
9415
|
+
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a> <span class="p"><</span><span class="nt">h2</span><span class="p">></span>Device App Tab 1<span class="p"></</span><span class="nt">h2</span><span class="p">></span>
|
|
9416
|
+
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a> <span class="p"><</span><span class="nt">p</span><span class="p">></span>I am some content for the Example App's device ({{ object.pk }}) detail tab 1.<span class="p"></</span><span class="nt">p</span><span class="p">></span>
|
|
9417
|
+
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>{% endblock %}
|
|
8752
9418
|
</code></pre></div>
|
|
8753
9419
|
<p>Here's a basic example of a tab's view</p>
|
|
8754
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8755
|
-
<a id="__codelineno-
|
|
8756
|
-
<a id="__codelineno-
|
|
8757
|
-
<a id="__codelineno-
|
|
8758
|
-
<a id="__codelineno-
|
|
8759
|
-
<a id="__codelineno-
|
|
8760
|
-
<a id="__codelineno-
|
|
8761
|
-
<a id="__codelineno-
|
|
8762
|
-
<a id="__codelineno-
|
|
8763
|
-
<a id="__codelineno-
|
|
8764
|
-
<a id="__codelineno-
|
|
8765
|
-
<a id="__codelineno-
|
|
8766
|
-
<a id="__codelineno-
|
|
8767
|
-
<a id="__codelineno-
|
|
8768
|
-
<a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a> <span class="n">template_name</span> <span class="o">=</span> <span class="s2">"example_app/tab_device_detail_1.html"</span>
|
|
9420
|
+
<div class="highlight"><span class="filename">example_app/views.py</span><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.views</span> <span class="kn">import</span> <span class="n">ObjectView</span>
|
|
9421
|
+
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="kn">from</span> <span class="nn">nautobot.dcim.models</span> <span class="kn">import</span> <span class="n">Device</span>
|
|
9422
|
+
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
|
|
9423
|
+
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="k">class</span> <span class="nc">DeviceDetailAppTabOne</span><span class="p">(</span><span class="n">ObjectView</span><span class="p">):</span>
|
|
9424
|
+
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9425
|
+
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="sd"> This view's template extends the device detail template,</span>
|
|
9426
|
+
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="sd"> making it suitable to show as a tab on the device detail page.</span>
|
|
9427
|
+
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a>
|
|
9428
|
+
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="sd"> Views that are intended to be for an object detail tab's content rendering must</span>
|
|
9429
|
+
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="sd"> always inherit from nautobot.apps.views.ObjectView.</span>
|
|
9430
|
+
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="sd"> """</span>
|
|
9431
|
+
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a>
|
|
9432
|
+
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> <span class="n">queryset</span> <span class="o">=</span> <span class="n">Device</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
9433
|
+
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a> <span class="n">template_name</span> <span class="o">=</span> <span class="s2">"example_app/tab_device_detail_1.html"</span>
|
|
8769
9434
|
</code></pre></div>
|
|
8770
9435
|
<p>You must also add the view to the <code>url_patterns</code> like so (make sure to read the note after this code snippet):</p>
|
|
8771
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8772
|
-
<a id="__codelineno-
|
|
8773
|
-
<a id="__codelineno-
|
|
8774
|
-
<a id="__codelineno-
|
|
8775
|
-
<a id="__codelineno-
|
|
8776
|
-
<a id="__codelineno-
|
|
8777
|
-
<a id="__codelineno-
|
|
8778
|
-
<a id="__codelineno-
|
|
8779
|
-
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="p">]</span>
|
|
9436
|
+
<div class="highlight"><span class="filename">example_app/urls.py</span><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">path</span>
|
|
9437
|
+
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>
|
|
9438
|
+
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="kn">from</span> <span class="nn">example_app</span> <span class="kn">import</span> <span class="n">views</span>
|
|
9439
|
+
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a>
|
|
9440
|
+
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="n">urlpatterns</span> <span class="o">=</span> <span class="p">[</span>
|
|
9441
|
+
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> <span class="c1"># ... previously defined urls</span>
|
|
9442
|
+
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a> <span class="n">path</span><span class="p">(</span><span class="s2">"devices/<uuid:pk>/example-app-tab-1/"</span><span class="p">,</span> <span class="n">views</span><span class="o">.</span><span class="n">DeviceDetailAppTabOne</span><span class="o">.</span><span class="n">as_view</span><span class="p">(),</span> <span class="n">name</span><span class="o">=</span><span class="s2">"device_detail_tab_1"</span><span class="p">),</span>
|
|
9443
|
+
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="p">]</span>
|
|
8780
9444
|
</code></pre></div>
|
|
8781
9445
|
<div class="admonition note">
|
|
8782
9446
|
<p class="admonition-title">Note</p>
|
|
8783
9447
|
<p>For added tab views, we recommend for consistency that you follow the URL pattern established by the base model detail view and tabs (if any). For example, <code>nautobot/dcim/urls.py</code> references Device tab views with the URL pattern <code>devices/<uuid:pk>/TAB-NAME/</code>, so above we have followed that same pattern.</p>
|
|
8784
9448
|
</div>
|
|
8785
|
-
<h2 id="example-adding-object-details-and-tabs">Example Adding Object Details and Tabs<a class="headerlink" href="#example-adding-object-details-and-tabs" title="Permanent link">¶</a></h2>
|
|
8786
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1"># template_content.py</span>
|
|
8787
|
-
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">reverse</span>
|
|
8788
|
-
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">TemplateExtension</span>
|
|
8789
|
-
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>
|
|
8790
|
-
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="kn">from</span> <span class="nn">.models</span> <span class="kn">import</span> <span class="n">Animal</span>
|
|
8791
|
-
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a>
|
|
8792
|
-
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>
|
|
8793
|
-
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="k">class</span> <span class="nc">LocationAnimalCount</span><span class="p">(</span><span class="n">TemplateExtension</span><span class="p">):</span>
|
|
8794
|
-
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="w"> </span><span class="sd">"""Template extension to display animal count on the right side of the page."""</span>
|
|
8795
|
-
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a>
|
|
8796
|
-
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a> <span class="n">model</span> <span class="o">=</span> <span class="s1">'dcim.location'</span>
|
|
8797
|
-
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a>
|
|
8798
|
-
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> <span class="k">def</span> <span class="nf">right_page</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
8799
|
-
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">'nautobot_animal_sounds/inc/animal_count.html'</span><span class="p">,</span> <span class="n">extra_context</span><span class="o">=</span><span class="p">{</span>
|
|
8800
|
-
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a> <span class="s1">'animal_count'</span><span class="p">:</span> <span class="n">Animal</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">count</span><span class="p">(),</span>
|
|
8801
|
-
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a> <span class="p">})</span>
|
|
8802
|
-
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a>
|
|
8803
|
-
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a>
|
|
8804
|
-
<a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a><span class="k">class</span> <span class="nc">DeviceExtraTabs</span><span class="p">(</span><span class="n">TemplateExtension</span><span class="p">):</span>
|
|
8805
|
-
<a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a><span class="w"> </span><span class="sd">"""Template extension to add extra tabs to the object detail tabs."""</span>
|
|
8806
|
-
<a id="__codelineno-4-21" name="__codelineno-4-21" href="#__codelineno-4-21"></a>
|
|
8807
|
-
<a id="__codelineno-4-22" name="__codelineno-4-22" href="#__codelineno-4-22"></a> <span class="n">model</span> <span class="o">=</span> <span class="s1">'dcim.device'</span>
|
|
8808
|
-
<a id="__codelineno-4-23" name="__codelineno-4-23" href="#__codelineno-4-23"></a>
|
|
8809
|
-
<a id="__codelineno-4-24" name="__codelineno-4-24" href="#__codelineno-4-24"></a> <span class="k">def</span> <span class="nf">detail_tabs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
8810
|
-
<a id="__codelineno-4-25" name="__codelineno-4-25" href="#__codelineno-4-25"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8811
|
-
<a id="__codelineno-4-26" name="__codelineno-4-26" href="#__codelineno-4-26"></a><span class="sd"> You may define extra tabs to render on a model's detail page by utilizing this method.</span>
|
|
8812
|
-
<a id="__codelineno-4-27" name="__codelineno-4-27" href="#__codelineno-4-27"></a><span class="sd"> Each tab is defined as a dict in a list of dicts.</span>
|
|
8813
|
-
<a id="__codelineno-4-28" name="__codelineno-4-28" href="#__codelineno-4-28"></a>
|
|
8814
|
-
<a id="__codelineno-4-29" name="__codelineno-4-29" href="#__codelineno-4-29"></a><span class="sd"> For each of the tabs defined:</span>
|
|
8815
|
-
<a id="__codelineno-4-30" name="__codelineno-4-30" href="#__codelineno-4-30"></a><span class="sd"> - The <title> key's value will become the tab link's title.</span>
|
|
8816
|
-
<a id="__codelineno-4-31" name="__codelineno-4-31" href="#__codelineno-4-31"></a><span class="sd"> - The <url> key's value is used to render the HTML link for the tab</span>
|
|
8817
|
-
<a id="__codelineno-4-32" name="__codelineno-4-32" href="#__codelineno-4-32"></a>
|
|
8818
|
-
<a id="__codelineno-4-33" name="__codelineno-4-33" href="#__codelineno-4-33"></a><span class="sd"> These tabs will be visible (in this instance) on the Device model's detail page as</span>
|
|
8819
|
-
<a id="__codelineno-4-34" name="__codelineno-4-34" href="#__codelineno-4-34"></a><span class="sd"> set by the DeviceContent.model attribute "dcim.device"</span>
|
|
8820
|
-
<a id="__codelineno-4-35" name="__codelineno-4-35" href="#__codelineno-4-35"></a>
|
|
8821
|
-
<a id="__codelineno-4-36" name="__codelineno-4-36" href="#__codelineno-4-36"></a><span class="sd"> This example demonstrates defining two tabs. The tabs will be ordered by their position in list.</span>
|
|
8822
|
-
<a id="__codelineno-4-37" name="__codelineno-4-37" href="#__codelineno-4-37"></a><span class="sd"> """</span>
|
|
8823
|
-
<a id="__codelineno-4-38" name="__codelineno-4-38" href="#__codelineno-4-38"></a> <span class="k">return</span> <span class="p">[</span>
|
|
8824
|
-
<a id="__codelineno-4-39" name="__codelineno-4-39" href="#__codelineno-4-39"></a> <span class="p">{</span>
|
|
8825
|
-
<a id="__codelineno-4-40" name="__codelineno-4-40" href="#__codelineno-4-40"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="s2">"App Tab 1"</span><span class="p">,</span>
|
|
8826
|
-
<a id="__codelineno-4-41" name="__codelineno-4-41" href="#__codelineno-4-41"></a> <span class="s2">"url"</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s2">"plugins:example_app:device_detail_tab_1"</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"pk"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="p">[</span><span class="s2">"object"</span><span class="p">]</span><span class="o">.</span><span class="n">pk</span><span class="p">}),</span>
|
|
8827
|
-
<a id="__codelineno-4-42" name="__codelineno-4-42" href="#__codelineno-4-42"></a> <span class="p">},</span>
|
|
8828
|
-
<a id="__codelineno-4-43" name="__codelineno-4-43" href="#__codelineno-4-43"></a> <span class="p">{</span>
|
|
8829
|
-
<a id="__codelineno-4-44" name="__codelineno-4-44" href="#__codelineno-4-44"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="s2">"App Tab 2"</span><span class="p">,</span>
|
|
8830
|
-
<a id="__codelineno-4-45" name="__codelineno-4-45" href="#__codelineno-4-45"></a> <span class="s2">"url"</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s2">"plugins:example_app:device_detail_tab_2"</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"pk"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="p">[</span><span class="s2">"object"</span><span class="p">]</span><span class="o">.</span><span class="n">pk</span><span class="p">}),</span>
|
|
8831
|
-
<a id="__codelineno-4-46" name="__codelineno-4-46" href="#__codelineno-4-46"></a> <span class="p">},</span>
|
|
8832
|
-
<a id="__codelineno-4-47" name="__codelineno-4-47" href="#__codelineno-4-47"></a> <span class="p">]</span>
|
|
8833
|
-
<a id="__codelineno-4-48" name="__codelineno-4-48" href="#__codelineno-4-48"></a>
|
|
8834
|
-
<a id="__codelineno-4-49" name="__codelineno-4-49" href="#__codelineno-4-49"></a><span class="n">template_extensions</span> <span class="o">=</span> <span class="p">[</span><span class="n">DeviceExtraTabs</span><span class="p">,</span> <span class="n">LocationAnimalCount</span><span class="p">]</span>
|
|
8835
|
-
</code></pre></div>
|
|
8836
9449
|
|
|
8837
9450
|
|
|
8838
9451
|
|
|
@@ -8976,10 +9589,10 @@
|
|
|
8976
9589
|
</div>
|
|
8977
9590
|
|
|
8978
9591
|
|
|
8979
|
-
<script id="__config" type="application/json">{"base": "../../../..", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
9592
|
+
<script id="__config" type="application/json">{"base": "../../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
8980
9593
|
|
|
8981
9594
|
|
|
8982
|
-
<script src="../../../../assets/javascripts/bundle.
|
|
9595
|
+
<script src="../../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
|
|
8983
9596
|
|
|
8984
9597
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
8985
9598
|
|