nautobot 2.0.5__py3-none-any.whl → 2.1.0b1__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/circuits/navigation.py +0 -25
- nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -9
- nautobot/circuits/templates/circuits/providernetwork_retrieve.html +0 -2
- nautobot/circuits/tests/test_filters.py +1 -0
- nautobot/core/api/serializers.py +15 -5
- nautobot/core/api/views.py +18 -19
- nautobot/core/choices.py +1 -1
- nautobot/core/filters.py +12 -4
- nautobot/core/jobs/__init__.py +125 -3
- nautobot/core/management/commands/generate_test_data.py +4 -1
- nautobot/core/models/fields.py +12 -2
- nautobot/core/settings.py +8 -7
- nautobot/core/templates/base_django.html +2 -2
- nautobot/core/templates/buttons/export.html +57 -30
- nautobot/core/templates/generic/object_list.html +2 -2
- nautobot/core/templates/generic/object_retrieve.html +8 -1
- nautobot/core/templates/home.html +5 -5
- nautobot/core/templates/inc/created_updated.html +2 -2
- nautobot/core/templates/inc/footer.html +2 -2
- nautobot/core/templates/inc/javascript.html +0 -10
- nautobot/core/templates/inc/media.html +2 -0
- nautobot/core/templates/inc/nav_menu.html +66 -68
- nautobot/core/templates/inc/object_details_advanced_panel.html +19 -0
- nautobot/core/templates/nautobot_config.py.j2 +10 -4
- nautobot/core/templates/panel_table.html +1 -1
- nautobot/core/templates/template.css +89 -0
- nautobot/core/templates/utilities/templatetags/table_config_form.html +1 -0
- nautobot/core/templatetags/buttons.py +7 -2
- nautobot/core/testing/views.py +34 -4
- nautobot/core/tests/integration/test_home.py +1 -43
- nautobot/core/tests/integration/test_navbar.py +10 -64
- nautobot/core/tests/integration/test_plugin_home.py +4 -5
- nautobot/core/tests/integration/test_plugin_navbar.py +20 -16
- nautobot/core/tests/integration/test_theme.py +4 -0
- nautobot/core/tests/test_api.py +14 -66
- nautobot/core/tests/test_filters.py +127 -0
- nautobot/core/tests/test_forms.py +1 -1
- nautobot/core/tests/test_graphql.py +165 -2
- nautobot/core/tests/test_jobs.py +112 -0
- nautobot/core/tests/test_openapi.py +6 -0
- nautobot/core/tests/test_views.py +11 -85
- nautobot/core/urls.py +6 -1
- nautobot/core/utils/lookup.py +28 -0
- nautobot/core/utils/requests.py +2 -3
- nautobot/core/views/__init__.py +3 -4
- nautobot/core/views/generic.py +9 -4
- nautobot/core/views/mixins.py +4 -2
- nautobot/core/views/renderers.py +5 -0
- nautobot/dcim/models/device_components.py +1 -0
- nautobot/dcim/navigation.py +10 -165
- nautobot/dcim/templates/dcim/location.html +1 -1
- nautobot/dcim/tests/features/locations.feature +143 -0
- nautobot/dcim/tests/test_api.py +1 -1
- nautobot/dcim/tests/test_filters.py +11 -3
- nautobot/extras/admin.py +1 -1
- nautobot/extras/api/serializers.py +33 -0
- nautobot/extras/api/urls.py +6 -0
- nautobot/extras/api/views.py +45 -6
- nautobot/extras/factory.py +28 -2
- nautobot/extras/filters/__init__.py +52 -0
- nautobot/extras/filters/mixins.py +4 -29
- nautobot/extras/forms/forms.py +43 -0
- nautobot/extras/jobs.py +31 -9
- nautobot/extras/migrations/0100_fileproxy_job_result.py +32 -0
- nautobot/extras/migrations/0101_externalintegration.py +61 -0
- nautobot/extras/migrations/0102_set_null_objectchange_contenttype.py +32 -0
- nautobot/extras/models/__init__.py +2 -0
- nautobot/extras/models/change_logging.py +2 -2
- nautobot/extras/models/models.py +96 -16
- nautobot/extras/navigation.py +17 -29
- nautobot/extras/signals.py +15 -0
- nautobot/extras/tables.py +27 -0
- nautobot/extras/templates/extras/externalintegration_retrieve.html +37 -0
- nautobot/extras/templates/extras/inc/jobresult.html +24 -0
- nautobot/extras/templates/extras/jobresult.html +24 -0
- nautobot/extras/test_jobs/file_output.py +16 -0
- nautobot/extras/tests/test_api.py +92 -0
- nautobot/extras/tests/test_filters.py +64 -2
- nautobot/extras/tests/test_jobs.py +39 -0
- nautobot/extras/tests/test_models.py +34 -0
- nautobot/extras/tests/test_views.py +22 -2
- nautobot/extras/urls.py +1 -0
- nautobot/extras/views.py +15 -0
- nautobot/ipam/forms.py +16 -0
- nautobot/ipam/models.py +3 -0
- nautobot/ipam/navigation.py +2 -59
- nautobot/ipam/templates/ipam/ipaddress.html +0 -9
- nautobot/ipam/templates/ipam/prefix.html +0 -9
- nautobot/ipam/tests/features/prefixes.feature +134 -0
- nautobot/ipam/tests/test_filters.py +5 -10
- nautobot/ipam/tests/test_views.py +8 -1
- nautobot/ipam/views.py +3 -0
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css +191 -191
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +874 -881
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
- nautobot/project-static/css/base.css +135 -99
- nautobot/project-static/css/dark.css +65 -6
- nautobot/project-static/docs/404.html +44 -16
- nautobot/project-static/docs/apps/index.html +44 -16
- nautobot/project-static/docs/apps/nautobot-apps.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1597 -1457
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +353 -432
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +66 -38
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2154 -2307
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +807 -691
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +58 -30
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +3600 -3456
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +44 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +101 -75
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +3083 -3019
- nautobot/project-static/docs/development/apps/api/configuration-view.html +44 -16
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +44 -16
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +44 -16
- nautobot/project-static/docs/development/apps/api/models/global-search.html +44 -16
- nautobot/project-static/docs/development/apps/api/models/graphql.html +44 -16
- nautobot/project-static/docs/development/apps/api/models/index.html +44 -16
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +44 -16
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +44 -16
- nautobot/project-static/docs/development/apps/api/prometheus.html +44 -16
- nautobot/project-static/docs/development/apps/api/setup.html +44 -16
- nautobot/project-static/docs/development/apps/api/testing.html +44 -16
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +44 -16
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +44 -16
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +44 -16
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +44 -16
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +44 -16
- nautobot/project-static/docs/development/apps/api/ui-extensions/tabs.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/base-template.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/index.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/notes.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/urls.html +44 -16
- nautobot/project-static/docs/development/apps/api/views/view-overrides.html +44 -16
- nautobot/project-static/docs/development/apps/index.html +44 -16
- nautobot/project-static/docs/development/apps/migration/code-updates.html +44 -16
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +44 -16
- nautobot/project-static/docs/development/apps/migration/from-v1.html +44 -16
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +44 -16
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +44 -16
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +44 -16
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +44 -16
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +44 -16
- nautobot/project-static/docs/development/core/application-registry.html +44 -16
- nautobot/project-static/docs/development/core/best-practices.html +44 -16
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +44 -16
- nautobot/project-static/docs/development/core/extending-models.html +44 -16
- nautobot/project-static/docs/development/core/generic-views.html +44 -16
- nautobot/project-static/docs/development/core/getting-started.html +44 -16
- nautobot/project-static/docs/development/core/homepage.html +44 -16
- nautobot/project-static/docs/development/core/index.html +44 -16
- nautobot/project-static/docs/development/core/model-features.html +44 -16
- nautobot/project-static/docs/development/core/natural-keys.html +44 -16
- nautobot/project-static/docs/development/core/navigation-menu.html +44 -21
- nautobot/project-static/docs/development/core/react-ui.html +44 -16
- nautobot/project-static/docs/development/core/release-checklist.html +44 -16
- nautobot/project-static/docs/development/core/role-internals.html +44 -16
- nautobot/project-static/docs/development/core/style-guide.html +44 -16
- nautobot/project-static/docs/development/core/templates.html +44 -16
- nautobot/project-static/docs/development/core/testing.html +44 -16
- nautobot/project-static/docs/development/core/user-preferences.html +44 -16
- nautobot/project-static/docs/development/index.html +44 -16
- nautobot/project-static/docs/development/jobs/index.html +280 -234
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +44 -16
- nautobot/project-static/docs/index.html +44 -16
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/release-notes/index.html +47 -19
- nautobot/project-static/docs/release-notes/version-1.0.html +44 -16
- nautobot/project-static/docs/release-notes/version-1.1.html +44 -16
- nautobot/project-static/docs/release-notes/version-1.2.html +44 -16
- nautobot/project-static/docs/release-notes/version-1.3.html +44 -16
- nautobot/project-static/docs/release-notes/version-1.4.html +44 -16
- nautobot/project-static/docs/release-notes/version-1.5.html +44 -16
- nautobot/project-static/docs/release-notes/version-1.6.html +44 -16
- nautobot/project-static/docs/release-notes/version-2.0.html +47 -19
- nautobot/project-static/docs/release-notes/version-2.1.html +5724 -0
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +247 -237
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +44 -16
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +44 -16
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +44 -16
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +44 -16
- nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +44 -16
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +109 -43
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +44 -16
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +48 -19
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/docker.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/index.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +44 -16
- nautobot/project-static/docs/user-guide/administration/installation/services.html +44 -16
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +44 -16
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +44 -16
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +44 -16
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +44 -16
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +44 -16
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +44 -16
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +44 -16
- nautobot/project-static/docs/user-guide/index.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +110 -16
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +47 -19
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +5359 -0
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +47 -19
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +113 -44
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +44 -16
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +44 -16
- nautobot/project-static/fonts/UFL.txt +96 -0
- nautobot/project-static/fonts/Ubuntu-Bold.woff2 +0 -0
- nautobot/project-static/fonts/Ubuntu-BoldItalic.woff2 +0 -0
- nautobot/project-static/fonts/Ubuntu-Italic.woff2 +0 -0
- nautobot/project-static/fonts/Ubuntu-Medium.woff2 +0 -0
- nautobot/project-static/fonts/Ubuntu-MediumItalic.woff2 +0 -0
- nautobot/project-static/fonts/Ubuntu-Regular.woff2 +0 -0
- nautobot/project-static/fonts/UbuntuMono-Bold.woff2 +0 -0
- nautobot/project-static/fonts/UbuntuMono-BoldItalic.woff2 +0 -0
- nautobot/project-static/fonts/UbuntuMono-Italic.woff2 +0 -0
- nautobot/project-static/fonts/UbuntuMono-Regular.woff2 +0 -0
- nautobot/project-static/img/dark-theme.png +0 -0
- nautobot/project-static/img/light-theme.png +0 -0
- nautobot/project-static/img/nautobot_chevron.svg +5 -0
- nautobot/project-static/img/nautobot_chevron_header.svg +5 -0
- nautobot/project-static/img/system-theme.png +0 -0
- nautobot/tenancy/navigation.py +0 -13
- nautobot/ui/package-lock.json +2 -2
- nautobot/ui/package.json +1 -1
- nautobot/users/admin.py +44 -0
- nautobot/users/migrations/0007_alter_objectpermission_object_types.py +33 -0
- nautobot/users/models.py +3 -2
- nautobot/virtualization/navigation.py +1 -33
- nautobot/virtualization/tests/test_api.py +1 -1
- nautobot/virtualization/tests/test_filters.py +1 -1
- {nautobot-2.0.5.dist-info → nautobot-2.1.0b1.dist-info}/METADATA +1 -1
- {nautobot-2.0.5.dist-info → nautobot-2.1.0b1.dist-info}/RECORD +376 -351
- {nautobot-2.0.5.dist-info → nautobot-2.1.0b1.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.0.5.dist-info → nautobot-2.1.0b1.dist-info}/WHEEL +0 -0
- {nautobot-2.0.5.dist-info → nautobot-2.1.0b1.dist-info}/entry_points.txt +0 -0
|
@@ -2659,6 +2659,20 @@
|
|
|
2659
2659
|
|
|
2660
2660
|
|
|
2661
2661
|
|
|
2662
|
+
<li class="md-nav__item">
|
|
2663
|
+
<a href="../../../user-guide/platform-functionality/externalintegration.html" class="md-nav__link">
|
|
2664
|
+
External Integrations
|
|
2665
|
+
</a>
|
|
2666
|
+
</li>
|
|
2667
|
+
|
|
2668
|
+
|
|
2669
|
+
|
|
2670
|
+
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
|
|
2662
2676
|
<li class="md-nav__item">
|
|
2663
2677
|
<a href="../../../user-guide/platform-functionality/gitrepository.html" class="md-nav__link">
|
|
2664
2678
|
Git Repositories
|
|
@@ -2679,7 +2693,7 @@
|
|
|
2679
2693
|
|
|
2680
2694
|
|
|
2681
2695
|
|
|
2682
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2696
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_9" >
|
|
2683
2697
|
|
|
2684
2698
|
|
|
2685
2699
|
|
|
@@ -2688,14 +2702,14 @@
|
|
|
2688
2702
|
<div class="md-nav__link md-nav__link--index ">
|
|
2689
2703
|
<a href="../../../user-guide/platform-functionality/graphql.html">GraphQL</a>
|
|
2690
2704
|
|
|
2691
|
-
<label for="
|
|
2705
|
+
<label for="__nav_2_4_9">
|
|
2692
2706
|
<span class="md-nav__icon md-icon"></span>
|
|
2693
2707
|
</label>
|
|
2694
2708
|
|
|
2695
2709
|
</div>
|
|
2696
2710
|
|
|
2697
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
2698
|
-
<label class="md-nav__title" for="
|
|
2711
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_9_label" aria-expanded="false">
|
|
2712
|
+
<label class="md-nav__title" for="__nav_2_4_9">
|
|
2699
2713
|
<span class="md-nav__icon md-icon"></span>
|
|
2700
2714
|
GraphQL
|
|
2701
2715
|
</label>
|
|
@@ -2747,7 +2761,7 @@
|
|
|
2747
2761
|
|
|
2748
2762
|
|
|
2749
2763
|
|
|
2750
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2764
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_11" >
|
|
2751
2765
|
|
|
2752
2766
|
|
|
2753
2767
|
|
|
@@ -2756,14 +2770,14 @@
|
|
|
2756
2770
|
<div class="md-nav__link md-nav__link--index ">
|
|
2757
2771
|
<a href="../../../user-guide/platform-functionality/jobs/index.html">Jobs</a>
|
|
2758
2772
|
|
|
2759
|
-
<label for="
|
|
2773
|
+
<label for="__nav_2_4_11">
|
|
2760
2774
|
<span class="md-nav__icon md-icon"></span>
|
|
2761
2775
|
</label>
|
|
2762
2776
|
|
|
2763
2777
|
</div>
|
|
2764
2778
|
|
|
2765
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
2766
|
-
<label class="md-nav__title" for="
|
|
2779
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_11_label" aria-expanded="false">
|
|
2780
|
+
<label class="md-nav__title" for="__nav_2_4_11">
|
|
2767
2781
|
<span class="md-nav__icon md-icon"></span>
|
|
2768
2782
|
Jobs
|
|
2769
2783
|
</label>
|
|
@@ -2885,7 +2899,7 @@
|
|
|
2885
2899
|
|
|
2886
2900
|
|
|
2887
2901
|
|
|
2888
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2902
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_15" >
|
|
2889
2903
|
|
|
2890
2904
|
|
|
2891
2905
|
|
|
@@ -2894,14 +2908,14 @@
|
|
|
2894
2908
|
<div class="md-nav__link md-nav__link--index ">
|
|
2895
2909
|
<a href="../../../user-guide/platform-functionality/rest-api/overview.html">REST API</a>
|
|
2896
2910
|
|
|
2897
|
-
<label for="
|
|
2911
|
+
<label for="__nav_2_4_15">
|
|
2898
2912
|
<span class="md-nav__icon md-icon"></span>
|
|
2899
2913
|
</label>
|
|
2900
2914
|
|
|
2901
2915
|
</div>
|
|
2902
2916
|
|
|
2903
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
2904
|
-
<label class="md-nav__title" for="
|
|
2917
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_15_label" aria-expanded="false">
|
|
2918
|
+
<label class="md-nav__title" for="__nav_2_4_15">
|
|
2905
2919
|
<span class="md-nav__icon md-icon"></span>
|
|
2906
2920
|
REST API
|
|
2907
2921
|
</label>
|
|
@@ -3037,17 +3051,17 @@
|
|
|
3037
3051
|
|
|
3038
3052
|
|
|
3039
3053
|
|
|
3040
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3054
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_21" >
|
|
3041
3055
|
|
|
3042
3056
|
|
|
3043
3057
|
|
|
3044
|
-
<label class="md-nav__link" for="
|
|
3058
|
+
<label class="md-nav__link" for="__nav_2_4_21" id="__nav_2_4_21_label" tabindex="0">
|
|
3045
3059
|
Users
|
|
3046
3060
|
<span class="md-nav__icon md-icon"></span>
|
|
3047
3061
|
</label>
|
|
3048
3062
|
|
|
3049
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
3050
|
-
<label class="md-nav__title" for="
|
|
3063
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_21_label" aria-expanded="false">
|
|
3064
|
+
<label class="md-nav__title" for="__nav_2_4_21">
|
|
3051
3065
|
<span class="md-nav__icon md-icon"></span>
|
|
3052
3066
|
Users
|
|
3053
3067
|
</label>
|
|
@@ -5353,6 +5367,20 @@
|
|
|
5353
5367
|
|
|
5354
5368
|
|
|
5355
5369
|
|
|
5370
|
+
<li class="md-nav__item">
|
|
5371
|
+
<a href="../../../release-notes/version-2.1.html" class="md-nav__link">
|
|
5372
|
+
Version 2.1
|
|
5373
|
+
</a>
|
|
5374
|
+
</li>
|
|
5375
|
+
|
|
5376
|
+
|
|
5377
|
+
|
|
5378
|
+
|
|
5379
|
+
|
|
5380
|
+
|
|
5381
|
+
|
|
5382
|
+
|
|
5383
|
+
|
|
5356
5384
|
<li class="md-nav__item">
|
|
5357
5385
|
<a href="../../../release-notes/version-2.0.html" class="md-nav__link">
|
|
5358
5386
|
Version 2.0
|
|
@@ -9097,8 +9125,7 @@ to return only queryset filterable parameters.</p>
|
|
|
9097
9125
|
<span class="normal"><a href="#__codelineno-0-133">133</a></span>
|
|
9098
9126
|
<span class="normal"><a href="#__codelineno-0-134">134</a></span>
|
|
9099
9127
|
<span class="normal"><a href="#__codelineno-0-135">135</a></span>
|
|
9100
|
-
<span class="normal"><a href="#__codelineno-0-136">136</a></span>
|
|
9101
|
-
<span class="normal"><a href="#__codelineno-0-137">137</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="k">def</span> <span class="nf">get_filterable_params_from_filter_params</span><span class="p">(</span><span class="n">filter_params</span><span class="p">,</span> <span class="n">non_filter_params</span><span class="p">,</span> <span class="n">filterset</span><span class="p">):</span>
|
|
9128
|
+
<span class="normal"><a href="#__codelineno-0-136">136</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="k">def</span> <span class="nf">get_filterable_params_from_filter_params</span><span class="p">(</span><span class="n">filter_params</span><span class="p">,</span> <span class="n">non_filter_params</span><span class="p">,</span> <span class="n">filterset</span><span class="p">):</span>
|
|
9102
9129
|
<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="w"> </span><span class="sd">"""</span>
|
|
9103
9130
|
<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Remove any `non_filter_params` and fields that are not a part of the filterset from `filter_params`</span>
|
|
9104
9131
|
<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> to return only queryset filterable parameters.</span>
|
|
@@ -9111,27 +9138,26 @@ to return only queryset filterable parameters.</p>
|
|
|
9111
9138
|
<a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> Returns:</span>
|
|
9112
9139
|
<a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="sd"> (QueryDict): Filter param querydict with only queryset filterable params</span>
|
|
9113
9140
|
<a id="__codelineno-0-116" name="__codelineno-0-116"></a><span class="sd"> """</span>
|
|
9114
|
-
<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="
|
|
9115
|
-
<a id="__codelineno-0-118" name="__codelineno-0-118"></a>
|
|
9116
|
-
<a id="__codelineno-0-119" name="__codelineno-0-119"></a>
|
|
9117
|
-
<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="
|
|
9118
|
-
<a id="__codelineno-0-121" name="__codelineno-0-121"></a>
|
|
9119
|
-
<a id="__codelineno-0-122" name="__codelineno-0-122"></a>
|
|
9120
|
-
<a id="__codelineno-0-123" name="__codelineno-0-123"></a>
|
|
9121
|
-
<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
|
|
9122
|
-
<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="c1">#
|
|
9123
|
-
<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="c1">#
|
|
9124
|
-
<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="
|
|
9125
|
-
<a id="__codelineno-0-128" name="__codelineno-0-128"></a>
|
|
9126
|
-
<a id="__codelineno-0-129" name="__codelineno-0-129"></a>
|
|
9127
|
-
<a id="__codelineno-0-130" name="__codelineno-0-130"></a>
|
|
9128
|
-
<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
|
|
9129
|
-
<a id="__codelineno-0-132" name="__codelineno-0-132"></a>
|
|
9130
|
-
<a id="__codelineno-0-133" name="__codelineno-0-133"></a>
|
|
9131
|
-
<a id="__codelineno-0-134" name="__codelineno-0-134"></a>
|
|
9132
|
-
<a id="__codelineno-0-135" name="__codelineno-0-135"></a>
|
|
9133
|
-
<a id="__codelineno-0-136" name="__codelineno-0-136"></a>
|
|
9134
|
-
<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="k">return</span> <span class="n">final_filter_params</span>
|
|
9141
|
+
<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="c1"># Some FilterSet field only accept single choice not multiple choices</span>
|
|
9142
|
+
<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="c1"># e.g datetime field, bool fields etc.</span>
|
|
9143
|
+
<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="n">final_filter_params</span> <span class="o">=</span> <span class="p">{}</span>
|
|
9144
|
+
<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">filter_params</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
9145
|
+
<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">if</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">non_filter_params</span><span class="p">:</span>
|
|
9146
|
+
<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="k">continue</span>
|
|
9147
|
+
<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="k">if</span> <span class="n">filter_params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">field</span><span class="p">):</span>
|
|
9148
|
+
<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="c1"># `is_single_choice_field` implements `get_filterset_field`, which throws an exception if a field is not found.</span>
|
|
9149
|
+
<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="c1"># If an exception is thrown, instead of throwing an exception, set `_is_single_choice_field` to 'False'</span>
|
|
9150
|
+
<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="c1"># because the fields that were not discovered are still necessary.</span>
|
|
9151
|
+
<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="k">try</span><span class="p">:</span>
|
|
9152
|
+
<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">_is_single_choice_field</span> <span class="o">=</span> <span class="n">is_single_choice_field</span><span class="p">(</span><span class="n">filterset</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span>
|
|
9153
|
+
<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">FilterSetFieldNotFound</span><span class="p">:</span>
|
|
9154
|
+
<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">_is_single_choice_field</span> <span class="o">=</span> <span class="kc">False</span>
|
|
9155
|
+
<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
|
|
9156
|
+
<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">final_filter_params</span><span class="p">[</span><span class="n">field</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
|
9157
|
+
<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="n">filter_params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> <span class="k">if</span> <span class="n">_is_single_choice_field</span> <span class="k">else</span> <span class="n">filter_params</span><span class="o">.</span><span class="n">getlist</span><span class="p">(</span><span class="n">field</span><span class="p">)</span>
|
|
9158
|
+
<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="p">)</span>
|
|
9159
|
+
<a id="__codelineno-0-135" name="__codelineno-0-135"></a>
|
|
9160
|
+
<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">return</span> <span class="n">final_filter_params</span>
|
|
9135
9161
|
</code></pre></div></td></tr></table></div>
|
|
9136
9162
|
</details>
|
|
9137
9163
|
</div>
|
|
@@ -11136,7 +11162,8 @@ values.</p>
|
|
|
11136
11162
|
|
|
11137
11163
|
<details class="quote">
|
|
11138
11164
|
<summary>Source code in <code>nautobot/core/utils/requests.py</code></summary>
|
|
11139
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
11165
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-139">139</a></span>
|
|
11166
|
+
<span class="normal"><a href="#__codelineno-0-140">140</a></span>
|
|
11140
11167
|
<span class="normal"><a href="#__codelineno-0-141">141</a></span>
|
|
11141
11168
|
<span class="normal"><a href="#__codelineno-0-142">142</a></span>
|
|
11142
11169
|
<span class="normal"><a href="#__codelineno-0-143">143</a></span>
|
|
@@ -11168,41 +11195,40 @@ values.</p>
|
|
|
11168
11195
|
<span class="normal"><a href="#__codelineno-0-169">169</a></span>
|
|
11169
11196
|
<span class="normal"><a href="#__codelineno-0-170">170</a></span>
|
|
11170
11197
|
<span class="normal"><a href="#__codelineno-0-171">171</a></span>
|
|
11171
|
-
<span class="normal"><a href="#__codelineno-0-172">172</a></span>
|
|
11172
|
-
<
|
|
11173
|
-
<a id="__codelineno-0-141" name="__codelineno-0-141"></a><span class="
|
|
11174
|
-
<a id="__codelineno-0-142" name="__codelineno-0-142"></a
|
|
11175
|
-
<a id="__codelineno-0-143" name="__codelineno-0-143"></a>
|
|
11176
|
-
<a id="__codelineno-0-144" name="__codelineno-0-144"></a
|
|
11177
|
-
<a id="__codelineno-0-145" name="__codelineno-0-145"></a>
|
|
11178
|
-
<a id="__codelineno-0-146" name="__codelineno-0-146"></a
|
|
11179
|
-
<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
|
|
11180
|
-
<a id="__codelineno-0-148" name="__codelineno-0-148"></a
|
|
11181
|
-
<a id="__codelineno-0-149" name="__codelineno-0-149"></a>
|
|
11182
|
-
<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="sd">
|
|
11183
|
-
<a id="__codelineno-0-151" name="__codelineno-0-151"></a
|
|
11184
|
-
<a id="__codelineno-0-152" name="__codelineno-0-152"></a>
|
|
11185
|
-
<a id="__codelineno-0-153" name="__codelineno-0-153"></a><span class="sd">
|
|
11186
|
-
<a id="__codelineno-0-154" name="__codelineno-0-154"></a
|
|
11187
|
-
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="
|
|
11188
|
-
<a id="__codelineno-0-156" name="__codelineno-0-156"></a>
|
|
11189
|
-
<a id="__codelineno-0-157" name="__codelineno-0-157"></a>
|
|
11190
|
-
<a id="__codelineno-0-158" name="__codelineno-0-158"></a>
|
|
11191
|
-
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="c1">#
|
|
11192
|
-
<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="
|
|
11193
|
-
<a id="__codelineno-0-161" name="__codelineno-0-161"></a>
|
|
11194
|
-
<a id="__codelineno-0-162" name="__codelineno-0-162"></a>
|
|
11195
|
-
<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="
|
|
11196
|
-
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="
|
|
11197
|
-
<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="
|
|
11198
|
-
<a id="__codelineno-0-166" name="__codelineno-0-166"></a>
|
|
11199
|
-
<a id="__codelineno-0-167" name="__codelineno-0-167"></a>
|
|
11200
|
-
<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="
|
|
11201
|
-
<a id="__codelineno-0-169" name="__codelineno-0-169"></a>
|
|
11202
|
-
<a id="__codelineno-0-170" name="__codelineno-0-170"></a>
|
|
11203
|
-
<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="
|
|
11204
|
-
<a id="__codelineno-0-172" name="__codelineno-0-172"></a>
|
|
11205
|
-
<a id="__codelineno-0-173" name="__codelineno-0-173"></a> <span class="k">return</span> <span class="n">result</span>
|
|
11198
|
+
<span class="normal"><a href="#__codelineno-0-172">172</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-139" name="__codelineno-0-139"></a><span class="k">def</span> <span class="nf">normalize_querydict</span><span class="p">(</span><span class="n">querydict</span><span class="p">,</span> <span class="n">form_class</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
11199
|
+
<a id="__codelineno-0-140" name="__codelineno-0-140"></a><span class="w"> </span><span class="sd">"""</span>
|
|
11200
|
+
<a id="__codelineno-0-141" name="__codelineno-0-141"></a><span class="sd"> Convert a QueryDict to a normal, mutable dictionary, preserving list values. For example,</span>
|
|
11201
|
+
<a id="__codelineno-0-142" name="__codelineno-0-142"></a>
|
|
11202
|
+
<a id="__codelineno-0-143" name="__codelineno-0-143"></a><span class="sd"> QueryDict('foo=1&bar=2&bar=3&baz=')</span>
|
|
11203
|
+
<a id="__codelineno-0-144" name="__codelineno-0-144"></a>
|
|
11204
|
+
<a id="__codelineno-0-145" name="__codelineno-0-145"></a><span class="sd"> becomes:</span>
|
|
11205
|
+
<a id="__codelineno-0-146" name="__codelineno-0-146"></a>
|
|
11206
|
+
<a id="__codelineno-0-147" name="__codelineno-0-147"></a><span class="sd"> {'foo': '1', 'bar': ['2', '3'], 'baz': ''}</span>
|
|
11207
|
+
<a id="__codelineno-0-148" name="__codelineno-0-148"></a>
|
|
11208
|
+
<a id="__codelineno-0-149" name="__codelineno-0-149"></a><span class="sd"> This function is necessary because QueryDict does not provide any built-in mechanism which preserves multiple</span>
|
|
11209
|
+
<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="sd"> values.</span>
|
|
11210
|
+
<a id="__codelineno-0-151" name="__codelineno-0-151"></a>
|
|
11211
|
+
<a id="__codelineno-0-152" name="__codelineno-0-152"></a><span class="sd"> A `form_class` can be provided as a way to hint which query parameters should be treated as lists.</span>
|
|
11212
|
+
<a id="__codelineno-0-153" name="__codelineno-0-153"></a><span class="sd"> """</span>
|
|
11213
|
+
<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
|
|
11214
|
+
<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="k">if</span> <span class="n">querydict</span><span class="p">:</span>
|
|
11215
|
+
<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value_list</span> <span class="ow">in</span> <span class="n">querydict</span><span class="o">.</span><span class="n">lists</span><span class="p">():</span>
|
|
11216
|
+
<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value_list</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
11217
|
+
<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="c1"># More than one value in the querydict for this key, so keep it as a list</span>
|
|
11218
|
+
<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="c1"># TODO: we could check here and de-listify value_list if the form_class field is a single-value one?</span>
|
|
11219
|
+
<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="n">result</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value_list</span>
|
|
11220
|
+
<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="k">elif</span> <span class="p">(</span>
|
|
11221
|
+
<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="n">form_class</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
|
11222
|
+
<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="ow">and</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">form_class</span><span class="o">.</span><span class="n">base_fields</span>
|
|
11223
|
+
<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="c1"># ModelMultipleChoiceField is *not* itself a subclass of MultipleChoiceField, thanks Django!</span>
|
|
11224
|
+
<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">form_class</span><span class="o">.</span><span class="n">base_fields</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">MultipleChoiceField</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">ModelMultipleChoiceField</span><span class="p">))</span>
|
|
11225
|
+
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="p">):</span>
|
|
11226
|
+
<a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="c1"># Even though there's only a single value in the querydict for this key, the form wants it as a list</span>
|
|
11227
|
+
<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="n">result</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value_list</span>
|
|
11228
|
+
<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="k">else</span><span class="p">:</span>
|
|
11229
|
+
<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="c1"># Only a single value in the querydict for this key, and no guidance otherwise, so make it single</span>
|
|
11230
|
+
<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="n">result</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value_list</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
11231
|
+
<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="k">return</span> <span class="n">result</span>
|
|
11206
11232
|
</code></pre></div></td></tr></table></div>
|
|
11207
11233
|
</details>
|
|
11208
11234
|
</div>
|