nautobot 2.4.10__py3-none-any.whl → 2.4.11__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/cloud/tests/test_views.py +13 -1
- nautobot/cloud/views.py +39 -9
- nautobot/core/celery/__init__.py +21 -0
- nautobot/core/celery/encoders.py +3 -0
- nautobot/core/forms/forms.py +4 -1
- nautobot/core/jobs/bulk_actions.py +8 -8
- nautobot/core/jobs/cleanup.py +11 -0
- nautobot/core/management/commands/generate_test_data.py +2 -1
- nautobot/core/templates/generic/object_retrieve.html +1 -1
- nautobot/core/testing/mixins.py +19 -1
- nautobot/core/testing/views.py +104 -8
- nautobot/core/tests/test_jobs.py +20 -4
- nautobot/core/tests/test_utils.py +193 -0
- nautobot/core/tests/test_views_utils.py +53 -2
- nautobot/core/ui/object_detail.py +4 -0
- nautobot/core/utils/lookup.py +4 -2
- nautobot/core/utils/module_loading.py +86 -58
- nautobot/core/views/generic.py +2 -12
- nautobot/core/views/mixins.py +19 -1
- nautobot/core/views/renderers.py +4 -13
- nautobot/core/views/utils.py +16 -0
- nautobot/dcim/api/serializers.py +13 -0
- nautobot/dcim/api/urls.py +1 -0
- nautobot/dcim/api/views.py +20 -0
- nautobot/dcim/apps.py +1 -0
- nautobot/dcim/factory.py +11 -0
- nautobot/dcim/filters/__init__.py +110 -0
- nautobot/dcim/forms.py +205 -19
- nautobot/dcim/migrations/0070_modulefamily_models.py +92 -0
- nautobot/dcim/models/__init__.py +2 -0
- nautobot/dcim/models/device_component_templates.py +14 -0
- nautobot/dcim/models/device_components.py +13 -1
- nautobot/dcim/models/devices.py +62 -0
- nautobot/dcim/navigation.py +16 -0
- nautobot/dcim/tables/__init__.py +2 -0
- nautobot/dcim/tables/devices.py +48 -0
- nautobot/dcim/tables/devicetypes.py +35 -1
- nautobot/dcim/tables/template_code.py +2 -0
- nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +1 -90
- nautobot/dcim/templates/dcim/inc/cable_toggle_buttons.html +1 -1
- nautobot/dcim/templates/dcim/interfaceredundancygroup_retrieve.html +1 -63
- nautobot/dcim/templates/dcim/location.html +2 -249
- nautobot/dcim/templates/dcim/location_edit.html +2 -38
- nautobot/dcim/templates/dcim/location_retrieve.html +249 -0
- nautobot/dcim/templates/dcim/location_update.html +38 -0
- nautobot/dcim/templates/dcim/module_update.html +1 -0
- nautobot/dcim/templates/dcim/modulebay_retrieve.html +93 -1
- nautobot/dcim/templates/dcim/modulefamily_retrieve.html +31 -0
- nautobot/dcim/templates/dcim/moduletype_retrieve.html +6 -0
- nautobot/dcim/templates/dcim/powerfeed_retrieve.html +1 -160
- nautobot/dcim/tests/test_api.py +35 -0
- nautobot/dcim/tests/test_filters.py +102 -3
- nautobot/dcim/tests/test_models.py +146 -0
- nautobot/dcim/tests/test_views.py +70 -97
- nautobot/dcim/urls.py +4 -22
- nautobot/dcim/views.py +439 -153
- nautobot/extras/api/views.py +9 -2
- nautobot/extras/datasources/git.py +11 -3
- nautobot/extras/forms/forms.py +9 -5
- nautobot/extras/jobs.py +4 -2
- nautobot/extras/models/datasources.py +5 -8
- nautobot/extras/models/jobs.py +5 -0
- nautobot/extras/plugins/__init__.py +3 -0
- nautobot/extras/tables.py +40 -3
- nautobot/extras/templates/extras/configcontext.html +2 -220
- nautobot/extras/templates/extras/configcontext_edit.html +2 -50
- nautobot/extras/templates/extras/configcontext_retrieve.html +2 -0
- nautobot/extras/templates/extras/configcontext_update.html +50 -0
- nautobot/extras/templates/extras/configcontextschema.html +2 -48
- nautobot/extras/templates/extras/configcontextschema_edit.html +2 -19
- nautobot/extras/templates/extras/configcontextschema_retrieve.html +48 -0
- nautobot/extras/templates/extras/configcontextschema_update.html +19 -0
- nautobot/extras/templates/extras/inc/configcontext_data.html +1 -0
- nautobot/extras/templates/extras/inc/json_data.html +1 -1
- nautobot/extras/templates/extras/inc/json_format.html +2 -2
- nautobot/extras/templates/extras/job_edit.html +12 -6
- nautobot/extras/templates/extras/tag.html +2 -52
- nautobot/extras/templates/extras/tag_edit.html +2 -15
- nautobot/extras/templates/extras/tag_retrieve.html +52 -0
- nautobot/extras/templates/extras/tag_update.html +15 -0
- nautobot/extras/templates/extras/team_retrieve.html +2 -2
- nautobot/extras/tests/test_api.py +15 -15
- nautobot/extras/tests/test_filters.py +4 -4
- nautobot/extras/tests/test_jobs.py +23 -10
- nautobot/extras/tests/test_models.py +19 -8
- nautobot/extras/tests/test_plugins.py +6 -3
- nautobot/extras/tests/test_views.py +66 -11
- nautobot/extras/urls.py +4 -134
- nautobot/extras/views.py +113 -158
- nautobot/ipam/models.py +19 -4
- nautobot/ipam/tables.py +19 -0
- nautobot/ipam/templates/ipam/vlan.html +2 -84
- nautobot/ipam/templates/ipam/vlan_edit.html +2 -24
- nautobot/ipam/templates/ipam/vlan_retrieve.html +84 -0
- nautobot/ipam/templates/ipam/vlan_update.html +24 -0
- nautobot/ipam/tests/test_views.py +5 -0
- nautobot/ipam/urls.py +1 -21
- nautobot/ipam/views.py +45 -70
- nautobot/project-static/docs/404.html +31 -8
- nautobot/project-static/docs/apps/index.html +31 -8
- nautobot/project-static/docs/apps/nautobot-apps.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/events.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +120 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +31 -8
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +31 -8
- nautobot/project-static/docs/development/apps/api/configuration-view.html +31 -8
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +31 -8
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +31 -8
- nautobot/project-static/docs/development/apps/api/models/global-search.html +31 -8
- nautobot/project-static/docs/development/apps/api/models/graphql.html +31 -8
- nautobot/project-static/docs/development/apps/api/models/index.html +31 -8
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +40 -8
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +32 -9
- nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +31 -8
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +31 -8
- nautobot/project-static/docs/development/apps/api/prometheus.html +31 -8
- nautobot/project-static/docs/development/apps/api/setup.html +31 -8
- nautobot/project-static/docs/development/apps/api/testing.html +31 -8
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +31 -8
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +31 -8
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +31 -8
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +31 -8
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/base-template.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/index.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/notes.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +31 -8
- nautobot/project-static/docs/development/apps/api/views/urls.html +31 -8
- nautobot/project-static/docs/development/apps/index.html +31 -8
- nautobot/project-static/docs/development/apps/migration/code-updates.html +31 -8
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +31 -8
- nautobot/project-static/docs/development/apps/migration/from-v1.html +31 -8
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +31 -8
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +31 -8
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +31 -8
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +31 -8
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +31 -8
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +31 -8
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +31 -8
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +31 -8
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +31 -8
- nautobot/project-static/docs/development/core/application-registry.html +31 -8
- nautobot/project-static/docs/development/core/best-practices.html +31 -8
- nautobot/project-static/docs/development/core/bootstrap-ui.html +31 -8
- nautobot/project-static/docs/development/core/caching.html +31 -8
- nautobot/project-static/docs/development/core/controllers.html +31 -8
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +31 -8
- nautobot/project-static/docs/development/core/generic-views.html +31 -8
- nautobot/project-static/docs/development/core/getting-started.html +31 -8
- nautobot/project-static/docs/development/core/homepage.html +31 -8
- nautobot/project-static/docs/development/core/index.html +31 -8
- nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +31 -8
- nautobot/project-static/docs/development/core/model-checklist.html +31 -8
- nautobot/project-static/docs/development/core/model-features.html +31 -8
- nautobot/project-static/docs/development/core/natural-keys.html +31 -8
- nautobot/project-static/docs/development/core/navigation-menu.html +31 -8
- nautobot/project-static/docs/development/core/release-checklist.html +31 -8
- nautobot/project-static/docs/development/core/role-internals.html +31 -8
- nautobot/project-static/docs/development/core/settings.html +31 -8
- nautobot/project-static/docs/development/core/style-guide.html +31 -8
- nautobot/project-static/docs/development/core/templates.html +31 -8
- nautobot/project-static/docs/development/core/testing.html +31 -8
- nautobot/project-static/docs/development/core/ui-component-framework.html +31 -8
- nautobot/project-static/docs/development/core/user-preferences.html +31 -8
- nautobot/project-static/docs/development/index.html +31 -8
- nautobot/project-static/docs/development/jobs/getting-started.html +35 -8
- nautobot/project-static/docs/development/jobs/index.html +31 -8
- nautobot/project-static/docs/development/jobs/installation.html +31 -8
- nautobot/project-static/docs/development/jobs/job-extensions.html +31 -8
- nautobot/project-static/docs/development/jobs/job-logging.html +31 -8
- nautobot/project-static/docs/development/jobs/job-patterns.html +31 -8
- nautobot/project-static/docs/development/jobs/job-structure.html +31 -8
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +31 -8
- nautobot/project-static/docs/development/jobs/testing.html +31 -8
- nautobot/project-static/docs/index.html +31 -8
- nautobot/project-static/docs/insert-analytics.sh +36 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +31 -8
- nautobot/project-static/docs/overview/design_philosophy.html +31 -8
- nautobot/project-static/docs/release-notes/index.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.0.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.1.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.2.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.3.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.4.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.5.html +31 -8
- nautobot/project-static/docs/release-notes/version-1.6.html +31 -8
- nautobot/project-static/docs/release-notes/version-2.0.html +31 -8
- nautobot/project-static/docs/release-notes/version-2.1.html +31 -8
- nautobot/project-static/docs/release-notes/version-2.2.html +31 -8
- nautobot/project-static/docs/release-notes/version-2.3.html +31 -8
- nautobot/project-static/docs/release-notes/version-2.4.html +252 -8
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +302 -298
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +31 -8
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +31 -8
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +31 -8
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +31 -8
- nautobot/project-static/docs/user-guide/administration/configuration/redis.html +31 -8
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +31 -8
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/docker.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +31 -8
- nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/index.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +31 -8
- nautobot/project-static/docs/user-guide/administration/installation/services.html +31 -8
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +31 -8
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +31 -8
- nautobot/project-static/docs/user-guide/administration/security/index.html +31 -8
- nautobot/project-static/docs/user-guide/administration/security/notices.html +31 -8
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +31 -8
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +31 -8
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +43 -20
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +35 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +35 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +35 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +10261 -0
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +34 -11
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +31 -8
- nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +41 -15
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +31 -8
- nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +31 -8
- nautobot/project-static/docs/user-guide/index.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/events.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +37 -9
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +31 -8
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +31 -8
- nautobot/tenancy/tables.py +2 -0
- nautobot/virtualization/tests/test_views.py +1 -1
- nautobot/wireless/forms.py +0 -1
- nautobot/wireless/models.py +1 -1
- nautobot/wireless/tables.py +7 -0
- {nautobot-2.4.10.dist-info → nautobot-2.4.11.dist-info}/METADATA +4 -4
- {nautobot-2.4.10.dist-info → nautobot-2.4.11.dist-info}/RECORD +416 -401
- /nautobot/dcim/templates/dcim/{platform_edit.html → platform_create.html} +0 -0
- /nautobot/extras/test_jobs/{pass.py → pass_job.py} +0 -0
- {nautobot-2.4.10.dist-info → nautobot-2.4.11.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.4.10.dist-info → nautobot-2.4.11.dist-info}/NOTICE +0 -0
- {nautobot-2.4.10.dist-info → nautobot-2.4.11.dist-info}/WHEEL +0 -0
- {nautobot-2.4.10.dist-info → nautobot-2.4.11.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{% extends 'generic/object_retrieve.html' %}
|
|
2
|
+
{% load helpers %}
|
|
3
|
+
|
|
4
|
+
{% block extra_breadcrumbs %}
|
|
5
|
+
{% if object.vlan_group %}
|
|
6
|
+
<li><a href="{% url 'ipam:vlan_list' %}?vlan_group={{ object.vlan_group.name }}">{{ object.vlan_group }}</a></li>
|
|
7
|
+
{% endif %}
|
|
8
|
+
{% endblock extra_breadcrumbs %}
|
|
9
|
+
|
|
10
|
+
{% block extra_nav_tabs %}
|
|
11
|
+
<li role="presentation"{% if active_tab == 'interfaces' %} class="active"{% endif %}>
|
|
12
|
+
<a href="{% url 'ipam:vlan_interfaces' pk=object.pk %}">Device Interfaces <span class="badge">{{ object.get_interfaces.count }}</span></a>
|
|
13
|
+
</li>
|
|
14
|
+
<li role="presentation"{% if active_tab == 'vminterfaces' %} class="active"{% endif %}>
|
|
15
|
+
<a href="{% url 'ipam:vlan_vminterfaces' pk=object.pk %}">VM Interfaces <span class="badge">{{ object.get_vminterfaces.count }}</span></a>
|
|
16
|
+
</li>
|
|
17
|
+
{% endblock extra_nav_tabs %}
|
|
18
|
+
|
|
19
|
+
{% block content_left_page %}
|
|
20
|
+
<div class="panel panel-default">
|
|
21
|
+
<div class="panel-heading">
|
|
22
|
+
<strong>VLAN</strong>
|
|
23
|
+
</div>
|
|
24
|
+
<table class="table table-hover panel-body attr-table">
|
|
25
|
+
<tr>
|
|
26
|
+
<td>Locations</td>
|
|
27
|
+
<td>
|
|
28
|
+
{% for location in object.locations.all %}
|
|
29
|
+
{{ location|hyperlinked_object }}<br>
|
|
30
|
+
{% empty %}
|
|
31
|
+
<span class="text-muted">None</span>
|
|
32
|
+
{% endfor %}
|
|
33
|
+
</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<td>VLAN Group</td>
|
|
37
|
+
<td>{{ object.vlan_group|hyperlinked_object }}</td>
|
|
38
|
+
</tr>
|
|
39
|
+
<tr>
|
|
40
|
+
<td>VLAN ID</td>
|
|
41
|
+
<td>{{ object.vid }}</td>
|
|
42
|
+
</tr>
|
|
43
|
+
<tr>
|
|
44
|
+
<td>Name</td>
|
|
45
|
+
<td>{{ object.name }}</td>
|
|
46
|
+
</tr>
|
|
47
|
+
{% include 'inc/tenant_table_row.html' %}
|
|
48
|
+
<tr>
|
|
49
|
+
<td>Status</td>
|
|
50
|
+
<td>
|
|
51
|
+
{{ object.status| hyperlinked_object_with_color }}
|
|
52
|
+
</td>
|
|
53
|
+
</tr>
|
|
54
|
+
<tr>
|
|
55
|
+
<td>Role</td>
|
|
56
|
+
<td>{{ object.role | hyperlinked_object_with_color }}</td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td>Description</td>
|
|
60
|
+
<td>{{ object.description|placeholder }}</td>
|
|
61
|
+
</tr>
|
|
62
|
+
</table>
|
|
63
|
+
</div>
|
|
64
|
+
{% endblock content_left_page %}
|
|
65
|
+
|
|
66
|
+
{% block content_full_width_page %}
|
|
67
|
+
<div class="panel panel-default">
|
|
68
|
+
<div class="panel-heading">
|
|
69
|
+
<strong>Prefixes</strong>
|
|
70
|
+
</div>
|
|
71
|
+
{% include 'responsive_table.html' with table=prefix_table %}
|
|
72
|
+
{% if perms.ipam.add_prefix %}
|
|
73
|
+
<div class="panel-footer text-right noprint">
|
|
74
|
+
<a href="{% url 'ipam:prefix_add' %}?{% if object.tenant %}tenant={{ object.tenant.pk }}{% endif %}&vlan={{ object.pk }}{% for loc in object.locations.all %}&locations={{ loc.pk }}{% endfor %}" class="btn btn-primary btn-xs">
|
|
75
|
+
<span class="mdi mdi-plus-thick" aria-hidden="true"></span>
|
|
76
|
+
Add a prefix
|
|
77
|
+
</a>
|
|
78
|
+
</div>
|
|
79
|
+
{% endif %}
|
|
80
|
+
</div>
|
|
81
|
+
{% if prefix_table.paginator.num_pages > 1 %}
|
|
82
|
+
{% include "inc/paginator.html" with paginator=prefix_table.paginator page=prefix_table.page %}
|
|
83
|
+
{% endif %}
|
|
84
|
+
{% endblock content_full_width_page %}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{% extends 'generic/object_create.html' %}
|
|
2
|
+
{% load form_helpers %}
|
|
3
|
+
|
|
4
|
+
{% block form %}
|
|
5
|
+
<div class="panel panel-default">
|
|
6
|
+
<div class="panel-heading"><strong>VLAN</strong></div>
|
|
7
|
+
<div class="panel-body">
|
|
8
|
+
{% render_field form.vid %}
|
|
9
|
+
{% render_field form.name %}
|
|
10
|
+
{% render_field form.status %}
|
|
11
|
+
{% render_field form.role %}
|
|
12
|
+
{% render_field form.description %}
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="panel panel-default">
|
|
16
|
+
<div class="panel-heading"><strong>Assignment</strong></div>
|
|
17
|
+
<div class="panel-body">
|
|
18
|
+
{% render_field form.locations %}
|
|
19
|
+
{% render_field form.vlan_group %}
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
{% include 'inc/tenancy_form_panel.html' %}
|
|
23
|
+
{% include 'inc/extras_features_edit_form_fields.html' %}
|
|
24
|
+
{% endblock %}
|
|
@@ -63,6 +63,11 @@ class NamespaceTestCase(
|
|
|
63
63
|
ViewTestCases.BulkDeleteObjectsViewTestCase,
|
|
64
64
|
):
|
|
65
65
|
model = Namespace
|
|
66
|
+
custom_action_required_permissions = {
|
|
67
|
+
"ipam:namespace_vrfs": ["ipam.view_namespace", "ipam.view_vrf"],
|
|
68
|
+
"ipam:namespace_prefixes": ["ipam.view_namespace", "ipam.view_prefix"],
|
|
69
|
+
"ipam:namespace_ip_addresses": ["ipam.view_namespace", "ipam.view_ipaddress"],
|
|
70
|
+
}
|
|
66
71
|
|
|
67
72
|
@classmethod
|
|
68
73
|
def setUpTestData(cls):
|
nautobot/ipam/urls.py
CHANGED
|
@@ -7,7 +7,6 @@ from . import views
|
|
|
7
7
|
from .models import (
|
|
8
8
|
IPAddress,
|
|
9
9
|
Prefix,
|
|
10
|
-
VLAN,
|
|
11
10
|
)
|
|
12
11
|
|
|
13
12
|
app_name = "ipam"
|
|
@@ -18,6 +17,7 @@ router.register("namespaces", views.NamespaceUIViewSet)
|
|
|
18
17
|
router.register("rirs", views.RIRUIViewSet)
|
|
19
18
|
router.register("route-targets", views.RouteTargetUIViewSet)
|
|
20
19
|
router.register("services", views.ServiceUIViewSet)
|
|
20
|
+
router.register("vlans", views.VLANUIViewSet)
|
|
21
21
|
router.register("vlan-groups", views.VLANGroupUIViewSet)
|
|
22
22
|
router.register("vrfs", views.VRFUIViewSet)
|
|
23
23
|
|
|
@@ -140,12 +140,6 @@ urlpatterns = [
|
|
|
140
140
|
name="ipaddress_delete",
|
|
141
141
|
),
|
|
142
142
|
# VLANs
|
|
143
|
-
path("vlans/", views.VLANListView.as_view(), name="vlan_list"),
|
|
144
|
-
path("vlans/add/", views.VLANEditView.as_view(), name="vlan_add"),
|
|
145
|
-
path("vlans/import/", views.VLANBulkImportView.as_view(), name="vlan_import"), # 3.0 TODO: remove, unused
|
|
146
|
-
path("vlans/edit/", views.VLANBulkEditView.as_view(), name="vlan_bulk_edit"),
|
|
147
|
-
path("vlans/delete/", views.VLANBulkDeleteView.as_view(), name="vlan_bulk_delete"),
|
|
148
|
-
path("vlans/<uuid:pk>/", views.VLANView.as_view(), name="vlan"),
|
|
149
143
|
path(
|
|
150
144
|
"vlans/<uuid:pk>/interfaces/",
|
|
151
145
|
views.VLANInterfacesView.as_view(),
|
|
@@ -156,20 +150,6 @@ urlpatterns = [
|
|
|
156
150
|
views.VLANVMInterfacesView.as_view(),
|
|
157
151
|
name="vlan_vminterfaces",
|
|
158
152
|
),
|
|
159
|
-
path("vlans/<uuid:pk>/edit/", views.VLANEditView.as_view(), name="vlan_edit"),
|
|
160
|
-
path("vlans/<uuid:pk>/delete/", views.VLANDeleteView.as_view(), name="vlan_delete"),
|
|
161
|
-
path(
|
|
162
|
-
"vlans/<uuid:pk>/changelog/",
|
|
163
|
-
ObjectChangeLogView.as_view(),
|
|
164
|
-
name="vlan_changelog",
|
|
165
|
-
kwargs={"model": VLAN},
|
|
166
|
-
),
|
|
167
|
-
path(
|
|
168
|
-
"vlans/<uuid:pk>/notes/",
|
|
169
|
-
ObjectNotesView.as_view(),
|
|
170
|
-
name="vlan_notes",
|
|
171
|
-
kwargs={"model": VLAN},
|
|
172
|
-
),
|
|
173
153
|
]
|
|
174
154
|
|
|
175
155
|
urlpatterns += router.urls
|
nautobot/ipam/views.py
CHANGED
|
@@ -31,7 +31,7 @@ from nautobot.core.views import generic, mixins as view_mixins
|
|
|
31
31
|
from nautobot.core.views.paginator import EnhancedPaginator, get_paginate_count
|
|
32
32
|
from nautobot.core.views.utils import handle_protectederror
|
|
33
33
|
from nautobot.core.views.viewsets import NautobotUIViewSet
|
|
34
|
-
from nautobot.dcim.models import Device, Interface
|
|
34
|
+
from nautobot.dcim.models import Device, Interface
|
|
35
35
|
from nautobot.extras.models import Role, SavedView, Status, Tag
|
|
36
36
|
from nautobot.ipam import choices, constants
|
|
37
37
|
from nautobot.ipam.api import serializers
|
|
@@ -106,7 +106,12 @@ class NamespaceUIViewSet(NautobotUIViewSet):
|
|
|
106
106
|
context.update({"object_detail_content": self.object_detail_content})
|
|
107
107
|
return context
|
|
108
108
|
|
|
109
|
-
@action(
|
|
109
|
+
@action(
|
|
110
|
+
detail=True,
|
|
111
|
+
url_path="vrfs",
|
|
112
|
+
custom_view_base_action="view",
|
|
113
|
+
custom_view_additional_permissions=["ipam.view_vrf"],
|
|
114
|
+
)
|
|
110
115
|
def vrfs(self, request, *args, **kwargs):
|
|
111
116
|
instance = self.get_object()
|
|
112
117
|
vrfs = instance.vrfs.restrict(request.user, "view")
|
|
@@ -128,7 +133,12 @@ class NamespaceUIViewSet(NautobotUIViewSet):
|
|
|
128
133
|
}
|
|
129
134
|
)
|
|
130
135
|
|
|
131
|
-
@action(
|
|
136
|
+
@action(
|
|
137
|
+
detail=True,
|
|
138
|
+
url_path="prefixes",
|
|
139
|
+
custom_view_base_action="view",
|
|
140
|
+
custom_view_additional_permissions=["ipam.view_prefix"],
|
|
141
|
+
)
|
|
132
142
|
def prefixes(self, request, *args, **kwargs):
|
|
133
143
|
instance = self.get_object()
|
|
134
144
|
prefixes = instance.prefixes.restrict(request.user, "view").select_related("status")
|
|
@@ -146,7 +156,13 @@ class NamespaceUIViewSet(NautobotUIViewSet):
|
|
|
146
156
|
}
|
|
147
157
|
)
|
|
148
158
|
|
|
149
|
-
@action(
|
|
159
|
+
@action(
|
|
160
|
+
detail=True,
|
|
161
|
+
url_path="ip-addresses",
|
|
162
|
+
url_name="ip_addresses",
|
|
163
|
+
custom_view_base_action="view",
|
|
164
|
+
custom_view_additional_permissions=["ipam.view_ipaddress"],
|
|
165
|
+
)
|
|
150
166
|
def ip_addresses(self, request, *args, **kwargs):
|
|
151
167
|
instance = self.get_object()
|
|
152
168
|
ip_addresses = instance.ip_addresses.restrict(request.user, "view").select_related("role", "status", "tenant")
|
|
@@ -1189,40 +1205,37 @@ class VLANGroupUIViewSet(NautobotUIViewSet):
|
|
|
1189
1205
|
#
|
|
1190
1206
|
|
|
1191
1207
|
|
|
1192
|
-
class
|
|
1208
|
+
class VLANUIViewSet(NautobotUIViewSet): # 3.0 TODO: remove, unused BulkImportView
|
|
1209
|
+
bulk_update_form_class = forms.VLANBulkEditForm
|
|
1210
|
+
filterset_class = filters.VLANFilterSet
|
|
1211
|
+
filterset_form_class = forms.VLANFilterForm
|
|
1212
|
+
form_class = forms.VLANForm
|
|
1213
|
+
serializer_class = serializers.VLANSerializer
|
|
1214
|
+
table_class = tables.VLANTable
|
|
1193
1215
|
queryset = VLAN.objects.all()
|
|
1194
|
-
filterset = filters.VLANFilterSet
|
|
1195
|
-
filterset_form = forms.VLANFilterForm
|
|
1196
|
-
table = tables.VLANDetailTable
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
class VLANView(generic.ObjectView):
|
|
1200
|
-
queryset = VLAN.objects.annotate(location_count=count_related(Location, "vlans")).select_related(
|
|
1201
|
-
"role",
|
|
1202
|
-
"status",
|
|
1203
|
-
"tenant__tenant_group",
|
|
1204
|
-
)
|
|
1205
1216
|
|
|
1206
1217
|
def get_extra_context(self, request, instance):
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1218
|
+
context = super().get_extra_context(request, instance)
|
|
1219
|
+
if self.action == "retrieve":
|
|
1220
|
+
prefixes = (
|
|
1221
|
+
Prefix.objects.restrict(request.user, "view")
|
|
1222
|
+
.filter(vlan=instance)
|
|
1223
|
+
.select_related(
|
|
1224
|
+
"status",
|
|
1225
|
+
"role",
|
|
1226
|
+
"namespace",
|
|
1227
|
+
)
|
|
1215
1228
|
)
|
|
1216
|
-
|
|
1217
|
-
prefix_table = tables.PrefixTable(list(prefixes), hide_hierarchy_ui=True, exclude=["vlan"])
|
|
1229
|
+
prefix_table = tables.PrefixTable(list(prefixes), hide_hierarchy_ui=True, exclude=["vlan"])
|
|
1218
1230
|
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1231
|
+
paginate = {
|
|
1232
|
+
"paginator_class": EnhancedPaginator,
|
|
1233
|
+
"per_page": get_paginate_count(request),
|
|
1234
|
+
}
|
|
1235
|
+
RequestConfig(request, paginate).configure(prefix_table)
|
|
1224
1236
|
|
|
1225
|
-
|
|
1237
|
+
context["prefix_table"] = prefix_table
|
|
1238
|
+
return context
|
|
1226
1239
|
|
|
1227
1240
|
|
|
1228
1241
|
class VLANInterfacesView(generic.ObjectView):
|
|
@@ -1265,44 +1278,6 @@ class VLANVMInterfacesView(generic.ObjectView):
|
|
|
1265
1278
|
}
|
|
1266
1279
|
|
|
1267
1280
|
|
|
1268
|
-
class VLANEditView(generic.ObjectEditView):
|
|
1269
|
-
queryset = VLAN.objects.all()
|
|
1270
|
-
model_form = forms.VLANForm
|
|
1271
|
-
template_name = "ipam/vlan_edit.html"
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
class VLANDeleteView(generic.ObjectDeleteView):
|
|
1275
|
-
queryset = VLAN.objects.all()
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
class VLANBulkImportView(generic.BulkImportView): # 3.0 TODO: remove, unused
|
|
1279
|
-
queryset = VLAN.objects.all()
|
|
1280
|
-
table = tables.VLANTable
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
class VLANBulkEditView(generic.BulkEditView):
|
|
1284
|
-
queryset = VLAN.objects.select_related(
|
|
1285
|
-
"vlan_group",
|
|
1286
|
-
"status",
|
|
1287
|
-
"tenant",
|
|
1288
|
-
"role",
|
|
1289
|
-
)
|
|
1290
|
-
filterset = filters.VLANFilterSet
|
|
1291
|
-
table = tables.VLANTable
|
|
1292
|
-
form = forms.VLANBulkEditForm
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
class VLANBulkDeleteView(generic.BulkDeleteView):
|
|
1296
|
-
queryset = VLAN.objects.select_related(
|
|
1297
|
-
"vlan_group",
|
|
1298
|
-
"status",
|
|
1299
|
-
"tenant",
|
|
1300
|
-
"role",
|
|
1301
|
-
)
|
|
1302
|
-
filterset = filters.VLANFilterSet
|
|
1303
|
-
table = tables.VLANTable
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
1281
|
#
|
|
1307
1282
|
# Services
|
|
1308
1283
|
#
|
|
@@ -3579,6 +3579,29 @@
|
|
|
3579
3579
|
|
|
3580
3580
|
|
|
3581
3581
|
|
|
3582
|
+
<li class="md-nav__item">
|
|
3583
|
+
<a href="/projects/core/en/stable/user-guide/core-data-model/dcim/modulefamily.html" class="md-nav__link">
|
|
3584
|
+
|
|
3585
|
+
|
|
3586
|
+
|
|
3587
|
+
<span class="md-ellipsis">
|
|
3588
|
+
Module Family
|
|
3589
|
+
|
|
3590
|
+
</span>
|
|
3591
|
+
|
|
3592
|
+
|
|
3593
|
+
</a>
|
|
3594
|
+
</li>
|
|
3595
|
+
|
|
3596
|
+
|
|
3597
|
+
|
|
3598
|
+
|
|
3599
|
+
|
|
3600
|
+
|
|
3601
|
+
|
|
3602
|
+
|
|
3603
|
+
|
|
3604
|
+
|
|
3582
3605
|
|
|
3583
3606
|
|
|
3584
3607
|
|
|
@@ -3591,7 +3614,7 @@
|
|
|
3591
3614
|
|
|
3592
3615
|
|
|
3593
3616
|
|
|
3594
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3617
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
|
|
3595
3618
|
|
|
3596
3619
|
|
|
3597
3620
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3608,14 +3631,14 @@
|
|
|
3608
3631
|
</a>
|
|
3609
3632
|
|
|
3610
3633
|
|
|
3611
|
-
<label class="md-nav__link " for="
|
|
3634
|
+
<label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
|
|
3612
3635
|
<span class="md-nav__icon md-icon"></span>
|
|
3613
3636
|
</label>
|
|
3614
3637
|
|
|
3615
3638
|
</div>
|
|
3616
3639
|
|
|
3617
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3618
|
-
<label class="md-nav__title" for="
|
|
3640
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
|
|
3641
|
+
<label class="md-nav__title" for="__nav_2_3_4_11">
|
|
3619
3642
|
<span class="md-nav__icon md-icon"></span>
|
|
3620
3643
|
Module Type
|
|
3621
3644
|
</label>
|
|
@@ -3831,7 +3854,7 @@
|
|
|
3831
3854
|
|
|
3832
3855
|
|
|
3833
3856
|
|
|
3834
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3857
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_12" >
|
|
3835
3858
|
|
|
3836
3859
|
|
|
3837
3860
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3848,14 +3871,14 @@
|
|
|
3848
3871
|
</a>
|
|
3849
3872
|
|
|
3850
3873
|
|
|
3851
|
-
<label class="md-nav__link " for="
|
|
3874
|
+
<label class="md-nav__link " for="__nav_2_3_4_12" id="__nav_2_3_4_12_label" tabindex="0">
|
|
3852
3875
|
<span class="md-nav__icon md-icon"></span>
|
|
3853
3876
|
</label>
|
|
3854
3877
|
|
|
3855
3878
|
</div>
|
|
3856
3879
|
|
|
3857
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3858
|
-
<label class="md-nav__title" for="
|
|
3880
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_12_label" aria-expanded="false">
|
|
3881
|
+
<label class="md-nav__title" for="__nav_2_3_4_12">
|
|
3859
3882
|
<span class="md-nav__icon md-icon"></span>
|
|
3860
3883
|
Module
|
|
3861
3884
|
</label>
|
|
@@ -3601,6 +3601,29 @@
|
|
|
3601
3601
|
|
|
3602
3602
|
|
|
3603
3603
|
|
|
3604
|
+
<li class="md-nav__item">
|
|
3605
|
+
<a href="../user-guide/core-data-model/dcim/modulefamily.html" class="md-nav__link">
|
|
3606
|
+
|
|
3607
|
+
|
|
3608
|
+
|
|
3609
|
+
<span class="md-ellipsis">
|
|
3610
|
+
Module Family
|
|
3611
|
+
|
|
3612
|
+
</span>
|
|
3613
|
+
|
|
3614
|
+
|
|
3615
|
+
</a>
|
|
3616
|
+
</li>
|
|
3617
|
+
|
|
3618
|
+
|
|
3619
|
+
|
|
3620
|
+
|
|
3621
|
+
|
|
3622
|
+
|
|
3623
|
+
|
|
3624
|
+
|
|
3625
|
+
|
|
3626
|
+
|
|
3604
3627
|
|
|
3605
3628
|
|
|
3606
3629
|
|
|
@@ -3613,7 +3636,7 @@
|
|
|
3613
3636
|
|
|
3614
3637
|
|
|
3615
3638
|
|
|
3616
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3639
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
|
|
3617
3640
|
|
|
3618
3641
|
|
|
3619
3642
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3630,14 +3653,14 @@
|
|
|
3630
3653
|
</a>
|
|
3631
3654
|
|
|
3632
3655
|
|
|
3633
|
-
<label class="md-nav__link " for="
|
|
3656
|
+
<label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
|
|
3634
3657
|
<span class="md-nav__icon md-icon"></span>
|
|
3635
3658
|
</label>
|
|
3636
3659
|
|
|
3637
3660
|
</div>
|
|
3638
3661
|
|
|
3639
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3640
|
-
<label class="md-nav__title" for="
|
|
3662
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
|
|
3663
|
+
<label class="md-nav__title" for="__nav_2_3_4_11">
|
|
3641
3664
|
<span class="md-nav__icon md-icon"></span>
|
|
3642
3665
|
Module Type
|
|
3643
3666
|
</label>
|
|
@@ -3853,7 +3876,7 @@
|
|
|
3853
3876
|
|
|
3854
3877
|
|
|
3855
3878
|
|
|
3856
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3879
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_12" >
|
|
3857
3880
|
|
|
3858
3881
|
|
|
3859
3882
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3870,14 +3893,14 @@
|
|
|
3870
3893
|
</a>
|
|
3871
3894
|
|
|
3872
3895
|
|
|
3873
|
-
<label class="md-nav__link " for="
|
|
3896
|
+
<label class="md-nav__link " for="__nav_2_3_4_12" id="__nav_2_3_4_12_label" tabindex="0">
|
|
3874
3897
|
<span class="md-nav__icon md-icon"></span>
|
|
3875
3898
|
</label>
|
|
3876
3899
|
|
|
3877
3900
|
</div>
|
|
3878
3901
|
|
|
3879
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3880
|
-
<label class="md-nav__title" for="
|
|
3902
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_12_label" aria-expanded="false">
|
|
3903
|
+
<label class="md-nav__title" for="__nav_2_3_4_12">
|
|
3881
3904
|
<span class="md-nav__icon md-icon"></span>
|
|
3882
3905
|
Module
|
|
3883
3906
|
</label>
|
|
@@ -3599,6 +3599,29 @@
|
|
|
3599
3599
|
|
|
3600
3600
|
|
|
3601
3601
|
|
|
3602
|
+
<li class="md-nav__item">
|
|
3603
|
+
<a href="../user-guide/core-data-model/dcim/modulefamily.html" class="md-nav__link">
|
|
3604
|
+
|
|
3605
|
+
|
|
3606
|
+
|
|
3607
|
+
<span class="md-ellipsis">
|
|
3608
|
+
Module Family
|
|
3609
|
+
|
|
3610
|
+
</span>
|
|
3611
|
+
|
|
3612
|
+
|
|
3613
|
+
</a>
|
|
3614
|
+
</li>
|
|
3615
|
+
|
|
3616
|
+
|
|
3617
|
+
|
|
3618
|
+
|
|
3619
|
+
|
|
3620
|
+
|
|
3621
|
+
|
|
3622
|
+
|
|
3623
|
+
|
|
3624
|
+
|
|
3602
3625
|
|
|
3603
3626
|
|
|
3604
3627
|
|
|
@@ -3611,7 +3634,7 @@
|
|
|
3611
3634
|
|
|
3612
3635
|
|
|
3613
3636
|
|
|
3614
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3637
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
|
|
3615
3638
|
|
|
3616
3639
|
|
|
3617
3640
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3628,14 +3651,14 @@
|
|
|
3628
3651
|
</a>
|
|
3629
3652
|
|
|
3630
3653
|
|
|
3631
|
-
<label class="md-nav__link " for="
|
|
3654
|
+
<label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
|
|
3632
3655
|
<span class="md-nav__icon md-icon"></span>
|
|
3633
3656
|
</label>
|
|
3634
3657
|
|
|
3635
3658
|
</div>
|
|
3636
3659
|
|
|
3637
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3638
|
-
<label class="md-nav__title" for="
|
|
3660
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
|
|
3661
|
+
<label class="md-nav__title" for="__nav_2_3_4_11">
|
|
3639
3662
|
<span class="md-nav__icon md-icon"></span>
|
|
3640
3663
|
Module Type
|
|
3641
3664
|
</label>
|
|
@@ -3851,7 +3874,7 @@
|
|
|
3851
3874
|
|
|
3852
3875
|
|
|
3853
3876
|
|
|
3854
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3877
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_12" >
|
|
3855
3878
|
|
|
3856
3879
|
|
|
3857
3880
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3868,14 +3891,14 @@
|
|
|
3868
3891
|
</a>
|
|
3869
3892
|
|
|
3870
3893
|
|
|
3871
|
-
<label class="md-nav__link " for="
|
|
3894
|
+
<label class="md-nav__link " for="__nav_2_3_4_12" id="__nav_2_3_4_12_label" tabindex="0">
|
|
3872
3895
|
<span class="md-nav__icon md-icon"></span>
|
|
3873
3896
|
</label>
|
|
3874
3897
|
|
|
3875
3898
|
</div>
|
|
3876
3899
|
|
|
3877
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3878
|
-
<label class="md-nav__title" for="
|
|
3900
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_12_label" aria-expanded="false">
|
|
3901
|
+
<label class="md-nav__title" for="__nav_2_3_4_12">
|
|
3879
3902
|
<span class="md-nav__icon md-icon"></span>
|
|
3880
3903
|
Module
|
|
3881
3904
|
</label>
|
|
@@ -3601,6 +3601,29 @@
|
|
|
3601
3601
|
|
|
3602
3602
|
|
|
3603
3603
|
|
|
3604
|
+
<li class="md-nav__item">
|
|
3605
|
+
<a href="../../../user-guide/core-data-model/dcim/modulefamily.html" class="md-nav__link">
|
|
3606
|
+
|
|
3607
|
+
|
|
3608
|
+
|
|
3609
|
+
<span class="md-ellipsis">
|
|
3610
|
+
Module Family
|
|
3611
|
+
|
|
3612
|
+
</span>
|
|
3613
|
+
|
|
3614
|
+
|
|
3615
|
+
</a>
|
|
3616
|
+
</li>
|
|
3617
|
+
|
|
3618
|
+
|
|
3619
|
+
|
|
3620
|
+
|
|
3621
|
+
|
|
3622
|
+
|
|
3623
|
+
|
|
3624
|
+
|
|
3625
|
+
|
|
3626
|
+
|
|
3604
3627
|
|
|
3605
3628
|
|
|
3606
3629
|
|
|
@@ -3613,7 +3636,7 @@
|
|
|
3613
3636
|
|
|
3614
3637
|
|
|
3615
3638
|
|
|
3616
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3639
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
|
|
3617
3640
|
|
|
3618
3641
|
|
|
3619
3642
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3630,14 +3653,14 @@
|
|
|
3630
3653
|
</a>
|
|
3631
3654
|
|
|
3632
3655
|
|
|
3633
|
-
<label class="md-nav__link " for="
|
|
3656
|
+
<label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
|
|
3634
3657
|
<span class="md-nav__icon md-icon"></span>
|
|
3635
3658
|
</label>
|
|
3636
3659
|
|
|
3637
3660
|
</div>
|
|
3638
3661
|
|
|
3639
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3640
|
-
<label class="md-nav__title" for="
|
|
3662
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
|
|
3663
|
+
<label class="md-nav__title" for="__nav_2_3_4_11">
|
|
3641
3664
|
<span class="md-nav__icon md-icon"></span>
|
|
3642
3665
|
Module Type
|
|
3643
3666
|
</label>
|
|
@@ -3853,7 +3876,7 @@
|
|
|
3853
3876
|
|
|
3854
3877
|
|
|
3855
3878
|
|
|
3856
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3879
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_12" >
|
|
3857
3880
|
|
|
3858
3881
|
|
|
3859
3882
|
<div class="md-nav__link md-nav__container">
|
|
@@ -3870,14 +3893,14 @@
|
|
|
3870
3893
|
</a>
|
|
3871
3894
|
|
|
3872
3895
|
|
|
3873
|
-
<label class="md-nav__link " for="
|
|
3896
|
+
<label class="md-nav__link " for="__nav_2_3_4_12" id="__nav_2_3_4_12_label" tabindex="0">
|
|
3874
3897
|
<span class="md-nav__icon md-icon"></span>
|
|
3875
3898
|
</label>
|
|
3876
3899
|
|
|
3877
3900
|
</div>
|
|
3878
3901
|
|
|
3879
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
3880
|
-
<label class="md-nav__title" for="
|
|
3902
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_12_label" aria-expanded="false">
|
|
3903
|
+
<label class="md-nav__title" for="__nav_2_3_4_12">
|
|
3881
3904
|
<span class="md-nav__icon md-icon"></span>
|
|
3882
3905
|
Module
|
|
3883
3906
|
</label>
|