nautobot 2.4.13__py3-none-any.whl → 2.4.15__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/apps/choices.py +8 -0
- nautobot/apps/ui.py +14 -0
- nautobot/core/api/views.py +2 -0
- nautobot/core/choices.py +4 -0
- nautobot/core/filters.py +21 -41
- nautobot/core/graphql/generators.py +8 -0
- nautobot/core/graphql/schema.py +30 -30
- nautobot/core/management/commands/check_job_approval_status.py +47 -0
- nautobot/core/management/commands/generate_test_data.py +1 -1
- nautobot/core/management/commands/migrate.py +90 -1
- nautobot/core/models/tree_queries.py +17 -0
- nautobot/core/settings.py +2 -2
- nautobot/core/settings.yaml +3 -3
- nautobot/core/tables.py +29 -6
- nautobot/core/templates/base_django.html +1 -1
- nautobot/core/templates/components/panel/header_extra_content_table.html +1 -1
- nautobot/core/templates/generic/object_list.html +17 -20
- nautobot/core/templates/inc/breadcrumbs.html +14 -0
- nautobot/core/templatetags/buttons.py +2 -4
- nautobot/core/templatetags/helpers.py +29 -6
- nautobot/core/templatetags/ui_framework.py +21 -0
- nautobot/core/testing/api.py +7 -0
- nautobot/core/testing/filters.py +20 -3
- nautobot/core/testing/forms.py +1 -1
- nautobot/core/tests/integration/test_filters.py +2 -2
- nautobot/core/tests/test_breadcrumbs.py +366 -0
- nautobot/core/tests/test_commands.py +40 -0
- nautobot/core/tests/test_filters.py +51 -1
- nautobot/core/tests/test_forms.py +1 -1
- nautobot/core/tests/test_graphql.py +4 -4
- nautobot/core/tests/test_titles.py +183 -0
- nautobot/core/tests/test_tree_queries.py +30 -0
- nautobot/core/tests/test_views.py +2 -2
- nautobot/core/tests/test_views_utils.py +1 -1
- nautobot/core/ui/breadcrumbs.py +538 -0
- nautobot/core/ui/bulk_buttons.py +53 -0
- nautobot/core/ui/object_detail.py +31 -8
- nautobot/core/ui/titles.py +127 -0
- nautobot/core/ui/utils.py +25 -0
- nautobot/core/utils/migrations.py +1 -1
- nautobot/core/views/__init__.py +1 -1
- nautobot/core/views/mixins.py +26 -1
- nautobot/core/views/renderers.py +20 -2
- nautobot/core/views/utils.py +14 -13
- nautobot/dcim/api/serializers.py +9 -0
- nautobot/dcim/choices.py +55 -0
- nautobot/dcim/constants.py +0 -16
- nautobot/dcim/factory.py +1 -1
- nautobot/dcim/filters/__init__.py +15 -3
- nautobot/dcim/forms.py +120 -7
- nautobot/dcim/management/commands/trace_paths.py +1 -1
- nautobot/dcim/migrations/0072_alter_powerfeed_options_and_more.py +97 -0
- nautobot/dcim/models/device_component_templates.py +8 -0
- nautobot/dcim/models/device_components.py +31 -12
- nautobot/dcim/models/devices.py +1 -1
- nautobot/dcim/models/power.py +171 -10
- nautobot/dcim/models/racks.py +7 -4
- nautobot/dcim/tables/devices.py +2 -0
- nautobot/dcim/tables/devicetypes.py +1 -0
- nautobot/dcim/tables/power.py +30 -2
- nautobot/dcim/templates/dcim/device.html +2 -2
- nautobot/dcim/templates/dcim/devicetype_retrieve.html +1 -214
- nautobot/dcim/templates/dcim/location_retrieve.html +2 -2
- nautobot/dcim/templates/dcim/powerfeed_edit.html +8 -0
- nautobot/dcim/templates/dcim/powerfeed_retrieve.html +1 -1
- nautobot/dcim/templates/dcim/rack.html +2 -318
- nautobot/dcim/templates/dcim/rack_edit.html +2 -47
- nautobot/dcim/templates/dcim/rack_retrieve.html +318 -0
- nautobot/dcim/templates/dcim/rack_update.html +47 -0
- nautobot/dcim/tests/integration/test_device_bulk_operations.py +61 -0
- nautobot/dcim/tests/test_api.py +24 -4
- nautobot/dcim/tests/test_filters.py +91 -13
- nautobot/dcim/tests/test_models.py +262 -0
- nautobot/dcim/tests/test_views.py +20 -12
- nautobot/dcim/urls.py +2 -27
- nautobot/dcim/utils.py +13 -30
- nautobot/dcim/views.py +428 -146
- nautobot/extras/choices.py +12 -4
- nautobot/extras/factory.py +19 -20
- nautobot/extras/filters/__init__.py +3 -2
- nautobot/extras/filters/mixins.py +23 -7
- nautobot/extras/forms/__init__.py +2 -1
- nautobot/extras/forms/forms.py +71 -0
- nautobot/extras/forms/mixins.py +4 -2
- nautobot/extras/managers.py +4 -1
- nautobot/extras/migrations/0062_collect_roles_from_related_apps_roles.py +30 -7
- nautobot/extras/migrations/0124_add_joblogentry_index.py +16 -0
- nautobot/extras/migrations/0125_jobresult_date_started.py +18 -0
- nautobot/extras/models/customfields.py +53 -5
- nautobot/extras/models/datasources.py +1 -2
- nautobot/extras/models/jobs.py +13 -3
- nautobot/extras/models/relationships.py +55 -6
- nautobot/extras/plugins/views.py +24 -1
- nautobot/extras/secrets/__init__.py +1 -1
- nautobot/extras/tables.py +9 -0
- nautobot/extras/templates/extras/customfield.html +2 -129
- nautobot/extras/templates/extras/customfield_edit.html +2 -108
- nautobot/extras/templates/extras/customfield_retrieve.html +129 -0
- nautobot/extras/templates/extras/customfield_update.html +108 -0
- nautobot/extras/templates/extras/graphqlquery.html +2 -97
- nautobot/extras/templates/extras/graphqlquery_list.html +1 -0
- nautobot/extras/templates/extras/graphqlquery_retrieve.html +97 -0
- nautobot/extras/templates/extras/inc/jobresult.html +7 -3
- nautobot/extras/templates/extras/jobresult.html +2 -155
- nautobot/extras/templates/extras/jobresult_retrieve.html +155 -0
- nautobot/extras/templates/extras/marketplace.html +5 -6
- nautobot/extras/templates/extras/note.html +2 -53
- nautobot/extras/templates/extras/note_retrieve.html +53 -0
- nautobot/extras/templates/extras/plugins_list.html +5 -6
- nautobot/extras/templates/extras/secretsgroup.html +2 -29
- nautobot/extras/templates/extras/secretsgroup_edit.html +2 -82
- nautobot/extras/templates/extras/secretsgroup_retrieve.html +29 -0
- nautobot/extras/templates/extras/secretsgroup_update.html +82 -0
- nautobot/extras/templatetags/custom_links.py +2 -2
- nautobot/extras/templatetags/job_buttons.py +1 -1
- nautobot/extras/templatetags/plugins.py +1 -1
- nautobot/extras/tests/integration/test_computedfields.py +2 -2
- nautobot/extras/tests/integration/test_customfields.py +14 -11
- nautobot/extras/tests/integration/test_dynamicgroups.py +1 -1
- nautobot/extras/tests/integration/test_notes.py +1 -1
- nautobot/extras/tests/integration/test_plugins.py +6 -6
- nautobot/extras/tests/integration/test_relationships.py +2 -2
- nautobot/extras/tests/test_customfields.py +115 -7
- nautobot/extras/tests/test_filters.py +9 -0
- nautobot/extras/tests/test_forms.py +2 -2
- nautobot/extras/tests/test_plugins.py +2 -3
- nautobot/extras/tests/test_relationships.py +14 -8
- nautobot/extras/tests/test_views.py +285 -2
- nautobot/extras/urls.py +5 -110
- nautobot/extras/utils.py +5 -2
- nautobot/extras/views.py +116 -311
- nautobot/ipam/api/views.py +69 -6
- nautobot/ipam/tables.py +8 -15
- nautobot/ipam/tests/migration/test_migrations.py +8 -8
- nautobot/ipam/tests/test_api.py +352 -2
- nautobot/ipam/tests/test_models.py +1 -1
- nautobot/project-static/docs/404.html +34 -34
- nautobot/project-static/docs/apps/index.html +34 -34
- nautobot/project-static/docs/apps/nautobot-apps.html +34 -34
- nautobot/project-static/docs/assets/_mkdocstrings.css +44 -6
- nautobot/project-static/docs/assets/javascripts/{bundle.56ea9cef.min.js → bundle.50899def.min.js} +2 -2
- nautobot/project-static/docs/assets/javascripts/{bundle.56ea9cef.min.js.map → bundle.50899def.min.js.map} +2 -2
- nautobot/project-static/docs/assets/stylesheets/{main.342714a4.min.css → main.7e37652d.min.css} +1 -1
- nautobot/project-static/docs/assets/stylesheets/{main.342714a4.min.css.map → main.7e37652d.min.css.map} +1 -1
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +39 -34
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +36 -34
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +139 -54
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +48 -38
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +50 -40
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +36 -34
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +35 -34
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +43 -39
- nautobot/project-static/docs/code-reference/nautobot/apps/events.html +52 -42
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +50 -41
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +54 -44
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +85 -93
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +154 -62
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +54 -46
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +146 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +240 -70
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +38 -35
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +41 -35
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +173 -52
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +269 -85
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +5987 -2643
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +36 -34
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +165 -89
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +161 -69
- nautobot/project-static/docs/development/apps/api/configuration-view.html +34 -34
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +34 -34
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +34 -34
- nautobot/project-static/docs/development/apps/api/models/global-search.html +34 -34
- nautobot/project-static/docs/development/apps/api/models/graphql.html +34 -34
- nautobot/project-static/docs/development/apps/api/models/index.html +34 -34
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +34 -34
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +34 -34
- nautobot/project-static/docs/development/apps/api/prometheus.html +34 -34
- nautobot/project-static/docs/development/apps/api/setup.html +34 -34
- nautobot/project-static/docs/development/apps/api/testing.html +34 -34
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +34 -34
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +34 -34
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +34 -34
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +34 -34
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/base-template.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/index.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +42 -36
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/notes.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +34 -34
- nautobot/project-static/docs/development/apps/api/views/urls.html +34 -34
- nautobot/project-static/docs/development/apps/index.html +34 -34
- nautobot/project-static/docs/development/apps/migration/code-updates.html +34 -34
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +34 -34
- nautobot/project-static/docs/development/apps/migration/from-v1.html +34 -34
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +34 -34
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +34 -34
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +34 -34
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +34 -34
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +37 -37
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/breadcrumbs-titles.html +10544 -0
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +34 -34
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +34 -34
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +34 -34
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +37 -37
- nautobot/project-static/docs/development/core/application-registry.html +162 -133
- nautobot/project-static/docs/development/core/best-practices.html +34 -34
- nautobot/project-static/docs/development/core/bootstrap-ui.html +34 -34
- nautobot/project-static/docs/development/core/caching.html +34 -34
- nautobot/project-static/docs/development/core/controllers.html +34 -34
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +34 -34
- nautobot/project-static/docs/development/core/generic-views.html +34 -34
- nautobot/project-static/docs/development/core/getting-started.html +34 -34
- nautobot/project-static/docs/development/core/homepage.html +34 -34
- nautobot/project-static/docs/development/core/index.html +34 -34
- nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +34 -34
- nautobot/project-static/docs/development/core/model-checklist.html +34 -34
- nautobot/project-static/docs/development/core/model-features.html +34 -34
- nautobot/project-static/docs/development/core/natural-keys.html +34 -34
- nautobot/project-static/docs/development/core/navigation-menu.html +34 -34
- nautobot/project-static/docs/development/core/release-checklist.html +34 -34
- nautobot/project-static/docs/development/core/role-internals.html +34 -34
- nautobot/project-static/docs/development/core/settings.html +34 -34
- nautobot/project-static/docs/development/core/style-guide.html +34 -34
- nautobot/project-static/docs/development/core/templates.html +34 -34
- nautobot/project-static/docs/development/core/testing.html +34 -34
- nautobot/project-static/docs/development/core/ui-component-framework.html +724 -289
- nautobot/project-static/docs/development/core/user-preferences.html +34 -34
- nautobot/project-static/docs/development/index.html +34 -34
- nautobot/project-static/docs/development/jobs/getting-started.html +34 -34
- nautobot/project-static/docs/development/jobs/index.html +34 -34
- nautobot/project-static/docs/development/jobs/installation.html +34 -34
- nautobot/project-static/docs/development/jobs/job-extensions.html +34 -34
- nautobot/project-static/docs/development/jobs/job-logging.html +34 -34
- nautobot/project-static/docs/development/jobs/job-patterns.html +34 -34
- nautobot/project-static/docs/development/jobs/job-structure.html +34 -34
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +34 -34
- nautobot/project-static/docs/development/jobs/testing.html +34 -34
- nautobot/project-static/docs/index.html +34 -34
- nautobot/project-static/docs/media/development/core/ui-component-framework/breadcrumbs-titles-data-flow.png +0 -0
- nautobot/project-static/docs/media/power_distribution.png +0 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +34 -34
- nautobot/project-static/docs/overview/design_philosophy.html +34 -34
- nautobot/project-static/docs/release-notes/index.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.0.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.1.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.2.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.3.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.4.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.5.html +34 -34
- nautobot/project-static/docs/release-notes/version-1.6.html +34 -34
- nautobot/project-static/docs/release-notes/version-2.0.html +34 -34
- nautobot/project-static/docs/release-notes/version-2.1.html +34 -34
- nautobot/project-static/docs/release-notes/version-2.2.html +34 -34
- nautobot/project-static/docs/release-notes/version-2.3.html +34 -34
- nautobot/project-static/docs/release-notes/version-2.4.html +402 -34
- nautobot/project-static/docs/requirements.txt +3 -3
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +303 -299
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +34 -34
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +34 -34
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +34 -34
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +34 -34
- nautobot/project-static/docs/user-guide/administration/configuration/redis.html +34 -34
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +37 -37
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/docker.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +34 -34
- nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/index.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +34 -34
- nautobot/project-static/docs/user-guide/administration/installation/services.html +34 -34
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +34 -34
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +34 -34
- nautobot/project-static/docs/user-guide/administration/security/index.html +34 -34
- nautobot/project-static/docs/user-guide/administration/security/notices.html +34 -34
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +296 -251
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +34 -34
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +37 -37
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +42 -52
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +37 -37
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +316 -39
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +35 -35
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +147 -37
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +52 -35
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +51 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +34 -34
- nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +34 -34
- nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +34 -34
- nautobot/project-static/docs/user-guide/index.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/events.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +35 -35
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +34 -34
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +34 -34
- nautobot/tenancy/api/views.py +2 -1
- nautobot/users/tests/test_api.py +2 -2
- nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -252
- nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -75
- nautobot/virtualization/templates/virtualization/virtualmachine_retrieve.html +252 -0
- nautobot/virtualization/templates/virtualization/virtualmachine_update.html +75 -0
- nautobot/virtualization/urls.py +3 -61
- nautobot/virtualization/views.py +48 -72
- {nautobot-2.4.13.dist-info → nautobot-2.4.15.dist-info}/METADATA +27 -27
- {nautobot-2.4.13.dist-info → nautobot-2.4.15.dist-info}/RECORD +463 -439
- {nautobot-2.4.13.dist-info → nautobot-2.4.15.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.4.13.dist-info → nautobot-2.4.15.dist-info}/NOTICE +0 -0
- {nautobot-2.4.13.dist-info → nautobot-2.4.15.dist-info}/WHEEL +0 -0
- {nautobot-2.4.13.dist-info → nautobot-2.4.15.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.6.
|
|
21
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
<link rel="stylesheet" href="../../assets/stylesheets/main.
|
|
29
|
+
<link rel="stylesheet" href="../../assets/stylesheets/main.7e37652d.min.css">
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
<style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%
|
|
41
|
+
<style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.0.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M288%200H128c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032v151.5L7.5%20426.3C2.6%20435%200%20444.7%200%20454.7%200%20486.4%2025.6%20512%2057.3%20512h333.4c31.6%200%2057.3-25.6%2057.3-57.3%200-10-2.6-19.8-7.5-28.4L320%20215.5V64c17.7%200%2032-14.3%2032-32S337.7%200%20320%200zm-96%20215.5V64h64v151.5c0%2011.1%202.9%2022.1%208.4%2031.8L306%20320H142l41.6-72.7c5.5-9.7%208.4-20.6%208.4-31.8%22/%3E%3C/svg%3E');}</style>
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
221
221
|
<div class="md-source__icon md-icon">
|
|
222
222
|
|
|
223
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free
|
|
223
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
|
|
224
224
|
</div>
|
|
225
225
|
<div class="md-source__repository">
|
|
226
226
|
GitHub
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
393
393
|
<div class="md-source__icon md-icon">
|
|
394
394
|
|
|
395
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free
|
|
395
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
|
|
396
396
|
</div>
|
|
397
397
|
<div class="md-source__repository">
|
|
398
398
|
GitHub
|
|
@@ -4004,29 +4004,6 @@
|
|
|
4004
4004
|
|
|
4005
4005
|
|
|
4006
4006
|
|
|
4007
|
-
<li class="md-nav__item">
|
|
4008
|
-
<a href="../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
<span class="md-ellipsis">
|
|
4013
|
-
Inventory Item
|
|
4014
|
-
|
|
4015
|
-
</span>
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
</a>
|
|
4019
|
-
</li>
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
4007
|
<li class="md-nav__item">
|
|
4031
4008
|
<a href="../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
|
|
4032
4009
|
|
|
@@ -8696,6 +8673,29 @@
|
|
|
8696
8673
|
|
|
8697
8674
|
|
|
8698
8675
|
|
|
8676
|
+
|
|
8677
|
+
|
|
8678
|
+
|
|
8679
|
+
|
|
8680
|
+
|
|
8681
|
+
|
|
8682
|
+
<li class="md-nav__item">
|
|
8683
|
+
<a href="../apps/migration/ui-component-framework/breadcrumbs-titles.html" class="md-nav__link">
|
|
8684
|
+
|
|
8685
|
+
|
|
8686
|
+
|
|
8687
|
+
<span class="md-ellipsis">
|
|
8688
|
+
Breadcrumbs and titles
|
|
8689
|
+
|
|
8690
|
+
</span>
|
|
8691
|
+
|
|
8692
|
+
|
|
8693
|
+
</a>
|
|
8694
|
+
</li>
|
|
8695
|
+
|
|
8696
|
+
|
|
8697
|
+
|
|
8698
|
+
|
|
8699
8699
|
</ul>
|
|
8700
8700
|
</nav>
|
|
8701
8701
|
|
|
@@ -9474,11 +9474,29 @@
|
|
|
9474
9474
|
</ul>
|
|
9475
9475
|
</nav>
|
|
9476
9476
|
|
|
9477
|
+
</li>
|
|
9478
|
+
|
|
9479
|
+
<li class="md-nav__item">
|
|
9480
|
+
<a href="#page-headings-and-document-titles" class="md-nav__link">
|
|
9481
|
+
<span class="md-ellipsis">
|
|
9482
|
+
Page headings and document titles
|
|
9483
|
+
</span>
|
|
9484
|
+
</a>
|
|
9485
|
+
|
|
9477
9486
|
</li>
|
|
9478
9487
|
|
|
9479
9488
|
</ul>
|
|
9480
9489
|
</nav>
|
|
9481
9490
|
|
|
9491
|
+
</li>
|
|
9492
|
+
|
|
9493
|
+
<li class="md-nav__item">
|
|
9494
|
+
<a href="#breadcrumbs-component" class="md-nav__link">
|
|
9495
|
+
<span class="md-ellipsis">
|
|
9496
|
+
Breadcrumbs Component
|
|
9497
|
+
</span>
|
|
9498
|
+
</a>
|
|
9499
|
+
|
|
9482
9500
|
</li>
|
|
9483
9501
|
|
|
9484
9502
|
<li class="md-nav__item">
|
|
@@ -9833,6 +9851,96 @@
|
|
|
9833
9851
|
</ul>
|
|
9834
9852
|
</nav>
|
|
9835
9853
|
|
|
9854
|
+
</li>
|
|
9855
|
+
|
|
9856
|
+
<li class="md-nav__item">
|
|
9857
|
+
<a href="#breadcrumbs-and-titles-overview" class="md-nav__link">
|
|
9858
|
+
<span class="md-ellipsis">
|
|
9859
|
+
Breadcrumbs and titles overview
|
|
9860
|
+
</span>
|
|
9861
|
+
</a>
|
|
9862
|
+
|
|
9863
|
+
<nav class="md-nav" aria-label="Breadcrumbs and titles overview">
|
|
9864
|
+
<ul class="md-nav__list">
|
|
9865
|
+
|
|
9866
|
+
<li class="md-nav__item">
|
|
9867
|
+
<a href="#breadcrumbitem-configuration" class="md-nav__link">
|
|
9868
|
+
<span class="md-ellipsis">
|
|
9869
|
+
BreadcrumbItem Configuration
|
|
9870
|
+
</span>
|
|
9871
|
+
</a>
|
|
9872
|
+
|
|
9873
|
+
<nav class="md-nav" aria-label="BreadcrumbItem Configuration">
|
|
9874
|
+
<ul class="md-nav__list">
|
|
9875
|
+
|
|
9876
|
+
<li class="md-nav__item">
|
|
9877
|
+
<a href="#viewnamebreadcrumbitem-class" class="md-nav__link">
|
|
9878
|
+
<span class="md-ellipsis">
|
|
9879
|
+
ViewNameBreadcrumbItem Class
|
|
9880
|
+
</span>
|
|
9881
|
+
</a>
|
|
9882
|
+
|
|
9883
|
+
</li>
|
|
9884
|
+
|
|
9885
|
+
<li class="md-nav__item">
|
|
9886
|
+
<a href="#modelbreadcrumbitem-class" class="md-nav__link">
|
|
9887
|
+
<span class="md-ellipsis">
|
|
9888
|
+
ModelBreadcrumbItem Class
|
|
9889
|
+
</span>
|
|
9890
|
+
</a>
|
|
9891
|
+
|
|
9892
|
+
</li>
|
|
9893
|
+
|
|
9894
|
+
<li class="md-nav__item">
|
|
9895
|
+
<a href="#instancebreadcrumbitem-class" class="md-nav__link">
|
|
9896
|
+
<span class="md-ellipsis">
|
|
9897
|
+
InstanceBreadcrumbItem Class
|
|
9898
|
+
</span>
|
|
9899
|
+
</a>
|
|
9900
|
+
|
|
9901
|
+
</li>
|
|
9902
|
+
|
|
9903
|
+
</ul>
|
|
9904
|
+
</nav>
|
|
9905
|
+
|
|
9906
|
+
</li>
|
|
9907
|
+
|
|
9908
|
+
<li class="md-nav__item">
|
|
9909
|
+
<a href="#customizing-breadcrumbs" class="md-nav__link">
|
|
9910
|
+
<span class="md-ellipsis">
|
|
9911
|
+
Customizing Breadcrumbs
|
|
9912
|
+
</span>
|
|
9913
|
+
</a>
|
|
9914
|
+
|
|
9915
|
+
<nav class="md-nav" aria-label="Customizing Breadcrumbs">
|
|
9916
|
+
<ul class="md-nav__list">
|
|
9917
|
+
|
|
9918
|
+
<li class="md-nav__item">
|
|
9919
|
+
<a href="#example-1-simple-override" class="md-nav__link">
|
|
9920
|
+
<span class="md-ellipsis">
|
|
9921
|
+
Example 1: Simple Override
|
|
9922
|
+
</span>
|
|
9923
|
+
</a>
|
|
9924
|
+
|
|
9925
|
+
</li>
|
|
9926
|
+
|
|
9927
|
+
<li class="md-nav__item">
|
|
9928
|
+
<a href="#example-2-complex-navigation" class="md-nav__link">
|
|
9929
|
+
<span class="md-ellipsis">
|
|
9930
|
+
Example 2: Complex Navigation
|
|
9931
|
+
</span>
|
|
9932
|
+
</a>
|
|
9933
|
+
|
|
9934
|
+
</li>
|
|
9935
|
+
|
|
9936
|
+
</ul>
|
|
9937
|
+
</nav>
|
|
9938
|
+
|
|
9939
|
+
</li>
|
|
9940
|
+
|
|
9941
|
+
</ul>
|
|
9942
|
+
</nav>
|
|
9943
|
+
|
|
9836
9944
|
</li>
|
|
9837
9945
|
|
|
9838
9946
|
<li class="md-nav__item">
|
|
@@ -10828,11 +10936,29 @@
|
|
|
10828
10936
|
</ul>
|
|
10829
10937
|
</nav>
|
|
10830
10938
|
|
|
10939
|
+
</li>
|
|
10940
|
+
|
|
10941
|
+
<li class="md-nav__item">
|
|
10942
|
+
<a href="#page-headings-and-document-titles" class="md-nav__link">
|
|
10943
|
+
<span class="md-ellipsis">
|
|
10944
|
+
Page headings and document titles
|
|
10945
|
+
</span>
|
|
10946
|
+
</a>
|
|
10947
|
+
|
|
10831
10948
|
</li>
|
|
10832
10949
|
|
|
10833
10950
|
</ul>
|
|
10834
10951
|
</nav>
|
|
10835
10952
|
|
|
10953
|
+
</li>
|
|
10954
|
+
|
|
10955
|
+
<li class="md-nav__item">
|
|
10956
|
+
<a href="#breadcrumbs-component" class="md-nav__link">
|
|
10957
|
+
<span class="md-ellipsis">
|
|
10958
|
+
Breadcrumbs Component
|
|
10959
|
+
</span>
|
|
10960
|
+
</a>
|
|
10961
|
+
|
|
10836
10962
|
</li>
|
|
10837
10963
|
|
|
10838
10964
|
<li class="md-nav__item">
|
|
@@ -11187,6 +11313,96 @@
|
|
|
11187
11313
|
</ul>
|
|
11188
11314
|
</nav>
|
|
11189
11315
|
|
|
11316
|
+
</li>
|
|
11317
|
+
|
|
11318
|
+
<li class="md-nav__item">
|
|
11319
|
+
<a href="#breadcrumbs-and-titles-overview" class="md-nav__link">
|
|
11320
|
+
<span class="md-ellipsis">
|
|
11321
|
+
Breadcrumbs and titles overview
|
|
11322
|
+
</span>
|
|
11323
|
+
</a>
|
|
11324
|
+
|
|
11325
|
+
<nav class="md-nav" aria-label="Breadcrumbs and titles overview">
|
|
11326
|
+
<ul class="md-nav__list">
|
|
11327
|
+
|
|
11328
|
+
<li class="md-nav__item">
|
|
11329
|
+
<a href="#breadcrumbitem-configuration" class="md-nav__link">
|
|
11330
|
+
<span class="md-ellipsis">
|
|
11331
|
+
BreadcrumbItem Configuration
|
|
11332
|
+
</span>
|
|
11333
|
+
</a>
|
|
11334
|
+
|
|
11335
|
+
<nav class="md-nav" aria-label="BreadcrumbItem Configuration">
|
|
11336
|
+
<ul class="md-nav__list">
|
|
11337
|
+
|
|
11338
|
+
<li class="md-nav__item">
|
|
11339
|
+
<a href="#viewnamebreadcrumbitem-class" class="md-nav__link">
|
|
11340
|
+
<span class="md-ellipsis">
|
|
11341
|
+
ViewNameBreadcrumbItem Class
|
|
11342
|
+
</span>
|
|
11343
|
+
</a>
|
|
11344
|
+
|
|
11345
|
+
</li>
|
|
11346
|
+
|
|
11347
|
+
<li class="md-nav__item">
|
|
11348
|
+
<a href="#modelbreadcrumbitem-class" class="md-nav__link">
|
|
11349
|
+
<span class="md-ellipsis">
|
|
11350
|
+
ModelBreadcrumbItem Class
|
|
11351
|
+
</span>
|
|
11352
|
+
</a>
|
|
11353
|
+
|
|
11354
|
+
</li>
|
|
11355
|
+
|
|
11356
|
+
<li class="md-nav__item">
|
|
11357
|
+
<a href="#instancebreadcrumbitem-class" class="md-nav__link">
|
|
11358
|
+
<span class="md-ellipsis">
|
|
11359
|
+
InstanceBreadcrumbItem Class
|
|
11360
|
+
</span>
|
|
11361
|
+
</a>
|
|
11362
|
+
|
|
11363
|
+
</li>
|
|
11364
|
+
|
|
11365
|
+
</ul>
|
|
11366
|
+
</nav>
|
|
11367
|
+
|
|
11368
|
+
</li>
|
|
11369
|
+
|
|
11370
|
+
<li class="md-nav__item">
|
|
11371
|
+
<a href="#customizing-breadcrumbs" class="md-nav__link">
|
|
11372
|
+
<span class="md-ellipsis">
|
|
11373
|
+
Customizing Breadcrumbs
|
|
11374
|
+
</span>
|
|
11375
|
+
</a>
|
|
11376
|
+
|
|
11377
|
+
<nav class="md-nav" aria-label="Customizing Breadcrumbs">
|
|
11378
|
+
<ul class="md-nav__list">
|
|
11379
|
+
|
|
11380
|
+
<li class="md-nav__item">
|
|
11381
|
+
<a href="#example-1-simple-override" class="md-nav__link">
|
|
11382
|
+
<span class="md-ellipsis">
|
|
11383
|
+
Example 1: Simple Override
|
|
11384
|
+
</span>
|
|
11385
|
+
</a>
|
|
11386
|
+
|
|
11387
|
+
</li>
|
|
11388
|
+
|
|
11389
|
+
<li class="md-nav__item">
|
|
11390
|
+
<a href="#example-2-complex-navigation" class="md-nav__link">
|
|
11391
|
+
<span class="md-ellipsis">
|
|
11392
|
+
Example 2: Complex Navigation
|
|
11393
|
+
</span>
|
|
11394
|
+
</a>
|
|
11395
|
+
|
|
11396
|
+
</li>
|
|
11397
|
+
|
|
11398
|
+
</ul>
|
|
11399
|
+
</nav>
|
|
11400
|
+
|
|
11401
|
+
</li>
|
|
11402
|
+
|
|
11403
|
+
</ul>
|
|
11404
|
+
</nav>
|
|
11405
|
+
|
|
11190
11406
|
</li>
|
|
11191
11407
|
|
|
11192
11408
|
<li class="md-nav__item">
|
|
@@ -11417,31 +11633,110 @@
|
|
|
11417
11633
|
<li><a class="glightbox" href="../../media/development/core/ui-component-framework/buttons-example.png" data-type="image" data-width="auto" data-height="auto" data-desc-position="bottom"><img alt="Buttons Example" class="on-glb" src="../../media/development/core/ui-component-framework/buttons-example.png" /></a></li>
|
|
11418
11634
|
</ul>
|
|
11419
11635
|
</div>
|
|
11636
|
+
<h3 id="page-headings-and-document-titles">Page headings and document titles<a class="headerlink" href="#page-headings-and-document-titles" title="Permanent link">¶</a></h3>
|
|
11637
|
+
<p>The Titles component provides a flexible system for generating page titles and headings based on the current view action and context.</p>
|
|
11638
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">Titles</span>
|
|
11639
|
+
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>
|
|
11640
|
+
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="c1"># Create a document title instance</span>
|
|
11641
|
+
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="n">titles</span> <span class="o">=</span> <span class="n">Titles</span><span class="p">(</span><span class="n">titles</span><span class="o">=</span><span class="p">{</span><span class="s2">"list"</span><span class="p">:</span> <span class="s2">"{{obj_type_plural}}"</span><span class="p">})</span>
|
|
11642
|
+
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>
|
|
11643
|
+
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="c1"># Render title for a list view</span>
|
|
11644
|
+
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span>
|
|
11645
|
+
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a> <span class="s1">'view_action'</span><span class="p">:</span> <span class="s1">'list'</span><span class="p">,</span>
|
|
11646
|
+
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a> <span class="s1">'obj_type_plural'</span><span class="p">:</span> <span class="s1">'devices'</span><span class="p">,</span>
|
|
11647
|
+
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a> <span class="s1">'view_titles'</span><span class="p">:</span> <span class="n">titles</span><span class="p">,</span>
|
|
11648
|
+
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="p">})</span>
|
|
11649
|
+
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a>
|
|
11650
|
+
<a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a><span class="n">title</span> <span class="o">=</span> <span class="n">titles</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> <span class="c1"># Returns: "Devices"</span>
|
|
11651
|
+
</code></pre></div>
|
|
11652
|
+
<p>In HTML there is available <code>render_title</code> helper that use the <code>Title</code> instance from <code>context['view_titles']</code> and properly renders the page heading and document title.</p>
|
|
11653
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>{% block content %}
|
|
11654
|
+
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a> <span class="p"><</span><span class="nt">h1</span><span class="p">></span>{% block title %}{% render_title %}{% endblock %}<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
|
|
11655
|
+
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>{% endblock %}
|
|
11656
|
+
</code></pre></div>
|
|
11657
|
+
<h2 id="breadcrumbs-component">Breadcrumbs Component<a class="headerlink" href="#breadcrumbs-component" title="Permanent link">¶</a></h2>
|
|
11658
|
+
<p>The Breadcrumbs component creates navigation trails that help users understand their location within the application hierarchy.</p>
|
|
11659
|
+
<p>There are 3 main breadcrumb items classes:
|
|
11660
|
+
- <code>ViewNameBreadcrumbItem</code> - Handles breadcrumbs that are generated from Django view names using URL reversing.
|
|
11661
|
+
- <code>ModelBreadcrumbItem</code> - Generates breadcrumbs from Django model metadata, automatically creating appropriate URLs and labels.
|
|
11662
|
+
- <code>InstanceBreadcrumbItem</code> - Creates detail breadcrumbs for specific object instances, generating URLs to the object's detail page.
|
|
11663
|
+
- <code>BaseBreadcrumbItem</code> - Can be used to create custom breadcrumb items or to show just empty "label" within the breadcrumbs path.</p>
|
|
11664
|
+
<p>By default, breadcrumbs class will add to the breadcrumbs path following items:
|
|
11665
|
+
- link to the <code>list_url</code> at the beginning
|
|
11666
|
+
- link to view the <code>object</code> details at the end</p>
|
|
11667
|
+
<div class="highlight"><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.ui</span> <span class="kn">import</span> <span class="n">Breadcrumbs</span><span class="p">,</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">,</span> <span class="n">ModelBreadcrumbItem</span><span class="p">,</span> <span class="n">InstanceBreadcrumbItem</span>
|
|
11668
|
+
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>
|
|
11669
|
+
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="c1"># Use default breadcrumbs</span>
|
|
11670
|
+
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="n">breadcrumbs</span> <span class="o">=</span> <span class="n">Breadcrumbs</span><span class="p">()</span>
|
|
11671
|
+
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>
|
|
11672
|
+
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="c1"># Render for a device detail view</span>
|
|
11673
|
+
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span>
|
|
11674
|
+
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="s1">'view_action'</span><span class="p">:</span> <span class="s1">'retrieve'</span><span class="p">,</span>
|
|
11675
|
+
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="s1">'detail'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="c1"># Indicates this is a detail view</span>
|
|
11676
|
+
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="s1">'object'</span><span class="p">:</span> <span class="n">device</span><span class="p">,</span>
|
|
11677
|
+
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="p">})</span>
|
|
11678
|
+
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="n">html</span> <span class="o">=</span> <span class="n">breadcrumbs</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
|
|
11679
|
+
</code></pre></div>
|
|
11680
|
+
<p>It will generate:</p>
|
|
11681
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="p"><</span><span class="nt">ol</span> <span class="na">class</span><span class="o">=</span><span class="s">"breadcrumb"</span><span class="p">></span>
|
|
11682
|
+
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a> <span class="p"><</span><span class="nt">li</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"/dcim/devices"</span><span class="p">></span>Devices<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">li</span><span class="p">></span>
|
|
11683
|
+
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a> <span class="p"><</span><span class="nt">li</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"/dcim/devices/<uuid>"</span><span class="p">></span>Device name<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">li</span><span class="p">></span>
|
|
11684
|
+
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="p"></</span><span class="nt">ol</span><span class="p">></span>
|
|
11685
|
+
</code></pre></div>
|
|
11686
|
+
<div class="admonition important">
|
|
11687
|
+
<p class="admonition-title">Important</p>
|
|
11688
|
+
<p>By adding custom items you're actually extending the default paths.</p>
|
|
11689
|
+
</div>
|
|
11690
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">Breadcrumbs</span><span class="p">,</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">,</span> <span class="n">ModelBreadcrumbItem</span><span class="p">,</span> <span class="n">InstanceBreadcrumbItem</span>
|
|
11691
|
+
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>
|
|
11692
|
+
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="c1"># Use default breadcrumbs</span>
|
|
11693
|
+
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="n">breadcrumbs</span> <span class="o">=</span> <span class="n">Breadcrumbs</span><span class="p">(</span><span class="n">items</span><span class="o">=</span><span class="p">{</span><span class="s2">"detail"</span><span class="p">:</span> <span class="p">[</span>
|
|
11694
|
+
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span><span class="n">viewname_str</span><span class="o">=</span><span class="s2">"home"</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Home"</span><span class="p">),</span>
|
|
11695
|
+
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model_key</span><span class="o">=</span><span class="s2">"location"</span><span class="p">),</span>
|
|
11696
|
+
<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="p">]})</span>
|
|
11697
|
+
<a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a>
|
|
11698
|
+
<a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="c1"># Render for a device detail view</span>
|
|
11699
|
+
<a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a><span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span>
|
|
11700
|
+
<a id="__codelineno-6-11" name="__codelineno-6-11" href="#__codelineno-6-11"></a> <span class="s1">'view_action'</span><span class="p">:</span> <span class="s1">'retrieve'</span><span class="p">,</span>
|
|
11701
|
+
<a id="__codelineno-6-12" name="__codelineno-6-12" href="#__codelineno-6-12"></a> <span class="s1">'detail'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="c1"># Indicates this is a detail view</span>
|
|
11702
|
+
<a id="__codelineno-6-13" name="__codelineno-6-13" href="#__codelineno-6-13"></a> <span class="s1">'object'</span><span class="p">:</span> <span class="n">device</span><span class="p">,</span>
|
|
11703
|
+
<a id="__codelineno-6-14" name="__codelineno-6-14" href="#__codelineno-6-14"></a> <span class="s1">'location'</span><span class="p">:</span> <span class="n">device</span><span class="o">.</span><span class="n">location</span><span class="p">,</span>
|
|
11704
|
+
<a id="__codelineno-6-15" name="__codelineno-6-15" href="#__codelineno-6-15"></a><span class="p">})</span>
|
|
11705
|
+
<a id="__codelineno-6-16" name="__codelineno-6-16" href="#__codelineno-6-16"></a><span class="n">html</span> <span class="o">=</span> <span class="n">breadcrumbs</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
|
|
11706
|
+
</code></pre></div>
|
|
11707
|
+
<p>It will generate:</p>
|
|
11708
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="p"><</span><span class="nt">ol</span> <span class="na">class</span><span class="o">=</span><span class="s">"breadcrumb"</span><span class="p">></span>
|
|
11709
|
+
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a> <span class="p"><</span><span class="nt">li</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"/dcim/devices"</span><span class="p">></span>Devices<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">li</span><span class="p">></span>
|
|
11710
|
+
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a> <span class="p"><</span><span class="nt">li</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"/"</span><span class="p">></span>Home<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">li</span><span class="p">></span>
|
|
11711
|
+
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> <span class="p"><</span><span class="nt">li</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"/dcim/locations"</span><span class="p">></span>Locations<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">li</span><span class="p">></span>
|
|
11712
|
+
<a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a> <span class="p"><</span><span class="nt">li</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"/dcim/devices/<uuid>"</span><span class="p">></span>Device name<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">li</span><span class="p">></span>
|
|
11713
|
+
<a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="p"></</span><span class="nt">ol</span><span class="p">></span>
|
|
11714
|
+
</code></pre></div>
|
|
11420
11715
|
<h2 id="panel-types">Panel Types<a class="headerlink" href="#panel-types" title="Permanent link">¶</a></h2>
|
|
11421
11716
|
<h3 id="base-panel">Base Panel<a class="headerlink" href="#base-panel" title="Permanent link">¶</a></h3>
|
|
11422
11717
|
<p>The Panel component serves as a base class for creating individual display panels within a Layout system. You'll rarely use it directly, but it's important to understand as the base class for the more feature-filled subclasses described below.</p>
|
|
11423
11718
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.Panel">Code reference</a></p>
|
|
11424
11719
|
<h4 id="panel-examples">Panel Examples<a class="headerlink" href="#panel-examples" title="Permanent link">¶</a></h4>
|
|
11425
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11426
|
-
<a id="__codelineno-
|
|
11427
|
-
<a id="__codelineno-
|
|
11428
|
-
<a id="__codelineno-
|
|
11429
|
-
<a id="__codelineno-
|
|
11430
|
-
<a id="__codelineno-
|
|
11431
|
-
<a id="__codelineno-
|
|
11720
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">Panel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
11721
|
+
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>
|
|
11722
|
+
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="n">Panel</span><span class="p">(</span>
|
|
11723
|
+
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
11724
|
+
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
11725
|
+
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Panel Header"</span><span class="p">,</span>
|
|
11726
|
+
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a><span class="p">)</span>
|
|
11432
11727
|
</code></pre></div>
|
|
11433
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11434
|
-
<a id="__codelineno-
|
|
11435
|
-
<a id="__codelineno-
|
|
11436
|
-
<a id="__codelineno-
|
|
11437
|
-
<a id="__codelineno-
|
|
11438
|
-
<a id="__codelineno-
|
|
11439
|
-
<a id="__codelineno-
|
|
11440
|
-
<a id="__codelineno-
|
|
11441
|
-
<a id="__codelineno-
|
|
11442
|
-
<a id="__codelineno-
|
|
11443
|
-
<a id="__codelineno-
|
|
11444
|
-
<a id="__codelineno-
|
|
11728
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">Panel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
11729
|
+
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>
|
|
11730
|
+
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="n">Panel</span><span class="p">(</span>
|
|
11731
|
+
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
|
11732
|
+
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">RIGHT_HALF</span><span class="p">,</span>
|
|
11733
|
+
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Optional Params Included"</span><span class="p">,</span>
|
|
11734
|
+
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a> <span class="n">body_content_template_path</span><span class="o">=</span><span class="s2">"path/to/template/body_content_template.html"</span><span class="p">,</span>
|
|
11735
|
+
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a> <span class="n">header_extra_content_template_path</span><span class="o">=</span><span class="s2">"path/to/template/header_extra_content_template.html"</span><span class="p">,</span>
|
|
11736
|
+
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a> <span class="n">footer_content_template_path</span><span class="o">=</span><span class="s2">"path/to/template/footer_content_template.html"</span><span class="p">,</span>
|
|
11737
|
+
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a> <span class="n">template_path</span><span class="o">=</span><span class="s2">"path/to/template/template.html"</span><span class="p">,</span>
|
|
11738
|
+
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a> <span class="n">body_wrapper_template_path</span><span class="o">=</span><span class="s2">"path/to/template/body_wrapper_template.html"</span><span class="p">,</span>
|
|
11739
|
+
<a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="p">)</span>
|
|
11445
11740
|
</code></pre></div>
|
|
11446
11741
|
<h3 id="objectfieldspanel">ObjectFieldsPanel<a class="headerlink" href="#objectfieldspanel" title="Permanent link">¶</a></h3>
|
|
11447
11742
|
<p><code>ObjectFieldsPanel</code> is designed to automatically render object attributes in a table format. It's particularly useful for displaying model instances or any object with defined attributes. This panel inherits from <code>KeyValueTablePanel</code>.</p>
|
|
@@ -11454,31 +11749,31 @@
|
|
|
11454
11749
|
- `comments`, `tags` (these are automatically added as standalone panels)
|
|
11455
11750
|
</code></pre></div>
|
|
11456
11751
|
<h4 id="objectfieldspanel-examples">ObjectFieldsPanel Examples<a class="headerlink" href="#objectfieldspanel-examples" title="Permanent link">¶</a></h4>
|
|
11457
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11458
|
-
<a id="__codelineno-
|
|
11459
|
-
<a id="__codelineno-
|
|
11460
|
-
<a id="__codelineno-
|
|
11461
|
-
<a id="__codelineno-
|
|
11462
|
-
<a id="__codelineno-
|
|
11463
|
-
<a id="__codelineno-
|
|
11464
|
-
<a id="__codelineno-
|
|
11752
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">ObjectFieldsPanel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
11753
|
+
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>
|
|
11754
|
+
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="n">ObjectFieldsPanel</span><span class="p">(</span>
|
|
11755
|
+
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
11756
|
+
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></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>
|
|
11757
|
+
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Object Fields Panel"</span><span class="p">,</span>
|
|
11758
|
+
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a> <span class="n">context_object_key</span><span class="o">=</span><span class="s2">"obj"</span><span class="p">,</span>
|
|
11759
|
+
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="p">)</span>
|
|
11465
11760
|
</code></pre></div>
|
|
11466
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11467
|
-
<a id="__codelineno-
|
|
11468
|
-
<a id="__codelineno-
|
|
11469
|
-
<a id="__codelineno-
|
|
11470
|
-
<a id="__codelineno-
|
|
11471
|
-
<a id="__codelineno-
|
|
11472
|
-
<a id="__codelineno-
|
|
11473
|
-
<a id="__codelineno-
|
|
11474
|
-
<a id="__codelineno-
|
|
11475
|
-
<a id="__codelineno-
|
|
11476
|
-
<a id="__codelineno-
|
|
11477
|
-
<a id="__codelineno-
|
|
11478
|
-
<a id="__codelineno-
|
|
11479
|
-
<a id="__codelineno-
|
|
11480
|
-
<a id="__codelineno-
|
|
11481
|
-
<a id="__codelineno-
|
|
11761
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps</span> <span class="kn">import</span> <span class="n">ui</span>
|
|
11762
|
+
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="kn">from</span> <span class="nn">nautobot.core.templatetags</span> <span class="kn">import</span> <span class="n">helpers</span>
|
|
11763
|
+
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>
|
|
11764
|
+
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>
|
|
11765
|
+
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="n">panels</span> <span class="o">=</span> <span class="n">ui</span><span class="o">.</span><span class="n">ObjectFieldsPanel</span><span class="p">(</span>
|
|
11766
|
+
<a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
|
11767
|
+
<a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a> <span class="n">section</span><span class="o">=</span><span class="n">ui</span><span class="o">.</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">LEFT_HALF</span><span class="p">,</span>
|
|
11768
|
+
<a id="__codelineno-11-8" name="__codelineno-11-8" href="#__codelineno-11-8"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Object Fields Panel"</span><span class="p">,</span>
|
|
11769
|
+
<a id="__codelineno-11-9" name="__codelineno-11-9" href="#__codelineno-11-9"></a> <span class="n">fields</span><span class="o">=</span><span class="p">[</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"number"</span><span class="p">,</span> <span class="s2">"notes"</span><span class="p">,</span> <span class="s2">"notexists"</span><span class="p">],</span>
|
|
11770
|
+
<a id="__codelineno-11-10" name="__codelineno-11-10" href="#__codelineno-11-10"></a> <span class="n">context_object_key</span><span class="o">=</span><span class="s2">"obj"</span><span class="p">,</span>
|
|
11771
|
+
<a id="__codelineno-11-11" name="__codelineno-11-11" href="#__codelineno-11-11"></a> <span class="n">ignore_nonexistent_fields</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
11772
|
+
<a id="__codelineno-11-12" name="__codelineno-11-12" href="#__codelineno-11-12"></a> <span class="n">value_transforms</span><span class="o">=</span><span class="p">{</span>
|
|
11773
|
+
<a id="__codelineno-11-13" name="__codelineno-11-13" href="#__codelineno-11-13"></a> <span class="s2">"name"</span><span class="p">:</span> <span class="p">[</span><span class="n">helpers</span><span class="o">.</span><span class="n">bettertitle</span><span class="p">],</span>
|
|
11774
|
+
<a id="__codelineno-11-14" name="__codelineno-11-14" href="#__codelineno-11-14"></a> <span class="s2">"number"</span><span class="p">:</span> <span class="p">[</span><span class="k">lambda</span> <span class="n">v</span><span class="p">:</span> <span class="n">helpers</span><span class="o">.</span><span class="n">hyperlinked_field</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="s2">"https://nautobot.com"</span><span class="p">)]</span>
|
|
11775
|
+
<a id="__codelineno-11-15" name="__codelineno-11-15" href="#__codelineno-11-15"></a> <span class="p">},</span>
|
|
11776
|
+
<a id="__codelineno-11-16" name="__codelineno-11-16" href="#__codelineno-11-16"></a><span class="p">),</span>
|
|
11482
11777
|
</code></pre></div>
|
|
11483
11778
|
<!-- pyml disable-num-lines 5 no-inline-html -->
|
|
11484
11779
|
<div class="grid cards example-images">
|
|
@@ -11495,63 +11790,63 @@
|
|
|
11495
11790
|
</div>
|
|
11496
11791
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.KeyValueTablePanel">Code reference</a></p>
|
|
11497
11792
|
<h4 id="keyvaluetablepanel-examples">KeyValueTablePanel Examples<a class="headerlink" href="#keyvaluetablepanel-examples" title="Permanent link">¶</a></h4>
|
|
11498
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11499
|
-
<a id="__codelineno-
|
|
11500
|
-
<a id="__codelineno-
|
|
11501
|
-
<a id="__codelineno-
|
|
11502
|
-
<a id="__codelineno-
|
|
11503
|
-
<a id="__codelineno-
|
|
11504
|
-
<a id="__codelineno-
|
|
11505
|
-
<a id="__codelineno-
|
|
11506
|
-
<a id="__codelineno-
|
|
11793
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">KeyValueTablePanel</span>
|
|
11794
|
+
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>
|
|
11795
|
+
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="n">KeyValueTablePanel</span><span class="p">(</span>
|
|
11796
|
+
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
11797
|
+
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a> <span class="n">data</span><span class="o">=</span><span class="p">{</span>
|
|
11798
|
+
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a> <span class="s2">"speed"</span><span class="p">:</span> <span class="s2">"1000000"</span><span class="p">,</span>
|
|
11799
|
+
<a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a> <span class="s2">"notes"</span><span class="p">:</span> <span class="s2">"**Important**"</span>
|
|
11800
|
+
<a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a> <span class="p">},</span>
|
|
11801
|
+
<a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a><span class="p">)</span>
|
|
11507
11802
|
</code></pre></div>
|
|
11508
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11509
|
-
<a id="__codelineno-
|
|
11510
|
-
<a id="__codelineno-
|
|
11511
|
-
<a id="__codelineno-
|
|
11512
|
-
<a id="__codelineno-
|
|
11513
|
-
<a id="__codelineno-
|
|
11514
|
-
<a id="__codelineno-
|
|
11515
|
-
<a id="__codelineno-
|
|
11516
|
-
<a id="__codelineno-
|
|
11517
|
-
<a id="__codelineno-
|
|
11518
|
-
<a id="__codelineno-
|
|
11519
|
-
<a id="__codelineno-
|
|
11520
|
-
<a id="__codelineno-
|
|
11521
|
-
<a id="__codelineno-
|
|
11522
|
-
<a id="__codelineno-
|
|
11523
|
-
<a id="__codelineno-
|
|
11524
|
-
<a id="__codelineno-
|
|
11525
|
-
<a id="__codelineno-
|
|
11526
|
-
<a id="__codelineno-
|
|
11527
|
-
<a id="__codelineno-
|
|
11803
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">KeyValueTablePanel</span>
|
|
11804
|
+
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>
|
|
11805
|
+
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="n">KeyValueTablePanel</span><span class="p">(</span>
|
|
11806
|
+
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
11807
|
+
<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a> <span class="n">data</span><span class="o">=</span><span class="p">{</span>
|
|
11808
|
+
<a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a> <span class="s2">"speed"</span><span class="p">:</span> <span class="s2">"1000000"</span><span class="p">,</span>
|
|
11809
|
+
<a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a> <span class="s2">"notes"</span><span class="p">:</span> <span class="s2">"**Important**"</span><span class="p">,</span>
|
|
11810
|
+
<a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a> <span class="p">},</span>
|
|
11811
|
+
<a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a> <span class="n">hide_if_unset</span><span class="o">=</span><span class="p">(),</span>
|
|
11812
|
+
<a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a> <span class="n">value_transforms</span><span class="o">=</span><span class="p">{</span>
|
|
11813
|
+
<a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a> <span class="s2">"speed"</span><span class="p">:</span> <span class="p">[</span> <span class="c1"># List of functions to apply in order</span>
|
|
11814
|
+
<a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a> <span class="n">humanize_speed</span><span class="p">,</span> <span class="c1"># Convert 1000000 to "1 Gbps"</span>
|
|
11815
|
+
<a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a> <span class="n">placeholder</span> <span class="c1"># Show placeholder if empty</span>
|
|
11816
|
+
<a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a> <span class="p">],</span>
|
|
11817
|
+
<a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a> <span class="s2">"notes"</span><span class="p">:</span> <span class="p">[</span>
|
|
11818
|
+
<a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a> <span class="n">render_markdown</span><span class="p">,</span> <span class="c1"># Convert markdown to HTML</span>
|
|
11819
|
+
<a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a> <span class="n">placeholder</span> <span class="c1"># Show placeholder if empty</span>
|
|
11820
|
+
<a id="__codelineno-13-18" name="__codelineno-13-18" href="#__codelineno-13-18"></a> <span class="p">]</span>
|
|
11821
|
+
<a id="__codelineno-13-19" name="__codelineno-13-19" href="#__codelineno-13-19"></a> <span class="p">},</span>
|
|
11822
|
+
<a id="__codelineno-13-20" name="__codelineno-13-20" href="#__codelineno-13-20"></a><span class="p">)</span>
|
|
11528
11823
|
</code></pre></div>
|
|
11529
11824
|
<h3 id="groupedkeyvaluetablepanel">GroupedKeyValueTablePanel<a class="headerlink" href="#groupedkeyvaluetablepanel" title="Permanent link">¶</a></h3>
|
|
11530
11825
|
<p><code>GroupedKeyValueTablePanel</code> is a specialized version of <code>KeyValueTablePanel</code> that organizes data into collapsible accordion groups. This is used in the standard template for displaying grouped custom/computed fields when present.</p>
|
|
11531
11826
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.GroupedKeyValueTablePanel">Code reference</a></p>
|
|
11532
11827
|
<h4 id="groupedkeyvaluetablepanel-examples">GroupedKeyValueTablePanel Examples<a class="headerlink" href="#groupedkeyvaluetablepanel-examples" title="Permanent link">¶</a></h4>
|
|
11533
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11534
|
-
<a id="__codelineno-
|
|
11535
|
-
<a id="__codelineno-
|
|
11536
|
-
<a id="__codelineno-
|
|
11537
|
-
<a id="__codelineno-
|
|
11538
|
-
<a id="__codelineno-
|
|
11539
|
-
<a id="__codelineno-
|
|
11540
|
-
<a id="__codelineno-
|
|
11541
|
-
<a id="__codelineno-
|
|
11542
|
-
<a id="__codelineno-
|
|
11543
|
-
<a id="__codelineno-
|
|
11544
|
-
<a id="__codelineno-
|
|
11545
|
-
<a id="__codelineno-
|
|
11546
|
-
<a id="__codelineno-
|
|
11547
|
-
<a id="__codelineno-
|
|
11548
|
-
<a id="__codelineno-
|
|
11549
|
-
<a id="__codelineno-
|
|
11550
|
-
<a id="__codelineno-
|
|
11551
|
-
<a id="__codelineno-
|
|
11552
|
-
<a id="__codelineno-
|
|
11553
|
-
<a id="__codelineno-
|
|
11554
|
-
<a id="__codelineno-
|
|
11828
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">GroupedKeyValueTablePanel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
11829
|
+
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>
|
|
11830
|
+
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="n">GroupedKeyValueTablePanel</span><span class="p">(</span>
|
|
11831
|
+
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
|
|
11832
|
+
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
11833
|
+
<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Grouped Information"</span><span class="p">,</span>
|
|
11834
|
+
<a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a> <span class="n">body_id</span><span class="o">=</span><span class="s2">"network-details"</span><span class="p">,</span>
|
|
11835
|
+
<a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a> <span class="c1"># Data Structure</span>
|
|
11836
|
+
<a id="__codelineno-14-9" name="__codelineno-14-9" href="#__codelineno-14-9"></a> <span class="n">data</span><span class="o">=</span><span class="p">{</span>
|
|
11837
|
+
<a id="__codelineno-14-10" name="__codelineno-14-10" href="#__codelineno-14-10"></a> <span class="s2">"Network"</span><span class="p">:</span> <span class="p">{</span> <span class="c1"># Group name (shown as accordion header)</span>
|
|
11838
|
+
<a id="__codelineno-14-11" name="__codelineno-14-11" href="#__codelineno-14-11"></a> <span class="s2">"VLAN"</span><span class="p">:</span> <span class="s2">"100"</span><span class="p">,</span> <span class="c1"># Key-value pairs in this group</span>
|
|
11839
|
+
<a id="__codelineno-14-12" name="__codelineno-14-12" href="#__codelineno-14-12"></a> <span class="s2">"IP Range"</span><span class="p">:</span> <span class="s2">"192.168.1.0/24"</span>
|
|
11840
|
+
<a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a> <span class="p">},</span>
|
|
11841
|
+
<a id="__codelineno-14-14" name="__codelineno-14-14" href="#__codelineno-14-14"></a> <span class="s2">"Physical"</span><span class="p">:</span> <span class="p">{</span> <span class="c1"># Another group</span>
|
|
11842
|
+
<a id="__codelineno-14-15" name="__codelineno-14-15" href="#__codelineno-14-15"></a> <span class="s2">"Location"</span><span class="p">:</span> <span class="s2">"Rack A1"</span><span class="p">,</span>
|
|
11843
|
+
<a id="__codelineno-14-16" name="__codelineno-14-16" href="#__codelineno-14-16"></a> <span class="s2">"Height"</span><span class="p">:</span> <span class="s2">"2U"</span>
|
|
11844
|
+
<a id="__codelineno-14-17" name="__codelineno-14-17" href="#__codelineno-14-17"></a> <span class="p">},</span>
|
|
11845
|
+
<a id="__codelineno-14-18" name="__codelineno-14-18" href="#__codelineno-14-18"></a> <span class="s2">""</span><span class="p">:</span> <span class="p">{</span> <span class="c1"># Empty string for ungrouped items</span>
|
|
11846
|
+
<a id="__codelineno-14-19" name="__codelineno-14-19" href="#__codelineno-14-19"></a> <span class="s2">"Notes"</span><span class="p">:</span> <span class="s2">"Important info"</span>
|
|
11847
|
+
<a id="__codelineno-14-20" name="__codelineno-14-20" href="#__codelineno-14-20"></a> <span class="p">}</span>
|
|
11848
|
+
<a id="__codelineno-14-21" name="__codelineno-14-21" href="#__codelineno-14-21"></a> <span class="p">},</span>
|
|
11849
|
+
<a id="__codelineno-14-22" name="__codelineno-14-22" href="#__codelineno-14-22"></a><span class="p">)</span>
|
|
11555
11850
|
</code></pre></div>
|
|
11556
11851
|
<!-- pyml disable-num-lines 7 no-inline-html -->
|
|
11557
11852
|
<div class="grid cards example-images">
|
|
@@ -11568,23 +11863,23 @@
|
|
|
11568
11863
|
<p><code>StatsPanel</code> is a Panel component that displays statistical information with clickable links to filtered views of related models. It's particularly useful for dashboards and summary views that provide quick access to filtered data sets.</p>
|
|
11569
11864
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.StatsPanel">Code reference</a></p>
|
|
11570
11865
|
<h4 id="statspanel-examples">StatsPanel Examples<a class="headerlink" href="#statspanel-examples" title="Permanent link">¶</a></h4>
|
|
11571
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11572
|
-
<a id="__codelineno-
|
|
11573
|
-
<a id="__codelineno-
|
|
11574
|
-
<a id="__codelineno-
|
|
11575
|
-
<a id="__codelineno-
|
|
11576
|
-
<a id="__codelineno-
|
|
11577
|
-
<a id="__codelineno-
|
|
11578
|
-
<a id="__codelineno-
|
|
11579
|
-
<a id="__codelineno-
|
|
11580
|
-
<a id="__codelineno-
|
|
11581
|
-
<a id="__codelineno-
|
|
11582
|
-
<a id="__codelineno-
|
|
11583
|
-
<a id="__codelineno-
|
|
11584
|
-
<a id="__codelineno-
|
|
11585
|
-
<a id="__codelineno-
|
|
11586
|
-
<a id="__codelineno-
|
|
11587
|
-
<a id="__codelineno-
|
|
11866
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">StatsPanel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
11867
|
+
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>
|
|
11868
|
+
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="n">StatsPanel</span><span class="p">(</span>
|
|
11869
|
+
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">700</span><span class="p">,</span>
|
|
11870
|
+
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">RIGHT_HALF</span><span class="p">,</span>
|
|
11871
|
+
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Statistics"</span><span class="p">,</span>
|
|
11872
|
+
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a> <span class="n">filter_name</span><span class="o">=</span><span class="s2">"location"</span><span class="p">,</span>
|
|
11873
|
+
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a> <span class="n">related_models</span><span class="o">=</span><span class="p">[</span> <span class="c1"># Models to show statistics for</span>
|
|
11874
|
+
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a> <span class="n">Device</span><span class="p">,</span> <span class="c1"># Direct model reference</span>
|
|
11875
|
+
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a> <span class="c1"># Will count all devices related to this object by their `location` key</span>
|
|
11876
|
+
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a> <span class="p">(</span><span class="n">Circuit</span><span class="p">,</span> <span class="s2">"circuit_terminations__location__in"</span><span class="p">),</span>
|
|
11877
|
+
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a> <span class="c1"># Tuple of (Model, query_string)</span>
|
|
11878
|
+
<a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a> <span class="c1"># For complex relationships</span>
|
|
11879
|
+
<a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a> <span class="p">(</span><span class="n">VirtualMachine</span><span class="p">,</span> <span class="s2">"cluster__location__in"</span><span class="p">)</span>
|
|
11880
|
+
<a id="__codelineno-15-15" name="__codelineno-15-15" href="#__codelineno-15-15"></a> <span class="c1"># Another complex relationship example</span>
|
|
11881
|
+
<a id="__codelineno-15-16" name="__codelineno-15-16" href="#__codelineno-15-16"></a> <span class="p">],</span>
|
|
11882
|
+
<a id="__codelineno-15-17" name="__codelineno-15-17" href="#__codelineno-15-17"></a><span class="p">)</span>
|
|
11588
11883
|
</code></pre></div>
|
|
11589
11884
|
<!-- pyml disable-num-lines 5 no-inline-html -->
|
|
11590
11885
|
<div class="grid cards example-images">
|
|
@@ -11606,31 +11901,31 @@
|
|
|
11606
11901
|
<p><code>ObjectTextPanel</code> renders content from a specific field of an object in the context. It simplifies the display of object attributes in various text formats (Markdown, JSON, YAML, etc.).</p>
|
|
11607
11902
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.ObjectTextPanel">Code reference</a></p>
|
|
11608
11903
|
<h4 id="objecttextpanel-examples">ObjectTextPanel Examples<a class="headerlink" href="#objecttextpanel-examples" title="Permanent link">¶</a></h4>
|
|
11609
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11610
|
-
<a id="__codelineno-
|
|
11611
|
-
<a id="__codelineno-
|
|
11612
|
-
<a id="__codelineno-
|
|
11613
|
-
<a id="__codelineno-
|
|
11614
|
-
<a id="__codelineno-
|
|
11615
|
-
<a id="__codelineno-
|
|
11616
|
-
<a id="__codelineno-
|
|
11617
|
-
<a id="__codelineno-
|
|
11618
|
-
<a id="__codelineno-
|
|
11904
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-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>
|
|
11905
|
+
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>
|
|
11906
|
+
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="n">ObjectTextPanel</span><span class="p">(</span>
|
|
11907
|
+
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span>
|
|
11908
|
+
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
11909
|
+
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Description"</span><span class="p">,</span>
|
|
11910
|
+
<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> <span class="n">object_field</span><span class="o">=</span><span class="s2">"description"</span><span class="p">,</span>
|
|
11911
|
+
<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></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">MARKDOWN</span><span class="p">,</span>
|
|
11912
|
+
<a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a> <span class="n">render_placeholder</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
11913
|
+
<a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a><span class="p">)</span>
|
|
11619
11914
|
</code></pre></div>
|
|
11620
11915
|
<h3 id="textpanel">TextPanel<a class="headerlink" href="#textpanel" title="Permanent link">¶</a></h3>
|
|
11621
11916
|
<p><code>TextPanel</code> renders content from a specified context field. It provides a simple way to display text content in various formats (Markdown, JSON, YAML, plaintext, or code) from the rendering context.</p>
|
|
11622
11917
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.TextPanel">Code reference</a></p>
|
|
11623
11918
|
<h4 id="textpanel-examples">TextPanel Examples<a class="headerlink" href="#textpanel-examples" title="Permanent link">¶</a></h4>
|
|
11624
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11625
|
-
<a id="__codelineno-
|
|
11626
|
-
<a id="__codelineno-
|
|
11627
|
-
<a id="__codelineno-
|
|
11628
|
-
<a id="__codelineno-
|
|
11629
|
-
<a id="__codelineno-
|
|
11630
|
-
<a id="__codelineno-
|
|
11631
|
-
<a id="__codelineno-
|
|
11632
|
-
<a id="__codelineno-
|
|
11633
|
-
<a id="__codelineno-
|
|
11919
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">TextPanel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
11920
|
+
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
|
|
11921
|
+
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="n">TextPanel</span><span class="p">(</span>
|
|
11922
|
+
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">600</span><span class="p">,</span>
|
|
11923
|
+
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
11924
|
+
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Custom Content"</span><span class="p">,</span>
|
|
11925
|
+
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> <span class="n">context_field</span><span class="o">=</span><span class="s2">"text"</span><span class="p">,</span>
|
|
11926
|
+
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="n">render_as</span><span class="o">=</span><span class="n">TextPanel</span><span class="o">.</span><span class="n">RenderOptions</span><span class="o">.</span><span class="n">CODE</span><span class="p">,</span>
|
|
11927
|
+
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a> <span class="n">render_placeholder</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
11928
|
+
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a><span class="p">)</span>
|
|
11634
11929
|
</code></pre></div>
|
|
11635
11930
|
<h3 id="datatablepanel">DataTablePanel<a class="headerlink" href="#datatablepanel" title="Permanent link">¶</a></h3>
|
|
11636
11931
|
<p><code>DataTablePanel</code> is a Panel component that renders tabular data directly from a list of dictionaries, providing a lightweight alternative to <code>django_tables2</code> Table classes.</p>
|
|
@@ -11644,14 +11939,14 @@
|
|
|
11644
11939
|
</ul>
|
|
11645
11940
|
</div>
|
|
11646
11941
|
<h4 id="datatablepanel-examples">DataTablePanel Examples<a class="headerlink" href="#datatablepanel-examples" title="Permanent link">¶</a></h4>
|
|
11647
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11648
|
-
<a id="__codelineno-
|
|
11649
|
-
<a id="__codelineno-
|
|
11650
|
-
<a id="__codelineno-
|
|
11651
|
-
<a id="__codelineno-
|
|
11652
|
-
<a id="__codelineno-
|
|
11653
|
-
<a id="__codelineno-
|
|
11654
|
-
<a id="__codelineno-
|
|
11942
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">DataTablePanel</span>
|
|
11943
|
+
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>
|
|
11944
|
+
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="n">DataTablePanel</span><span class="p">(</span>
|
|
11945
|
+
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
11946
|
+
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">context_data_key</span><span class="o">=</span><span class="s2">"data"</span><span class="p">,</span>
|
|
11947
|
+
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s2">"one"</span><span class="p">,</span> <span class="s2">"two"</span><span class="p">,</span> <span class="s2">"three"</span><span class="p">],</span>
|
|
11948
|
+
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a> <span class="n">column_headers</span><span class="o">=</span><span class="p">[</span><span class="s2">"One"</span><span class="p">,</span> <span class="s2">"Two"</span><span class="p">,</span> <span class="s2">"Three"</span><span class="p">]</span>
|
|
11949
|
+
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="p">)</span>
|
|
11655
11950
|
</code></pre></div>
|
|
11656
11951
|
<h3 id="objectstablepanel">ObjectsTablePanel<a class="headerlink" href="#objectstablepanel" title="Permanent link">¶</a></h3>
|
|
11657
11952
|
<p>The <code>ObjectsTablePanel</code> is a powerful component for rendering tables of Django model objects,
|
|
@@ -11808,52 +12103,52 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
11808
12103
|
</tbody>
|
|
11809
12104
|
</table>
|
|
11810
12105
|
<h4 id="objectstablepanel-examples">ObjectsTablePanel Examples<a class="headerlink" href="#objectstablepanel-examples" title="Permanent link">¶</a></h4>
|
|
11811
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11812
|
-
<a id="__codelineno-
|
|
11813
|
-
<a id="__codelineno-
|
|
11814
|
-
<a id="__codelineno-
|
|
11815
|
-
<a id="__codelineno-
|
|
11816
|
-
<a id="__codelineno-
|
|
11817
|
-
<a id="__codelineno-
|
|
11818
|
-
<a id="__codelineno-
|
|
11819
|
-
<a id="__codelineno-
|
|
11820
|
-
<a id="__codelineno-
|
|
12106
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">ObjectsTablePanel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
12107
|
+
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a>
|
|
12108
|
+
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="n">ObjectsTablePanel</span><span class="p">(</span>
|
|
12109
|
+
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
12110
|
+
<a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">RIGHT_HALF</span><span class="p">,</span>
|
|
12111
|
+
<a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a> <span class="n">table_class</span><span class="o">=</span><span class="n">ExampleTable</span><span class="p">,</span>
|
|
12112
|
+
<a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a> <span class="n">table_filter</span><span class="o">=</span><span class="s2">"example_name"</span><span class="p">,</span>
|
|
12113
|
+
<a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a> <span class="n">table_title</span><span class="o">=</span><span class="s2">"Example Table"</span><span class="p">,</span>
|
|
12114
|
+
<a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a>
|
|
12115
|
+
<a id="__codelineno-19-10" name="__codelineno-19-10" href="#__codelineno-19-10"></a><span class="p">)</span>
|
|
11821
12116
|
</code></pre></div>
|
|
11822
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11823
|
-
<a id="__codelineno-
|
|
11824
|
-
<a id="__codelineno-
|
|
11825
|
-
<a id="__codelineno-
|
|
11826
|
-
<a id="__codelineno-
|
|
11827
|
-
<a id="__codelineno-
|
|
11828
|
-
<a id="__codelineno-
|
|
11829
|
-
<a id="__codelineno-
|
|
11830
|
-
<a id="__codelineno-
|
|
11831
|
-
<a id="__codelineno-
|
|
11832
|
-
<a id="__codelineno-
|
|
11833
|
-
<a id="__codelineno-
|
|
11834
|
-
<a id="__codelineno-
|
|
11835
|
-
<a id="__codelineno-
|
|
11836
|
-
<a id="__codelineno-
|
|
12117
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="n">ObjectsTablePanel</span><span class="p">,</span> <span class="n">SectionChoices</span>
|
|
12118
|
+
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>
|
|
12119
|
+
<a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a><span class="n">ObjectsTablePanel</span><span class="p">(</span>
|
|
12120
|
+
<a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
|
12121
|
+
<a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
12122
|
+
<a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a> <span class="n">context_table_key</span><span class="o">=</span><span class="s2">"example_table_instance"</span><span class="p">,</span>
|
|
12123
|
+
<a id="__codelineno-20-7" name="__codelineno-20-7" href="#__codelineno-20-7"></a> <span class="n">table_title</span><span class="o">=</span><span class="s2">"Example Table"</span><span class="p">,</span>
|
|
12124
|
+
<a id="__codelineno-20-8" name="__codelineno-20-8" href="#__codelineno-20-8"></a> <span class="n">hide_hierarchy_ui</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
12125
|
+
<a id="__codelineno-20-9" name="__codelineno-20-9" href="#__codelineno-20-9"></a> <span class="n">related_field_name</span><span class="o">=</span><span class="s2">"example_id"</span><span class="p">,</span>
|
|
12126
|
+
<a id="__codelineno-20-10" name="__codelineno-20-10" href="#__codelineno-20-10"></a> <span class="n">enable_bulk_actions</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
12127
|
+
<a id="__codelineno-20-11" name="__codelineno-20-11" href="#__codelineno-20-11"></a> <span class="n">add_permissions</span><span class="o">=</span><span class="p">[</span><span class="s2">"dcim:add_device"</span><span class="p">],</span>
|
|
12128
|
+
<a id="__codelineno-20-12" name="__codelineno-20-12" href="#__codelineno-20-12"></a> <span class="n">max_display_count</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
|
|
12129
|
+
<a id="__codelineno-20-13" name="__codelineno-20-13" href="#__codelineno-20-13"></a> <span class="n">prefetch_related_fields</span><span class="o">=</span><span class="p">[</span><span class="s2">"devices"</span><span class="p">],</span>
|
|
12130
|
+
<a id="__codelineno-20-14" name="__codelineno-20-14" href="#__codelineno-20-14"></a> <span class="n">select_related_fields</span><span class="o">=</span><span class="p">[</span><span class="s2">"manufacturers"</span><span class="p">,</span> <span class="s2">"locations"</span><span class="p">],</span>
|
|
12131
|
+
<a id="__codelineno-20-15" name="__codelineno-20-15" href="#__codelineno-20-15"></a><span class="p">)</span>
|
|
11837
12132
|
</code></pre></div>
|
|
11838
12133
|
<h2 id="button-types">Button Types<a class="headerlink" href="#button-types" title="Permanent link">¶</a></h2>
|
|
11839
12134
|
<h3 id="button">Button<a class="headerlink" href="#button" title="Permanent link">¶</a></h3>
|
|
11840
12135
|
<p>The Button component defines a single button in an object detail view.</p>
|
|
11841
12136
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.Button">Code reference</a></p>
|
|
11842
12137
|
<h4 id="button-examples">Button Examples<a class="headerlink" href="#button-examples" title="Permanent link">¶</a></h4>
|
|
11843
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11844
|
-
<a id="__codelineno-
|
|
11845
|
-
<a id="__codelineno-
|
|
11846
|
-
<a id="__codelineno-
|
|
11847
|
-
<a id="__codelineno-
|
|
11848
|
-
<a id="__codelineno-
|
|
11849
|
-
<a id="__codelineno-
|
|
11850
|
-
<a id="__codelineno-
|
|
11851
|
-
<a id="__codelineno-
|
|
11852
|
-
<a id="__codelineno-
|
|
11853
|
-
<a id="__codelineno-
|
|
11854
|
-
<a id="__codelineno-
|
|
11855
|
-
<a id="__codelineno-
|
|
11856
|
-
<a id="__codelineno-
|
|
12138
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="k">class</span> <span class="nc">SecretUIViewSet</span><span class="p">(</span><span class="o">...</span><span class="p">):</span>
|
|
12139
|
+
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="o">...</span>
|
|
12140
|
+
<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="n">object_detail_content</span> <span class="o">=</span> <span class="n">ObjectDetailContent</span><span class="p">(</span>
|
|
12141
|
+
<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">panels</span><span class="o">=</span><span class="p">[</span><span class="o">...</span><span class="p">],</span>
|
|
12142
|
+
<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="n">extra_buttons</span><span class="o">=</span><span class="p">[</span>
|
|
12143
|
+
<a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="n">Button</span><span class="p">(</span>
|
|
12144
|
+
<a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
12145
|
+
<a id="__codelineno-21-8" name="__codelineno-21-8" href="#__codelineno-21-8"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Check Secret"</span><span class="p">,</span>
|
|
12146
|
+
<a id="__codelineno-21-9" name="__codelineno-21-9" href="#__codelineno-21-9"></a> <span class="n">icon</span><span class="o">=</span><span class="s2">"mdi-test-tube"</span><span class="p">,</span>
|
|
12147
|
+
<a id="__codelineno-21-10" name="__codelineno-21-10" href="#__codelineno-21-10"></a> <span class="n">javascript_template_path</span><span class="o">=</span><span class="s2">"extras/secret_check.js"</span><span class="p">,</span>
|
|
12148
|
+
<a id="__codelineno-21-11" name="__codelineno-21-11" href="#__codelineno-21-11"></a> <span class="n">attributes</span><span class="o">=</span><span class="p">{</span><span class="s2">"onClick"</span><span class="p">:</span> <span class="s2">"checkSecret()"</span><span class="p">},</span>
|
|
12149
|
+
<a id="__codelineno-21-12" name="__codelineno-21-12" href="#__codelineno-21-12"></a> <span class="p">),</span>
|
|
12150
|
+
<a id="__codelineno-21-13" name="__codelineno-21-13" href="#__codelineno-21-13"></a> <span class="p">],</span>
|
|
12151
|
+
<a id="__codelineno-21-14" name="__codelineno-21-14" href="#__codelineno-21-14"></a> <span class="p">)</span>
|
|
11857
12152
|
</code></pre></div>
|
|
11858
12153
|
<!-- pyml disable-num-lines 5 no-inline-html -->
|
|
11859
12154
|
<div class="grid cards example-images">
|
|
@@ -11865,36 +12160,36 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
11865
12160
|
<p><code>DropdownButton</code> is a subclass of <code>Button</code> that may itself contain other <code>Buttons</code> as its <code>children</code>, which it will render as a dropdown menu. For an example of usage, refer to the <code>Add Components</code> dropdown on the Device detail view.</p>
|
|
11866
12161
|
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.DropdownButton">Code reference</a></p>
|
|
11867
12162
|
<h4 id="dropdownbutton-examples">DropdownButton Examples<a class="headerlink" href="#dropdownbutton-examples" title="Permanent link">¶</a></h4>
|
|
11868
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
11869
|
-
<a id="__codelineno-
|
|
11870
|
-
<a id="__codelineno-
|
|
11871
|
-
<a id="__codelineno-
|
|
11872
|
-
<a id="__codelineno-
|
|
11873
|
-
<a id="__codelineno-
|
|
11874
|
-
<a id="__codelineno-
|
|
11875
|
-
<a id="__codelineno-
|
|
11876
|
-
<a id="__codelineno-
|
|
11877
|
-
<a id="__codelineno-
|
|
11878
|
-
<a id="__codelineno-
|
|
11879
|
-
<a id="__codelineno-
|
|
11880
|
-
<a id="__codelineno-
|
|
11881
|
-
<a id="__codelineno-
|
|
11882
|
-
<a id="__codelineno-
|
|
11883
|
-
<a id="__codelineno-
|
|
11884
|
-
<a id="__codelineno-
|
|
11885
|
-
<a id="__codelineno-
|
|
11886
|
-
<a id="__codelineno-
|
|
11887
|
-
<a id="__codelineno-
|
|
11888
|
-
<a id="__codelineno-
|
|
11889
|
-
<a id="__codelineno-
|
|
11890
|
-
<a id="__codelineno-
|
|
11891
|
-
<a id="__codelineno-
|
|
11892
|
-
<a id="__codelineno-
|
|
11893
|
-
<a id="__codelineno-
|
|
11894
|
-
<a id="__codelineno-
|
|
11895
|
-
<a id="__codelineno-
|
|
11896
|
-
<a id="__codelineno-
|
|
11897
|
-
<a id="__codelineno-
|
|
12163
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="k">class</span> <span class="nc">DeviceView</span><span class="p">(</span><span class="n">generic</span><span class="o">.</span><span class="n">ObjectView</span><span class="p">):</span>
|
|
12164
|
+
<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="o">...</span>
|
|
12165
|
+
<a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="n">object_detail_content</span> <span class="o">=</span> <span class="n">ObjectDetailContent</span><span class="p">(</span>
|
|
12166
|
+
<a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a> <span class="n">extra_buttons</span><span class="o">=</span><span class="p">[</span>
|
|
12167
|
+
<a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a> <span class="n">object_detail</span><span class="o">.</span><span class="n">DropdownButton</span><span class="p">(</span>
|
|
12168
|
+
<a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
12169
|
+
<a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a> <span class="n">color</span><span class="o">=</span><span class="n">ButtonColorChoices</span><span class="o">.</span><span class="n">BLUE</span><span class="p">,</span>
|
|
12170
|
+
<a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Add Components"</span><span class="p">,</span>
|
|
12171
|
+
<a id="__codelineno-22-9" name="__codelineno-22-9" href="#__codelineno-22-9"></a> <span class="n">icon</span><span class="o">=</span><span class="s2">"mdi-plus-thick"</span><span class="p">,</span>
|
|
12172
|
+
<a id="__codelineno-22-10" name="__codelineno-22-10" href="#__codelineno-22-10"></a> <span class="n">required_permissions</span><span class="o">=</span><span class="p">[</span><span class="s2">"dcim.change_device"</span><span class="p">],</span>
|
|
12173
|
+
<a id="__codelineno-22-11" name="__codelineno-22-11" href="#__codelineno-22-11"></a> <span class="n">children</span><span class="o">=</span><span class="p">(</span>
|
|
12174
|
+
<a id="__codelineno-22-12" name="__codelineno-22-12" href="#__codelineno-22-12"></a> <span class="n">object_detail</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span>
|
|
12175
|
+
<a id="__codelineno-22-13" name="__codelineno-22-13" href="#__codelineno-22-13"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
12176
|
+
<a id="__codelineno-22-14" name="__codelineno-22-14" href="#__codelineno-22-14"></a> <span class="n">link_name</span><span class="o">=</span><span class="s2">"dcim:device_consoleports_add"</span><span class="p">,</span>
|
|
12177
|
+
<a id="__codelineno-22-15" name="__codelineno-22-15" href="#__codelineno-22-15"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Console Ports"</span><span class="p">,</span>
|
|
12178
|
+
<a id="__codelineno-22-16" name="__codelineno-22-16" href="#__codelineno-22-16"></a> <span class="n">icon</span><span class="o">=</span><span class="s2">"mdi-console"</span><span class="p">,</span>
|
|
12179
|
+
<a id="__codelineno-22-17" name="__codelineno-22-17" href="#__codelineno-22-17"></a> <span class="n">required_permissions</span><span class="o">=</span><span class="p">[</span><span class="s2">"dcim.add_consoleport"</span><span class="p">],</span>
|
|
12180
|
+
<a id="__codelineno-22-18" name="__codelineno-22-18" href="#__codelineno-22-18"></a> <span class="p">),</span>
|
|
12181
|
+
<a id="__codelineno-22-19" name="__codelineno-22-19" href="#__codelineno-22-19"></a> <span class="n">object_detail</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span>
|
|
12182
|
+
<a id="__codelineno-22-20" name="__codelineno-22-20" href="#__codelineno-22-20"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
|
12183
|
+
<a id="__codelineno-22-21" name="__codelineno-22-21" href="#__codelineno-22-21"></a> <span class="n">link_name</span><span class="o">=</span><span class="s2">"dcim:device_consoleserverports_add"</span><span class="p">,</span>
|
|
12184
|
+
<a id="__codelineno-22-22" name="__codelineno-22-22" href="#__codelineno-22-22"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Console Server Ports"</span><span class="p">,</span>
|
|
12185
|
+
<a id="__codelineno-22-23" name="__codelineno-22-23" href="#__codelineno-22-23"></a> <span class="n">icon</span><span class="o">=</span><span class="s2">"mdi-console-network-outline"</span><span class="p">,</span>
|
|
12186
|
+
<a id="__codelineno-22-24" name="__codelineno-22-24" href="#__codelineno-22-24"></a> <span class="n">required_permissions</span><span class="o">=</span><span class="p">[</span><span class="s2">"dcim.add_consoleserverport"</span><span class="p">],</span>
|
|
12187
|
+
<a id="__codelineno-22-25" name="__codelineno-22-25" href="#__codelineno-22-25"></a> <span class="p">),</span>
|
|
12188
|
+
<a id="__codelineno-22-26" name="__codelineno-22-26" href="#__codelineno-22-26"></a> <span class="o">...</span>
|
|
12189
|
+
<a id="__codelineno-22-27" name="__codelineno-22-27" href="#__codelineno-22-27"></a> <span class="p">),</span>
|
|
12190
|
+
<a id="__codelineno-22-28" name="__codelineno-22-28" href="#__codelineno-22-28"></a> <span class="p">),</span>
|
|
12191
|
+
<a id="__codelineno-22-29" name="__codelineno-22-29" href="#__codelineno-22-29"></a> <span class="p">],</span>
|
|
12192
|
+
<a id="__codelineno-22-30" name="__codelineno-22-30" href="#__codelineno-22-30"></a> <span class="p">)</span>
|
|
11898
12193
|
</code></pre></div>
|
|
11899
12194
|
<!-- pyml disable-num-lines 5 no-inline-html -->
|
|
11900
12195
|
<div class="grid cards example-images">
|
|
@@ -11902,54 +12197,194 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
11902
12197
|
<li><a class="glightbox" href="../../media/development/core/ui-component-framework/dropdown-button-example.png" data-type="image" data-width="auto" data-height="auto" data-desc-position="bottom"><img alt="DropdownButton Example" class="on-glb" src="../../media/development/core/ui-component-framework/dropdown-button-example.png" /></a></li>
|
|
11903
12198
|
</ul>
|
|
11904
12199
|
</div>
|
|
12200
|
+
<h2 id="breadcrumbs-and-titles-overview">Breadcrumbs and titles overview<a class="headerlink" href="#breadcrumbs-and-titles-overview" title="Permanent link">¶</a></h2>
|
|
12201
|
+
<p>High-level data flow diagram:</p>
|
|
12202
|
+
<!-- pyml disable-num-lines 5 no-inline-html -->
|
|
12203
|
+
<div class="grid cards example-images">
|
|
12204
|
+
<ul>
|
|
12205
|
+
<li><a class="glightbox" href="../../media/development/core/ui-component-framework/breadcrumbs-titles-data-flow.png" data-type="image" data-width="auto" data-height="auto" data-desc-position="bottom"><img alt="Breadcrumbs and titles data flow" class="on-glb" src="../../media/development/core/ui-component-framework/breadcrumbs-titles-data-flow.png" /></a></li>
|
|
12206
|
+
</ul>
|
|
12207
|
+
</div>
|
|
12208
|
+
<h3 id="breadcrumbitem-configuration">BreadcrumbItem Configuration<a class="headerlink" href="#breadcrumbitem-configuration" title="Permanent link">¶</a></h3>
|
|
12209
|
+
<p>Breadcrumb items has three main type of items.</p>
|
|
12210
|
+
<ul>
|
|
12211
|
+
<li><code>ViewNameBreadcrumbItem</code>: Creates a breadcrumb from a Django view name (string or callable), with optional URL kwargs and query params. The label can be static or dynamic.</li>
|
|
12212
|
+
<li><code>ModelBreadcrumbItem</code>: Generates a breadcrumb based on a Django model class, instance, or dotted model string. Supports resolving list/detail URLs and model verbose names for the label.</li>
|
|
12213
|
+
<li><code>InstanceBreadcrumbItem</code>: Represents a breadcrumb for a specific object instance (fetched from context). The URL and label are resolved from the object’s absolute URL and display/name.</li>
|
|
12214
|
+
</ul>
|
|
12215
|
+
<p>All breadcrumb items accept a <code>should_render</code> callable to control visibility based on context, and are automatically filtered out if both their URL and label are empty.
|
|
12216
|
+
Labels can be rendered either by using simple str, passing object that has <code>__str__</code> method, passing callable that accepts context or by taking it from context via <code>label_key</code>.</p>
|
|
12217
|
+
<h4 id="viewnamebreadcrumbitem-class"><code>ViewNameBreadcrumbItem</code> Class<a class="headerlink" href="#viewnamebreadcrumbitem-class" title="Permanent link">¶</a></h4>
|
|
12218
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="c1"># Basic view name breadcrumb</span>
|
|
12219
|
+
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span>
|
|
12220
|
+
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="n">view_name</span><span class="o">=</span><span class="s2">"dcim:device_list"</span><span class="p">,</span>
|
|
12221
|
+
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"All Devices"</span><span class="p">,</span>
|
|
12222
|
+
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="p">)</span>
|
|
12223
|
+
<a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="c1"># Will generate: ("/dcim/devices/", "All Devices")</span>
|
|
12224
|
+
<a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a>
|
|
12225
|
+
<a id="__codelineno-23-8" name="__codelineno-23-8" href="#__codelineno-23-8"></a><span class="c1"># Basic view name from context breadcrumb</span>
|
|
12226
|
+
<a id="__codelineno-23-9" name="__codelineno-23-9" href="#__codelineno-23-9"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span>
|
|
12227
|
+
<a id="__codelineno-23-10" name="__codelineno-23-10" href="#__codelineno-23-10"></a> <span class="n">view_name_key</span><span class="o">=</span><span class="s2">"list_url"</span><span class="p">,</span>
|
|
12228
|
+
<a id="__codelineno-23-11" name="__codelineno-23-11" href="#__codelineno-23-11"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"All Devices"</span><span class="p">,</span>
|
|
12229
|
+
<a id="__codelineno-23-12" name="__codelineno-23-12" href="#__codelineno-23-12"></a><span class="p">)</span>
|
|
12230
|
+
<a id="__codelineno-23-13" name="__codelineno-23-13" href="#__codelineno-23-13"></a><span class="c1"># Will generate: ("/dcim/devices/", "All Devices"); assuming there is "dcim:device_list" in context["list_url"]</span>
|
|
12231
|
+
<a id="__codelineno-23-14" name="__codelineno-23-14" href="#__codelineno-23-14"></a>
|
|
12232
|
+
<a id="__codelineno-23-15" name="__codelineno-23-15" href="#__codelineno-23-15"></a><span class="c1"># With reverse parameters</span>
|
|
12233
|
+
<a id="__codelineno-23-16" name="__codelineno-23-16" href="#__codelineno-23-16"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span>
|
|
12234
|
+
<a id="__codelineno-23-17" name="__codelineno-23-17" href="#__codelineno-23-17"></a> <span class="n">view_name</span><span class="o">=</span><span class="s2">"dcim:device"</span><span class="p">,</span>
|
|
12235
|
+
<a id="__codelineno-23-18" name="__codelineno-23-18" href="#__codelineno-23-18"></a> <span class="n">reverse_kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"pk"</span><span class="p">:</span> <span class="mi">123</span><span class="p">},</span>
|
|
12236
|
+
<a id="__codelineno-23-19" name="__codelineno-23-19" href="#__codelineno-23-19"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Device Details"</span><span class="p">,</span>
|
|
12237
|
+
<a id="__codelineno-23-20" name="__codelineno-23-20" href="#__codelineno-23-20"></a><span class="p">)</span>
|
|
12238
|
+
<a id="__codelineno-23-21" name="__codelineno-23-21" href="#__codelineno-23-21"></a><span class="c1"># Will generate: ("/dcim/devices/123", "Device Details")</span>
|
|
12239
|
+
<a id="__codelineno-23-22" name="__codelineno-23-22" href="#__codelineno-23-22"></a>
|
|
12240
|
+
<a id="__codelineno-23-23" name="__codelineno-23-23" href="#__codelineno-23-23"></a><span class="c1"># With query parameters</span>
|
|
12241
|
+
<a id="__codelineno-23-24" name="__codelineno-23-24" href="#__codelineno-23-24"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span>
|
|
12242
|
+
<a id="__codelineno-23-25" name="__codelineno-23-25" href="#__codelineno-23-25"></a> <span class="n">view_name</span><span class="o">=</span><span class="s2">"dcim:device_list"</span><span class="p">,</span>
|
|
12243
|
+
<a id="__codelineno-23-26" name="__codelineno-23-26" href="#__codelineno-23-26"></a> <span class="n">reverse_query_params</span><span class="o">=</span><span class="p">{</span><span class="s2">"status"</span><span class="p">:</span> <span class="s2">"active"</span><span class="p">},</span>
|
|
12244
|
+
<a id="__codelineno-23-27" name="__codelineno-23-27" href="#__codelineno-23-27"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Active Devices"</span><span class="p">,</span>
|
|
12245
|
+
<a id="__codelineno-23-28" name="__codelineno-23-28" href="#__codelineno-23-28"></a><span class="p">)</span>
|
|
12246
|
+
<a id="__codelineno-23-29" name="__codelineno-23-29" href="#__codelineno-23-29"></a><span class="c1"># Will generate: ("/dcim/devices/?status=active", "Active Devices")</span>
|
|
12247
|
+
<a id="__codelineno-23-30" name="__codelineno-23-30" href="#__codelineno-23-30"></a>
|
|
12248
|
+
<a id="__codelineno-23-31" name="__codelineno-23-31" href="#__codelineno-23-31"></a><span class="c1"># With dynamic parameters from context</span>
|
|
12249
|
+
<a id="__codelineno-23-32" name="__codelineno-23-32" href="#__codelineno-23-32"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span>
|
|
12250
|
+
<a id="__codelineno-23-33" name="__codelineno-23-33" href="#__codelineno-23-33"></a> <span class="n">view_name</span><span class="o">=</span><span class="s2">"dcim:device_detail"</span><span class="p">,</span>
|
|
12251
|
+
<a id="__codelineno-23-34" name="__codelineno-23-34" href="#__codelineno-23-34"></a> <span class="n">reverse_kwargs</span><span class="o">=</span><span class="k">lambda</span> <span class="n">ctx</span><span class="p">:</span> <span class="p">{</span><span class="s2">"pk"</span><span class="p">:</span> <span class="n">ctx</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>
|
|
12252
|
+
<a id="__codelineno-23-35" name="__codelineno-23-35" href="#__codelineno-23-35"></a> <span class="n">label</span><span class="o">=</span><span class="k">lambda</span> <span class="n">ctx</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Device: </span><span class="si">{</span><span class="n">ctx</span><span class="p">[</span><span class="s1">'object'</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
12253
|
+
<a id="__codelineno-23-36" name="__codelineno-23-36" href="#__codelineno-23-36"></a><span class="p">)</span>
|
|
12254
|
+
</code></pre></div>
|
|
12255
|
+
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.ViewNameBreadcrumbItem">Code reference</a></p>
|
|
12256
|
+
<h4 id="modelbreadcrumbitem-class"><code>ModelBreadcrumbItem</code> Class<a class="headerlink" href="#modelbreadcrumbitem-class" title="Permanent link">¶</a></h4>
|
|
12257
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="c1"># Basic model breadcrumb (uses plural verbose_name)</span>
|
|
12258
|
+
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="n">Device</span><span class="p">)</span>
|
|
12259
|
+
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a><span class="c1"># Will generate: ("/dcim/devices/", "Devices")</span>
|
|
12260
|
+
<a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a>
|
|
12261
|
+
<a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a><span class="c1"># Singular form</span>
|
|
12262
|
+
<a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span>
|
|
12263
|
+
<a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a> <span class="n">model</span><span class="o">=</span><span class="n">Device</span><span class="p">,</span>
|
|
12264
|
+
<a id="__codelineno-24-8" name="__codelineno-24-8" href="#__codelineno-24-8"></a> <span class="n">model_label_type</span><span class="o">=</span><span class="s2">"singular"</span><span class="p">,</span>
|
|
12265
|
+
<a id="__codelineno-24-9" name="__codelineno-24-9" href="#__codelineno-24-9"></a><span class="p">)</span>
|
|
12266
|
+
<a id="__codelineno-24-10" name="__codelineno-24-10" href="#__codelineno-24-10"></a><span class="c1"># Will generate: ("/dcim/devices/", "Device")</span>
|
|
12267
|
+
<a id="__codelineno-24-11" name="__codelineno-24-11" href="#__codelineno-24-11"></a>
|
|
12268
|
+
<a id="__codelineno-24-12" name="__codelineno-24-12" href="#__codelineno-24-12"></a><span class="c1"># Different URL action</span>
|
|
12269
|
+
<a id="__codelineno-24-13" name="__codelineno-24-13" href="#__codelineno-24-13"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span>
|
|
12270
|
+
<a id="__codelineno-24-14" name="__codelineno-24-14" href="#__codelineno-24-14"></a> <span class="n">model</span><span class="o">=</span><span class="n">Device</span><span class="p">,</span>
|
|
12271
|
+
<a id="__codelineno-24-15" name="__codelineno-24-15" href="#__codelineno-24-15"></a> <span class="n">model_url_action</span><span class="o">=</span><span class="s2">"add"</span><span class="p">,</span>
|
|
12272
|
+
<a id="__codelineno-24-16" name="__codelineno-24-16" href="#__codelineno-24-16"></a><span class="p">)</span>
|
|
12273
|
+
<a id="__codelineno-24-17" name="__codelineno-24-17" href="#__codelineno-24-17"></a><span class="c1"># Will generate: ("/dcim/devices/add/", "Devices")</span>
|
|
12274
|
+
<a id="__codelineno-24-18" name="__codelineno-24-18" href="#__codelineno-24-18"></a>
|
|
12275
|
+
<a id="__codelineno-24-19" name="__codelineno-24-19" href="#__codelineno-24-19"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ModelKeyBreadcrumbItem</span><span class="p">(</span>
|
|
12276
|
+
<a id="__codelineno-24-20" name="__codelineno-24-20" href="#__codelineno-24-20"></a> <span class="n">model_key</span><span class="o">=</span><span class="s2">"parent_model"</span><span class="p">,</span>
|
|
12277
|
+
<a id="__codelineno-24-21" name="__codelineno-24-21" href="#__codelineno-24-21"></a> <span class="n">model_label_type</span><span class="o">=</span><span class="s2">"singular"</span><span class="p">,</span>
|
|
12278
|
+
<a id="__codelineno-24-22" name="__codelineno-24-22" href="#__codelineno-24-22"></a><span class="p">)</span>
|
|
12279
|
+
<a id="__codelineno-24-23" name="__codelineno-24-23" href="#__codelineno-24-23"></a><span class="c1"># Will generate: ("/dcim/devices/", "Device") - assuming that "parent model" is Device</span>
|
|
12280
|
+
<a id="__codelineno-24-24" name="__codelineno-24-24" href="#__codelineno-24-24"></a>
|
|
12281
|
+
<a id="__codelineno-24-25" name="__codelineno-24-25" href="#__codelineno-24-25"></a><span class="c1"># Using dotted model path</span>
|
|
12282
|
+
<a id="__codelineno-24-26" name="__codelineno-24-26" href="#__codelineno-24-26"></a><span class="n">item</span> <span class="o">=</span> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="s2">"dcim.device"</span><span class="p">)</span>
|
|
12283
|
+
<a id="__codelineno-24-27" name="__codelineno-24-27" href="#__codelineno-24-27"></a><span class="c1"># Will generate: ("/dcim/devices/", "Devices")</span>
|
|
12284
|
+
</code></pre></div>
|
|
12285
|
+
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.ModelBreadcrumbItem">Code reference</a></p>
|
|
12286
|
+
<h4 id="instancebreadcrumbitem-class"><code>InstanceBreadcrumbItem</code> Class<a class="headerlink" href="#instancebreadcrumbitem-class" title="Permanent link">¶</a></h4>
|
|
12287
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="c1"># Basic usage - looks for instance in context["object"]</span>
|
|
12288
|
+
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="n">item</span> <span class="o">=</span> <span class="n">InstanceBreadcrumbItem</span><span class="p">()</span>
|
|
12289
|
+
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a><span class="c1"># Uses default instance_key="object"</span>
|
|
12290
|
+
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a>
|
|
12291
|
+
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a><span class="c1"># Custom context key</span>
|
|
12292
|
+
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a><span class="n">item</span> <span class="o">=</span> <span class="n">InstanceBreadcrumbItem</span><span class="p">(</span><span class="n">instance_key</span><span class="o">=</span><span class="s2">"device"</span><span class="p">)</span>
|
|
12293
|
+
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a>
|
|
12294
|
+
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a><span class="c1"># Custom label</span>
|
|
12295
|
+
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a><span class="n">item</span> <span class="o">=</span> <span class="n">InstanceBreadcrumbItem</span><span class="p">(</span>
|
|
12296
|
+
<a id="__codelineno-25-10" name="__codelineno-25-10" href="#__codelineno-25-10"></a> <span class="n">instance_key</span><span class="o">=</span><span class="s2">"object"</span><span class="p">,</span>
|
|
12297
|
+
<a id="__codelineno-25-11" name="__codelineno-25-11" href="#__codelineno-25-11"></a> <span class="n">label</span><span class="o">=</span><span class="s2">"Current Item"</span>
|
|
12298
|
+
<a id="__codelineno-25-12" name="__codelineno-25-12" href="#__codelineno-25-12"></a><span class="p">)</span>
|
|
12299
|
+
<a id="__codelineno-25-13" name="__codelineno-25-13" href="#__codelineno-25-13"></a>
|
|
12300
|
+
<a id="__codelineno-25-14" name="__codelineno-25-14" href="#__codelineno-25-14"></a><span class="c1"># Dynamic label from context</span>
|
|
12301
|
+
<a id="__codelineno-25-15" name="__codelineno-25-15" href="#__codelineno-25-15"></a><span class="n">item</span> <span class="o">=</span> <span class="n">InstanceBreadcrumbItem</span><span class="p">(</span>
|
|
12302
|
+
<a id="__codelineno-25-16" name="__codelineno-25-16" href="#__codelineno-25-16"></a> <span class="n">label</span><span class="o">=</span><span class="k">lambda</span> <span class="n">ctx</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Editing </span><span class="si">{</span><span class="n">ctx</span><span class="p">[</span><span class="s1">'object'</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
|
12303
|
+
<a id="__codelineno-25-17" name="__codelineno-25-17" href="#__codelineno-25-17"></a><span class="p">)</span>
|
|
12304
|
+
</code></pre></div>
|
|
12305
|
+
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.InstanceBreadcrumbItem">Code reference</a></p>
|
|
12306
|
+
<h3 id="customizing-breadcrumbs">Customizing Breadcrumbs<a class="headerlink" href="#customizing-breadcrumbs" title="Permanent link">¶</a></h3>
|
|
12307
|
+
<p>By default <code>Breadcrumbs</code> class uses two actions: <code>list</code> and <code>detail</code>. However, you can specify your custom action,
|
|
12308
|
+
or just pass to the items one built-in action to override default only for the chosen view actions.</p>
|
|
12309
|
+
<p>If there is no <code>view_action</code> in the context it will use <code>list</code> by default.</p>
|
|
12310
|
+
<p>If there is no <code>detail</code> in the context it will assume <code>detail=False</code> by default.</p>
|
|
12311
|
+
<p><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.Breadcrumbs">Code reference</a></p>
|
|
12312
|
+
<h4 id="example-1-simple-override">Example 1: Simple Override<a class="headerlink" href="#example-1-simple-override" title="Permanent link">¶</a></h4>
|
|
12313
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="c1"># Replace default breadcrumbs for create action</span>
|
|
12314
|
+
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="n">custom_breadcrumbs</span> <span class="o">=</span> <span class="n">Breadcrumbs</span><span class="p">(</span>
|
|
12315
|
+
<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a> <span class="n">items</span><span class="o">=</span><span class="p">{</span>
|
|
12316
|
+
<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a> <span class="s1">'create'</span><span class="p">:</span> <span class="p">[</span>
|
|
12317
|
+
<a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a> <span class="n">ViewNameBreadcrumbItem</span><span class="p">(</span><span class="n">view_name</span><span class="o">=</span><span class="s2">"home"</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Home"</span><span class="p">),</span>
|
|
12318
|
+
<a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model_key</span><span class="o">=</span><span class="s2">"model"</span><span class="p">),</span>
|
|
12319
|
+
<a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model_key</span><span class="o">=</span><span class="s2">"model"</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">"add"</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Add New"</span><span class="p">)</span>
|
|
12320
|
+
<a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a> <span class="p">]</span>
|
|
12321
|
+
<a id="__codelineno-26-9" name="__codelineno-26-9" href="#__codelineno-26-9"></a> <span class="p">}</span>
|
|
12322
|
+
<a id="__codelineno-26-10" name="__codelineno-26-10" href="#__codelineno-26-10"></a><span class="p">)</span>
|
|
12323
|
+
</code></pre></div>
|
|
12324
|
+
<h4 id="example-2-complex-navigation">Example 2: Complex Navigation<a class="headerlink" href="#example-2-complex-navigation" title="Permanent link">¶</a></h4>
|
|
12325
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="c1"># Multi-level hierarchy for nested objects</span>
|
|
12326
|
+
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="n">nested_breadcrumbs</span> <span class="o">=</span> <span class="n">Breadcrumbs</span><span class="p">(</span>
|
|
12327
|
+
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> <span class="n">items</span><span class="o">=</span><span class="p">{</span>
|
|
12328
|
+
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> <span class="s1">'retrieve'</span><span class="p">:</span> <span class="p">[</span>
|
|
12329
|
+
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="s2">"dcim.location"</span><span class="p">,</span> <span class="n">model_label_type</span><span class="o">=</span><span class="s2">"plural"</span><span class="p">),</span>
|
|
12330
|
+
<a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a> <span class="n">InstanceBreadcrumbItem</span><span class="p">(</span>
|
|
12331
|
+
<a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a> <span class="n">instance_key</span><span class="o">=</span><span class="s2">"object.location"</span><span class="p">,</span>
|
|
12332
|
+
<a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a> <span class="n">label</span><span class="o">=</span><span class="k">lambda</span> <span class="n">ctx</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Site: </span><span class="si">{</span><span class="n">ctx</span><span class="p">[</span><span class="s1">'object'</span><span class="p">]</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
|
12333
|
+
<a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a> <span class="p">),</span>
|
|
12334
|
+
<a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a> <span class="n">ModelBreadcrumbItem</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="s2">"dcim.device"</span><span class="p">,</span> <span class="n">model_label_type</span><span class="o">=</span><span class="s2">"plural"</span><span class="p">),</span>
|
|
12335
|
+
<a id="__codelineno-27-11" name="__codelineno-27-11" href="#__codelineno-27-11"></a> <span class="n">InstanceBreadcrumbItem</span><span class="p">(),</span>
|
|
12336
|
+
<a id="__codelineno-27-12" name="__codelineno-27-12" href="#__codelineno-27-12"></a> <span class="p">]</span>
|
|
12337
|
+
<a id="__codelineno-27-13" name="__codelineno-27-13" href="#__codelineno-27-13"></a> <span class="p">}</span>
|
|
12338
|
+
<a id="__codelineno-27-14" name="__codelineno-27-14" href="#__codelineno-27-14"></a><span class="p">)</span>
|
|
12339
|
+
</code></pre></div>
|
|
11905
12340
|
<h2 id="complete-example">Complete Example<a class="headerlink" href="#complete-example" title="Permanent link">¶</a></h2>
|
|
11906
|
-
<div class="highlight"><span class="filename">views.py</span><pre><span></span><code><a id="__codelineno-
|
|
11907
|
-
<a id="__codelineno-
|
|
11908
|
-
<a id="__codelineno-
|
|
11909
|
-
<a id="__codelineno-
|
|
11910
|
-
<a id="__codelineno-
|
|
11911
|
-
<a id="__codelineno-
|
|
11912
|
-
<a id="__codelineno-
|
|
11913
|
-
<a id="__codelineno-
|
|
11914
|
-
<a id="__codelineno-
|
|
11915
|
-
<a id="__codelineno-
|
|
11916
|
-
<a id="__codelineno-
|
|
11917
|
-
<a id="__codelineno-
|
|
11918
|
-
<a id="__codelineno-
|
|
11919
|
-
<a id="__codelineno-
|
|
11920
|
-
<a id="__codelineno-
|
|
11921
|
-
<a id="__codelineno-
|
|
11922
|
-
<a id="__codelineno-
|
|
11923
|
-
<a id="__codelineno-
|
|
11924
|
-
<a id="__codelineno-
|
|
11925
|
-
<a id="__codelineno-
|
|
11926
|
-
<a id="__codelineno-
|
|
11927
|
-
<a id="__codelineno-
|
|
11928
|
-
<a id="__codelineno-
|
|
11929
|
-
<a id="__codelineno-
|
|
11930
|
-
<a id="__codelineno-
|
|
11931
|
-
<a id="__codelineno-
|
|
11932
|
-
<a id="__codelineno-
|
|
11933
|
-
<a id="__codelineno-
|
|
11934
|
-
<a id="__codelineno-
|
|
11935
|
-
<a id="__codelineno-
|
|
11936
|
-
<a id="__codelineno-
|
|
11937
|
-
<a id="__codelineno-
|
|
11938
|
-
<a id="__codelineno-
|
|
11939
|
-
<a id="__codelineno-
|
|
11940
|
-
<a id="__codelineno-
|
|
11941
|
-
<a id="__codelineno-
|
|
11942
|
-
<a id="__codelineno-
|
|
11943
|
-
<a id="__codelineno-
|
|
11944
|
-
<a id="__codelineno-
|
|
11945
|
-
<a id="__codelineno-
|
|
11946
|
-
<a id="__codelineno-
|
|
11947
|
-
<a id="__codelineno-
|
|
11948
|
-
<a id="__codelineno-
|
|
11949
|
-
<a id="__codelineno-
|
|
11950
|
-
<a id="__codelineno-
|
|
11951
|
-
<a id="__codelineno-
|
|
11952
|
-
<a id="__codelineno-
|
|
12341
|
+
<div class="highlight"><span class="filename">views.py</span><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="kn">from</span> <span class="nn">nautobot.apps.ui</span> <span class="kn">import</span> <span class="p">(</span>
|
|
12342
|
+
<a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a> <span class="n">SectionChoices</span><span class="p">,</span>
|
|
12343
|
+
<a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a> <span class="n">ObjectFieldsPanel</span><span class="p">,</span>
|
|
12344
|
+
<a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a> <span class="n">ObjectDetailContent</span><span class="p">,</span>
|
|
12345
|
+
<a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a> <span class="n">StatsPanel</span><span class="p">,</span>
|
|
12346
|
+
<a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a><span class="p">)</span>
|
|
12347
|
+
<a id="__codelineno-28-7" name="__codelineno-28-7" href="#__codelineno-28-7"></a><span class="kn">from</span> <span class="nn">nautobot.apps</span> <span class="kn">import</span> <span class="n">views</span>
|
|
12348
|
+
<a id="__codelineno-28-8" name="__codelineno-28-8" href="#__codelineno-28-8"></a><span class="kn">from</span> <span class="nn">your_app.models</span> <span class="kn">import</span> <span class="n">Location</span><span class="p">,</span> <span class="n">Device</span><span class="p">,</span> <span class="n">Circuit</span>
|
|
12349
|
+
<a id="__codelineno-28-9" name="__codelineno-28-9" href="#__codelineno-28-9"></a>
|
|
12350
|
+
<a id="__codelineno-28-10" name="__codelineno-28-10" href="#__codelineno-28-10"></a><span class="k">class</span> <span class="nc">LocationUIViewSet</span><span class="p">(</span><span class="n">views</span><span class="o">.</span><span class="n">NautobotUIViewSet</span><span class="p">):</span>
|
|
12351
|
+
<a id="__codelineno-28-11" name="__codelineno-28-11" href="#__codelineno-28-11"></a> <span class="n">queryset</span> <span class="o">=</span> <span class="n">Location</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
12352
|
+
<a id="__codelineno-28-12" name="__codelineno-28-12" href="#__codelineno-28-12"></a>
|
|
12353
|
+
<a id="__codelineno-28-13" name="__codelineno-28-13" href="#__codelineno-28-13"></a> <span class="n">object_detail_content</span> <span class="o">=</span> <span class="n">ObjectDetailContent</span><span class="p">(</span>
|
|
12354
|
+
<a id="__codelineno-28-14" name="__codelineno-28-14" href="#__codelineno-28-14"></a> <span class="n">panels</span><span class="o">=</span><span class="p">[</span>
|
|
12355
|
+
<a id="__codelineno-28-15" name="__codelineno-28-15" href="#__codelineno-28-15"></a> <span class="n">ObjectFieldsPanel</span><span class="p">(</span>
|
|
12356
|
+
<a id="__codelineno-28-16" name="__codelineno-28-16" href="#__codelineno-28-16"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
12357
|
+
<a id="__codelineno-28-17" name="__codelineno-28-17" href="#__codelineno-28-17"></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>
|
|
12358
|
+
<a id="__codelineno-28-18" name="__codelineno-28-18" href="#__codelineno-28-18"></a> <span class="n">fields</span><span class="o">=</span><span class="s2">"__all__"</span><span class="p">,</span>
|
|
12359
|
+
<a id="__codelineno-28-19" name="__codelineno-28-19" href="#__codelineno-28-19"></a> <span class="p">),</span>
|
|
12360
|
+
<a id="__codelineno-28-20" name="__codelineno-28-20" href="#__codelineno-28-20"></a> <span class="n">StatsPanel</span><span class="p">(</span>
|
|
12361
|
+
<a id="__codelineno-28-21" name="__codelineno-28-21" href="#__codelineno-28-21"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
|
12362
|
+
<a id="__codelineno-28-22" name="__codelineno-28-22" href="#__codelineno-28-22"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">RIGHT_HALF</span><span class="p">,</span>
|
|
12363
|
+
<a id="__codelineno-28-23" name="__codelineno-28-23" href="#__codelineno-28-23"></a> <span class="n">filter_name</span><span class="o">=</span><span class="s2">"location"</span><span class="p">,</span>
|
|
12364
|
+
<a id="__codelineno-28-24" name="__codelineno-28-24" href="#__codelineno-28-24"></a> <span class="n">related_models</span><span class="o">=</span><span class="p">[</span>
|
|
12365
|
+
<a id="__codelineno-28-25" name="__codelineno-28-25" href="#__codelineno-28-25"></a> <span class="n">Device</span><span class="p">,</span>
|
|
12366
|
+
<a id="__codelineno-28-26" name="__codelineno-28-26" href="#__codelineno-28-26"></a> <span class="p">(</span><span class="n">Circuit</span><span class="p">,</span> <span class="s2">"circuit_terminations__location__in"</span><span class="p">)</span>
|
|
12367
|
+
<a id="__codelineno-28-27" name="__codelineno-28-27" href="#__codelineno-28-27"></a> <span class="p">],</span>
|
|
12368
|
+
<a id="__codelineno-28-28" name="__codelineno-28-28" href="#__codelineno-28-28"></a> <span class="p">),</span>
|
|
12369
|
+
<a id="__codelineno-28-29" name="__codelineno-28-29" href="#__codelineno-28-29"></a> <span class="n">GroupedKeyValueTablePanel</span><span class="p">(</span>
|
|
12370
|
+
<a id="__codelineno-28-30" name="__codelineno-28-30" href="#__codelineno-28-30"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
|
|
12371
|
+
<a id="__codelineno-28-31" name="__codelineno-28-31" href="#__codelineno-28-31"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
12372
|
+
<a id="__codelineno-28-32" name="__codelineno-28-32" href="#__codelineno-28-32"></a> <span class="n">body_id</span><span class="o">=</span><span class="s2">"custom-fields"</span><span class="p">,</span>
|
|
12373
|
+
<a id="__codelineno-28-33" name="__codelineno-28-33" href="#__codelineno-28-33"></a> <span class="n">data</span><span class="o">=</span><span class="p">{</span>
|
|
12374
|
+
<a id="__codelineno-28-34" name="__codelineno-28-34" href="#__codelineno-28-34"></a> <span class="s2">"Network"</span><span class="p">:</span> <span class="p">{</span>
|
|
12375
|
+
<a id="__codelineno-28-35" name="__codelineno-28-35" href="#__codelineno-28-35"></a> <span class="s2">"VLAN"</span><span class="p">:</span> <span class="s2">"100"</span><span class="p">,</span>
|
|
12376
|
+
<a id="__codelineno-28-36" name="__codelineno-28-36" href="#__codelineno-28-36"></a> <span class="s2">"IP Range"</span><span class="p">:</span> <span class="s2">"192.168.1.0/24"</span>
|
|
12377
|
+
<a id="__codelineno-28-37" name="__codelineno-28-37" href="#__codelineno-28-37"></a> <span class="p">}</span>
|
|
12378
|
+
<a id="__codelineno-28-38" name="__codelineno-28-38" href="#__codelineno-28-38"></a> <span class="p">},</span>
|
|
12379
|
+
<a id="__codelineno-28-39" name="__codelineno-28-39" href="#__codelineno-28-39"></a> <span class="p">),</span>
|
|
12380
|
+
<a id="__codelineno-28-40" name="__codelineno-28-40" href="#__codelineno-28-40"></a> <span class="n">ObjectTextPanel</span><span class="p">(</span>
|
|
12381
|
+
<a id="__codelineno-28-41" name="__codelineno-28-41" href="#__codelineno-28-41"></a> <span class="n">weight</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span>
|
|
12382
|
+
<a id="__codelineno-28-42" name="__codelineno-28-42" href="#__codelineno-28-42"></a> <span class="n">section</span><span class="o">=</span><span class="n">SectionChoices</span><span class="o">.</span><span class="n">FULL_WIDTH</span><span class="p">,</span>
|
|
12383
|
+
<a id="__codelineno-28-43" name="__codelineno-28-43" href="#__codelineno-28-43"></a> <span class="n">object_field</span><span class="o">=</span><span class="s2">"description"</span><span class="p">,</span>
|
|
12384
|
+
<a id="__codelineno-28-44" name="__codelineno-28-44" href="#__codelineno-28-44"></a> <span class="n">render_as</span><span class="o">=</span><span class="n">BaseTextPanel</span><span class="o">.</span><span class="n">RenderOptions</span><span class="o">.</span><span class="n">MARKDOWN</span><span class="p">,</span>
|
|
12385
|
+
<a id="__codelineno-28-45" name="__codelineno-28-45" href="#__codelineno-28-45"></a> <span class="p">),</span>
|
|
12386
|
+
<a id="__codelineno-28-46" name="__codelineno-28-46" href="#__codelineno-28-46"></a> <span class="p">]</span>
|
|
12387
|
+
<a id="__codelineno-28-47" name="__codelineno-28-47" href="#__codelineno-28-47"></a> <span class="p">)</span>
|
|
11953
12388
|
</code></pre></div>
|
|
11954
12389
|
<h2 id="layouts-and-sections">Layouts and Sections<a class="headerlink" href="#layouts-and-sections" title="Permanent link">¶</a></h2>
|
|
11955
12390
|
<h3 id="render-options"><a href="../../code-reference/nautobot/apps/ui.html#nautobot.apps.ui.BaseTextPanel.RenderOptions">Render Options</a><a class="headerlink" href="#render-options" title="Permanent link">¶</a></h3>
|
|
@@ -12110,7 +12545,7 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
12110
12545
|
|
|
12111
12546
|
|
|
12112
12547
|
<a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
|
|
12113
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free
|
|
12548
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
|
|
12114
12549
|
</a>
|
|
12115
12550
|
|
|
12116
12551
|
|
|
@@ -12118,7 +12553,7 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
12118
12553
|
|
|
12119
12554
|
|
|
12120
12555
|
<a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
|
|
12121
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free
|
|
12556
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M549.7 124.1c-6.2-23.7-24.8-42.3-48.3-48.6C458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5c-23.5 6.3-42 24.9-48.3 48.6C15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8C117.3 448 288.1 448 288.1 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6V175.2l142.7 81.2z"/></svg>
|
|
12122
12557
|
</a>
|
|
12123
12558
|
|
|
12124
12559
|
|
|
@@ -12126,7 +12561,7 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
12126
12561
|
|
|
12127
12562
|
|
|
12128
12563
|
<a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
|
|
12129
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free
|
|
12564
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M94.1 315.1c0 25.9-21.2 47.1-47.1 47.1S0 341 0 315.1 21.2 268 47.1 268h47.1v47.1zm23.7 0c0-25.9 21.2-47.1 47.1-47.1s47.1 21.2 47.1 47.1v117.8c0 25.9-21.2 47.1-47.1 47.1s-47.1-21.2-47.1-47.1zm47.1-189c-25.9 0-47.1-21.2-47.1-47.1s21.2-47 47.1-47S212 53.2 212 79.1v47.1h-47.1zm0 23.7c25.9 0 47.1 21.2 47.1 47.1S190.8 244 164.9 244H47.1C21.2 244 0 222.8 0 196.9s21.2-47.1 47.1-47.1zm189 47.1c0-25.9 21.2-47.1 47.1-47.1s47 21.2 47 47.1-21.2 47.1-47.1 47.1h-47.1v-47.1zm-23.7 0c0 25.9-21.2 47.1-47.1 47.1S236 222.8 236 196.9V79.1c0-25.9 21.2-47.1 47.1-47.1s47.1 21.2 47.1 47.1zm-47.1 189c25.9 0 47.1 21.2 47.1 47.1s-21.2 47-47.1 47-47.1-21.2-47.1-47.1v-47.1h47.1zm0-23.7c-25.9 0-47.1-21.2-47.1-47.1s21.2-47.1 47.1-47.1h117.8c25.9 0 47.1 21.2 47.1 47.1s-21.2 47.1-47.1 47.1z"/></svg>
|
|
12130
12565
|
</a>
|
|
12131
12566
|
|
|
12132
12567
|
|
|
@@ -12134,7 +12569,7 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
12134
12569
|
|
|
12135
12570
|
|
|
12136
12571
|
<a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
|
|
12137
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
12572
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
|
12138
12573
|
</a>
|
|
12139
12574
|
|
|
12140
12575
|
|
|
@@ -12142,7 +12577,7 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
12142
12577
|
|
|
12143
12578
|
|
|
12144
12579
|
<a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
|
|
12145
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free
|
|
12580
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
|
|
12146
12581
|
</a>
|
|
12147
12582
|
|
|
12148
12583
|
</div>
|
|
@@ -12162,7 +12597,7 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
12162
12597
|
<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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
|
|
12163
12598
|
|
|
12164
12599
|
|
|
12165
|
-
<script src="../../assets/javascripts/bundle.
|
|
12600
|
+
<script src="../../assets/javascripts/bundle.50899def.min.js"></script>
|
|
12166
12601
|
|
|
12167
12602
|
|
|
12168
12603
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|