nautobot 2.0.4__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_api.py +79 -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 +6 -1
- nautobot/core/middleware.py +12 -4
- nautobot/core/models/fields.py +12 -2
- nautobot/core/settings.py +9 -8
- nautobot/core/tables.py +26 -31
- 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/templatetags/helpers.py +9 -9
- 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 +4 -4
- 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_utils.py +23 -20
- nautobot/core/tests/test_views.py +11 -85
- nautobot/core/urls.py +6 -1
- nautobot/core/utils/data.py +5 -1
- nautobot/core/utils/filtering.py +6 -4
- 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 +15 -11
- nautobot/core/views/mixins.py +9 -8
- nautobot/core/views/renderers.py +5 -0
- nautobot/core/views/utils.py +23 -24
- nautobot/dcim/api/serializers.py +8 -4
- nautobot/dcim/models/device_components.py +1 -0
- nautobot/dcim/models/devices.py +7 -6
- 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 +8 -1
- nautobot/dcim/tests/test_filters.py +11 -3
- nautobot/dcim/views.py +5 -6
- 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/context_managers.py +34 -8
- 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 +39 -17
- 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/customfields.py +2 -2
- nautobot/extras/models/models.py +101 -18
- nautobot/extras/models/relationships.py +13 -8
- nautobot/extras/navigation.py +17 -29
- nautobot/extras/signals.py +80 -59
- nautobot/extras/tables.py +28 -2
- 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/templatetags/computed_fields.py +6 -13
- nautobot/extras/templatetags/custom_links.py +19 -12
- nautobot/extras/templatetags/job_buttons.py +34 -19
- nautobot/extras/templatetags/plugins.py +1 -1
- nautobot/extras/test_jobs/file_output.py +16 -0
- nautobot/extras/tests/test_api.py +92 -0
- nautobot/extras/tests/test_context_managers.py +94 -4
- nautobot/extras/tests/test_customfields.py +1 -1
- nautobot/extras/tests/test_filters.py +64 -2
- nautobot/extras/tests/test_jobs.py +75 -22
- nautobot/extras/tests/test_models.py +34 -0
- nautobot/extras/tests/test_relationships.py +2 -2
- nautobot/extras/tests/test_views.py +204 -4
- nautobot/extras/tests/test_webhooks.py +61 -25
- nautobot/extras/urls.py +1 -0
- nautobot/extras/views.py +27 -13
- nautobot/extras/webhooks.py +16 -25
- nautobot/ipam/fields.py +5 -0
- nautobot/ipam/forms.py +16 -0
- nautobot/ipam/models.py +13 -2
- nautobot/ipam/navigation.py +2 -59
- nautobot/ipam/tables.py +1 -1
- 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_models.py +7 -0
- nautobot/ipam/tests/test_views.py +8 -1
- nautobot/ipam/views.py +99 -58
- 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 +138 -99
- nautobot/project-static/css/dark.css +65 -6
- nautobot/project-static/docs/404.html +45 -17
- nautobot/project-static/docs/apps/index.html +45 -17
- nautobot/project-static/docs/apps/nautobot-apps.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1598 -1458
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +229 -152
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +46 -18
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +354 -433
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +67 -39
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2083 -2234
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +1389 -1247
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +129 -111
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +3601 -3457
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +45 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +320 -284
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +3863 -3801
- nautobot/project-static/docs/development/apps/api/configuration-view.html +45 -17
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +45 -17
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +45 -17
- nautobot/project-static/docs/development/apps/api/models/global-search.html +45 -17
- nautobot/project-static/docs/development/apps/api/models/graphql.html +45 -17
- nautobot/project-static/docs/development/apps/api/models/index.html +45 -17
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +45 -17
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +45 -17
- nautobot/project-static/docs/development/apps/api/prometheus.html +45 -17
- nautobot/project-static/docs/development/apps/api/setup.html +45 -17
- nautobot/project-static/docs/development/apps/api/testing.html +45 -17
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +45 -17
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +45 -17
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +45 -17
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +45 -17
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +45 -17
- nautobot/project-static/docs/development/apps/api/ui-extensions/tabs.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/base-template.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/index.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/notes.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/urls.html +45 -17
- nautobot/project-static/docs/development/apps/api/views/view-overrides.html +45 -17
- nautobot/project-static/docs/development/apps/index.html +45 -17
- nautobot/project-static/docs/development/apps/migration/code-updates.html +45 -17
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +45 -17
- nautobot/project-static/docs/development/apps/migration/from-v1.html +45 -17
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +45 -17
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +45 -17
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +45 -17
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +45 -17
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +45 -17
- nautobot/project-static/docs/development/core/application-registry.html +45 -17
- nautobot/project-static/docs/development/core/best-practices.html +45 -17
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +45 -17
- nautobot/project-static/docs/development/core/extending-models.html +45 -17
- nautobot/project-static/docs/development/core/generic-views.html +45 -17
- nautobot/project-static/docs/development/core/getting-started.html +45 -17
- nautobot/project-static/docs/development/core/homepage.html +45 -17
- nautobot/project-static/docs/development/core/index.html +45 -17
- nautobot/project-static/docs/development/core/model-features.html +45 -17
- nautobot/project-static/docs/development/core/natural-keys.html +45 -17
- nautobot/project-static/docs/development/core/navigation-menu.html +45 -22
- nautobot/project-static/docs/development/core/react-ui.html +45 -17
- nautobot/project-static/docs/development/core/release-checklist.html +46 -18
- nautobot/project-static/docs/development/core/role-internals.html +45 -17
- nautobot/project-static/docs/development/core/style-guide.html +45 -17
- nautobot/project-static/docs/development/core/templates.html +45 -17
- nautobot/project-static/docs/development/core/testing.html +45 -17
- nautobot/project-static/docs/development/core/user-preferences.html +45 -17
- nautobot/project-static/docs/development/index.html +45 -17
- nautobot/project-static/docs/development/jobs/index.html +281 -235
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +45 -17
- nautobot/project-static/docs/index.html +45 -17
- nautobot/project-static/docs/media/nautobot_application_stack_low_level.png +0 -0
- nautobot/project-static/docs/media/nautobot_application_stack_low_level.txt +1 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/release-notes/index.html +48 -20
- nautobot/project-static/docs/release-notes/version-1.0.html +45 -17
- nautobot/project-static/docs/release-notes/version-1.1.html +45 -17
- nautobot/project-static/docs/release-notes/version-1.2.html +45 -17
- nautobot/project-static/docs/release-notes/version-1.3.html +45 -17
- nautobot/project-static/docs/release-notes/version-1.4.html +45 -17
- nautobot/project-static/docs/release-notes/version-1.5.html +45 -17
- nautobot/project-static/docs/release-notes/version-1.6.html +46 -18
- nautobot/project-static/docs/release-notes/version-2.0.html +372 -199
- nautobot/project-static/docs/release-notes/version-2.1.html +5724 -0
- nautobot/project-static/docs/requirements.txt +1 -1
- 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 +45 -17
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +45 -17
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +45 -17
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +45 -17
- nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +45 -17
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +110 -44
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +45 -17
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +48 -20
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +45 -17
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +45 -17
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +45 -17
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +45 -17
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +45 -17
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +49 -20
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/docker.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/index.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +45 -17
- nautobot/project-static/docs/user-guide/administration/installation/services.html +45 -17
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +45 -17
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +45 -17
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +45 -17
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +45 -17
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +45 -17
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +45 -17
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +45 -17
- nautobot/project-static/docs/user-guide/index.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +111 -17
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +48 -20
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +5359 -0
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +48 -20
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +114 -45
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +45 -17
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +45 -17
- 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.4.dist-info → nautobot-2.1.0b1.dist-info}/METADATA +2 -2
- {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/RECORD +405 -786
- CHANGELOG.md +0 -3
- CONTRIBUTING.md +0 -3
- NOTICE +0 -8
- nautobot/docs/apps/index.md +0 -22
- nautobot/docs/apps/nautobot-apps.md +0 -10
- nautobot/docs/assets/app-icons/icon-ChatOps.png +0 -0
- nautobot/docs/assets/app-icons/icon-DataValidationEngine.png +0 -0
- nautobot/docs/assets/app-icons/icon-DeviceLifecycle.png +0 -0
- nautobot/docs/assets/app-icons/icon-DeviceOnboarding.png +0 -0
- nautobot/docs/assets/app-icons/icon-FirewallModels.png +0 -0
- nautobot/docs/assets/app-icons/icon-GoldenConfiguration.png +0 -0
- nautobot/docs/assets/app-icons/icon-NautobotPluginNornir.png +0 -0
- nautobot/docs/assets/app-icons/icon-SSoT.png +0 -0
- nautobot/docs/assets/extra.css +0 -139
- nautobot/docs/assets/favicon.ico +0 -0
- nautobot/docs/assets/nautobot_logo.png +0 -0
- nautobot/docs/assets/nautobot_logo.svg +0 -131
- nautobot/docs/assets/networktocode_bw.png +0 -0
- nautobot/docs/assets/overrides/partials/copyright.html +0 -20
- nautobot/docs/development/apps/api/configuration-view.md +0 -35
- nautobot/docs/development/apps/api/database-backend-config.md +0 -26
- nautobot/docs/development/apps/api/models/django-admin.md +0 -20
- nautobot/docs/development/apps/api/models/global-search.md +0 -11
- nautobot/docs/development/apps/api/models/graphql.md +0 -97
- nautobot/docs/development/apps/api/models/index.md +0 -81
- nautobot/docs/development/apps/api/nautobot-app-config.md +0 -84
- nautobot/docs/development/apps/api/platform-features/custom-validators.md +0 -30
- nautobot/docs/development/apps/api/platform-features/filter-extensions.md +0 -49
- nautobot/docs/development/apps/api/platform-features/git-repository-content.md +0 -62
- nautobot/docs/development/apps/api/platform-features/index.md +0 -1
- nautobot/docs/development/apps/api/platform-features/jinja2-filters.md +0 -28
- nautobot/docs/development/apps/api/platform-features/jobs.md +0 -29
- nautobot/docs/development/apps/api/platform-features/populating-extensibility-features.md +0 -58
- nautobot/docs/development/apps/api/platform-features/secrets-providers.md +0 -64
- nautobot/docs/development/apps/api/platform-features/uniquely-identify-objects.md +0 -63
- nautobot/docs/development/apps/api/prometheus.md +0 -25
- nautobot/docs/development/apps/api/setup.md +0 -132
- nautobot/docs/development/apps/api/testing.md +0 -55
- nautobot/docs/development/apps/api/ui-extensions/banners.md +0 -26
- nautobot/docs/development/apps/api/ui-extensions/home-page.md +0 -9
- nautobot/docs/development/apps/api/ui-extensions/index.md +0 -1
- nautobot/docs/development/apps/api/ui-extensions/navigation.md +0 -15
- nautobot/docs/development/apps/api/ui-extensions/object-detail-views.md +0 -74
- nautobot/docs/development/apps/api/ui-extensions/tabs.md +0 -52
- nautobot/docs/development/apps/api/views/base-template.md +0 -38
- nautobot/docs/development/apps/api/views/core-view-overrides.md +0 -26
- nautobot/docs/development/apps/api/views/django-generic-views.md +0 -23
- nautobot/docs/development/apps/api/views/help-documentation.md +0 -16
- nautobot/docs/development/apps/api/views/index.md +0 -3
- nautobot/docs/development/apps/api/views/nautobot-generic-views.md +0 -35
- nautobot/docs/development/apps/api/views/nautobotuiviewset.md +0 -147
- nautobot/docs/development/apps/api/views/nautobotuiviewsetrouter.md +0 -41
- nautobot/docs/development/apps/api/views/notes.md +0 -25
- nautobot/docs/development/apps/api/views/rest-api.md +0 -64
- nautobot/docs/development/apps/api/views/urls.md +0 -26
- nautobot/docs/development/apps/api/views/view-overrides.md +0 -50
- nautobot/docs/development/apps/index.md +0 -75
- nautobot/docs/development/apps/migration/code-updates.md +0 -160
- nautobot/docs/development/apps/migration/dependency-updates.md +0 -13
- nautobot/docs/development/apps/migration/from-v1.md +0 -56
- nautobot/docs/development/apps/migration/model-updates/dcim.md +0 -285
- nautobot/docs/development/apps/migration/model-updates/extras.md +0 -30
- nautobot/docs/development/apps/migration/model-updates/global.md +0 -5
- nautobot/docs/development/apps/migration/model-updates/ipam.md +0 -22
- nautobot/docs/development/apps/porting-from-netbox.md +0 -23
- nautobot/docs/development/core/application-registry.md +0 -216
- nautobot/docs/development/core/best-practices.md +0 -469
- nautobot/docs/development/core/docker-compose-advanced-use-cases.md +0 -228
- nautobot/docs/development/core/extending-models.md +0 -93
- nautobot/docs/development/core/generic-views.md +0 -65
- nautobot/docs/development/core/getting-started.md +0 -859
- nautobot/docs/development/core/homepage.md +0 -63
- nautobot/docs/development/core/index.md +0 -334
- nautobot/docs/development/core/model-features.md +0 -44
- nautobot/docs/development/core/natural-keys.md +0 -121
- nautobot/docs/development/core/navigation-menu.md +0 -142
- nautobot/docs/development/core/react-ui.md +0 -137
- nautobot/docs/development/core/release-checklist.md +0 -312
- nautobot/docs/development/core/role-internals.md +0 -28
- nautobot/docs/development/core/style-guide.md +0 -200
- nautobot/docs/development/core/templates.md +0 -101
- nautobot/docs/development/core/testing.md +0 -238
- nautobot/docs/development/core/user-preferences.md +0 -11
- nautobot/docs/development/index.md +0 -1
- nautobot/docs/development/jobs/index.md +0 -835
- nautobot/docs/development/jobs/migration/from-v1.md +0 -160
- nautobot/docs/generate_code_reference_pages.py +0 -20
- nautobot/docs/img/edge_dev_circuit_relationship.png +0 -0
- nautobot/docs/img/leaf_dev_no_circuit_relationship.png +0 -0
- nautobot/docs/img/relationship_w_json_filter.png +0 -0
- nautobot/docs/index.md +0 -105
- nautobot/docs/media/admin_ui_run_permission.png +0 -0
- nautobot/docs/media/development/homepage_changelog_panel.png +0 -0
- nautobot/docs/media/development/homepage_dcim_panel.png +0 -0
- nautobot/docs/media/development/index_bug_wf.jpg +0 -0
- nautobot/docs/media/development/index_feature_request_wf.jpg +0 -0
- nautobot/docs/media/development/index_release_cadence.drawio +0 -90
- nautobot/docs/media/development/index_release_cadence.jpg +0 -0
- nautobot/docs/media/installation/nautobot_ui_admin.png +0 -0
- nautobot/docs/media/installation/nautobot_ui_guest.png +0 -0
- nautobot/docs/media/models/dcim_cable_trace.png +0 -0
- nautobot/docs/media/models/dcim_cable_trace_circuit.png +0 -0
- nautobot/docs/media/models/dynamicgroup_filtering_01.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_01.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_02.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_03.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_04.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_05.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_01.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_02.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_03.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_04.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_05.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_06.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_07.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_basic_01.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_basic_02.png +0 -0
- nautobot/docs/media/models/dynamicgroup_workflow_basic_03.png +0 -0
- nautobot/docs/media/models/jobbutton_form.png +0 -0
- nautobot/docs/media/models/site_jobbuttons.png +0 -0
- nautobot/docs/media/nautobot_application_stack_high_level.drawio +0 -1
- nautobot/docs/media/nautobot_application_stack_high_level.png +0 -0
- nautobot/docs/media/nautobot_application_stack_low_level.drawio +0 -1
- nautobot/docs/media/nautobot_application_stack_low_level.png +0 -0
- nautobot/docs/media/nautobot_chatops.gif +0 -0
- nautobot/docs/media/nautobot_config_context.gif +0 -0
- nautobot/docs/media/nautobot_golden_config.gif +0 -0
- nautobot/docs/media/nautobot_graphql.gif +0 -0
- nautobot/docs/media/nautobot_mainpage.gif +0 -0
- nautobot/docs/media/nautobot_prefix_hierarchy.gif +0 -0
- nautobot/docs/media/plugins/plugin_admin_config.png +0 -0
- nautobot/docs/media/plugins/plugin_admin_ui.png +0 -0
- nautobot/docs/media/plugins/plugin_rest_api_endpoint.png +0 -0
- nautobot/docs/media/power_distribution.png +0 -0
- nautobot/docs/media/ss_config_contexts.png +0 -0
- nautobot/docs/media/ss_graphiql.png +0 -0
- nautobot/docs/media/ss_main_page.png +0 -0
- nautobot/docs/media/ss_plugin_chatops.png +0 -0
- nautobot/docs/media/ss_plugin_golden_config.png +0 -0
- nautobot/docs/media/ss_prefix_hierarchy.png +0 -0
- nautobot/docs/media/user-guide/administration/guides/s3-django-storage/user-guide-s3-1.png +0 -0
- nautobot/docs/media/user-guide/administration/guides/s3-django-storage/user-guide-s3-2.png +0 -0
- nautobot/docs/media/user-guide/administration/upgrading/from-v1/ipam/tenant-affinity.png +0 -0
- nautobot/docs/nautobot_logo.png +0 -0
- nautobot/docs/nautobot_logo.svg +0 -131
- nautobot/docs/release-notes/index.md +0 -3
- nautobot/docs/release-notes/version-1.0.md +0 -530
- nautobot/docs/release-notes/version-1.1.md +0 -337
- nautobot/docs/release-notes/version-1.2.md +0 -509
- nautobot/docs/release-notes/version-1.3.md +0 -554
- nautobot/docs/release-notes/version-1.4.md +0 -677
- nautobot/docs/release-notes/version-1.5.md +0 -840
- nautobot/docs/release-notes/version-1.6.md +0 -290
- nautobot/docs/release-notes/version-2.0.md +0 -1359
- nautobot/docs/requirements.txt +0 -12
- nautobot/docs/user-guide/administration/configuration/authentication/ldap.md +0 -286
- nautobot/docs/user-guide/administration/configuration/authentication/remote.md +0 -46
- nautobot/docs/user-guide/administration/configuration/authentication/sso.md +0 -528
- nautobot/docs/user-guide/administration/configuration/index.md +0 -190
- nautobot/docs/user-guide/administration/configuration/node-configuration.md +0 -31
- nautobot/docs/user-guide/administration/configuration/optional-settings.md +0 -1302
- nautobot/docs/user-guide/administration/configuration/required-settings.md +0 -244
- nautobot/docs/user-guide/administration/guides/caching.md +0 -108
- nautobot/docs/user-guide/administration/guides/celery-queues.md +0 -42
- nautobot/docs/user-guide/administration/guides/healthcheck.md +0 -11
- nautobot/docs/user-guide/administration/guides/permissions.md +0 -98
- nautobot/docs/user-guide/administration/guides/prometheus-metrics.md +0 -55
- nautobot/docs/user-guide/administration/guides/replicating-nautobot.md +0 -70
- nautobot/docs/user-guide/administration/guides/s3-django-storage.md +0 -145
- nautobot/docs/user-guide/administration/installation/app-install.md +0 -94
- nautobot/docs/user-guide/administration/installation/docker.md +0 -286
- nautobot/docs/user-guide/administration/installation/external-authentication.md +0 -9
- nautobot/docs/user-guide/administration/installation/http-server.md +0 -279
- nautobot/docs/user-guide/administration/installation/index.md +0 -101
- nautobot/docs/user-guide/administration/installation/install_system.md +0 -493
- nautobot/docs/user-guide/administration/installation/nautobot.md +0 -367
- nautobot/docs/user-guide/administration/installation/selinux-troubleshooting.md +0 -194
- nautobot/docs/user-guide/administration/installation/services.md +0 -340
- nautobot/docs/user-guide/administration/migration/migrating-from-netbox.md +0 -336
- nautobot/docs/user-guide/administration/migration/migrating-from-postgresql.md +0 -122
- nautobot/docs/user-guide/administration/tools/nautobot-server.md +0 -858
- nautobot/docs/user-guide/administration/tools/nautobot-shell.md +0 -263
- nautobot/docs/user-guide/administration/upgrading/database-backup.md +0 -11
- nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.md +0 -55
- nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.md +0 -73
- nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.md +0 -211
- nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/index.md +0 -16
- nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.md +0 -157
- nautobot/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.md +0 -153
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-api-behavior-changes.yaml +0 -82
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-api-removed-fields.yaml +0 -175
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-api-renamed-fields.yaml +0 -124
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-location-changes.yaml +0 -241
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-removals.yaml +0 -57
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-renames.yaml +0 -5
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-database-behavior-changes.yaml +0 -76
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-database-removed-fields.yaml +0 -202
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-database-renamed-fields.yaml +0 -343
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-corrected-fields.yaml +0 -31
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-enhanced-fields.yaml +0 -244
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-removed-fields.yaml +0 -595
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-renamed-fields.yaml +0 -253
- nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-logging-renamed-loggers.yaml +0 -23
- nautobot/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.md +0 -574
- nautobot/docs/user-guide/administration/upgrading/upgrading.md +0 -127
- nautobot/docs/user-guide/core-data-model/circuits/circuit.md +0 -19
- nautobot/docs/user-guide/core-data-model/circuits/circuittermination.md +0 -10
- nautobot/docs/user-guide/core-data-model/circuits/circuittype.md +0 -8
- nautobot/docs/user-guide/core-data-model/circuits/provider.md +0 -5
- nautobot/docs/user-guide/core-data-model/circuits/providernetwork.md +0 -7
- nautobot/docs/user-guide/core-data-model/dcim/cable.md +0 -43
- nautobot/docs/user-guide/core-data-model/dcim/consoleport.md +0 -8
- nautobot/docs/user-guide/core-data-model/dcim/consoleporttemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/consoleserverport.md +0 -8
- nautobot/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/device.md +0 -29
- nautobot/docs/user-guide/core-data-model/dcim/devicebay.md +0 -11
- nautobot/docs/user-guide/core-data-model/dcim/devicebaytemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/deviceredundancygroup.md +0 -279
- nautobot/docs/user-guide/core-data-model/dcim/devicetype.md +0 -44
- nautobot/docs/user-guide/core-data-model/dcim/frontport.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/frontporttemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/interface.md +0 -34
- nautobot/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.md +0 -24
- nautobot/docs/user-guide/core-data-model/dcim/interfacetemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/inventoryitem.md +0 -10
- nautobot/docs/user-guide/core-data-model/dcim/location.md +0 -15
- nautobot/docs/user-guide/core-data-model/dcim/locationtype.md +0 -43
- nautobot/docs/user-guide/core-data-model/dcim/manufacturer.md +0 -3
- nautobot/docs/user-guide/core-data-model/dcim/platform.md +0 -19
- nautobot/docs/user-guide/core-data-model/dcim/powerfeed.md +0 -25
- nautobot/docs/user-guide/core-data-model/dcim/poweroutlet.md +0 -14
- nautobot/docs/user-guide/core-data-model/dcim/poweroutlettemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/powerpanel.md +0 -12
- nautobot/docs/user-guide/core-data-model/dcim/powerport.md +0 -15
- nautobot/docs/user-guide/core-data-model/dcim/powerporttemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/rack.md +0 -41
- nautobot/docs/user-guide/core-data-model/dcim/rackgroup.md +0 -7
- nautobot/docs/user-guide/core-data-model/dcim/rackreservation.md +0 -3
- nautobot/docs/user-guide/core-data-model/dcim/rearport.md +0 -9
- nautobot/docs/user-guide/core-data-model/dcim/rearporttemplate.md +0 -6
- nautobot/docs/user-guide/core-data-model/dcim/virtualchassis.md +0 -8
- nautobot/docs/user-guide/core-data-model/extras/configcontext.md +0 -78
- nautobot/docs/user-guide/core-data-model/extras/configcontextschema.md +0 -73
- nautobot/docs/user-guide/core-data-model/ipam/ipaddress.md +0 -69
- nautobot/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio +0 -1
- nautobot/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio.svg +0 -4
- nautobot/docs/user-guide/core-data-model/ipam/namespace.md +0 -18
- nautobot/docs/user-guide/core-data-model/ipam/prefix.md +0 -65
- nautobot/docs/user-guide/core-data-model/ipam/rir.md +0 -10
- nautobot/docs/user-guide/core-data-model/ipam/routetarget.md +0 -5
- nautobot/docs/user-guide/core-data-model/ipam/service.md +0 -8
- nautobot/docs/user-guide/core-data-model/ipam/vlan.md +0 -17
- nautobot/docs/user-guide/core-data-model/ipam/vlangroup.md +0 -5
- nautobot/docs/user-guide/core-data-model/ipam/vrf.md +0 -15
- nautobot/docs/user-guide/core-data-model/tenancy/tenant.md +0 -20
- nautobot/docs/user-guide/core-data-model/tenancy/tenantgroup.md +0 -5
- nautobot/docs/user-guide/core-data-model/virtualization/cluster.md +0 -5
- nautobot/docs/user-guide/core-data-model/virtualization/clustergroup.md +0 -3
- nautobot/docs/user-guide/core-data-model/virtualization/clustertype.md +0 -3
- nautobot/docs/user-guide/core-data-model/virtualization/virtualmachine.md +0 -17
- nautobot/docs/user-guide/core-data-model/virtualization/vminterface.md +0 -19
- nautobot/docs/user-guide/feature-guides/custom-fields.md +0 -350
- nautobot/docs/user-guide/feature-guides/getting-started/creating-devices.md +0 -130
- nautobot/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.md +0 -113
- nautobot/docs/user-guide/feature-guides/getting-started/index.md +0 -29
- nautobot/docs/user-guide/feature-guides/getting-started/interfaces.md +0 -100
- nautobot/docs/user-guide/feature-guides/getting-started/ipam.md +0 -104
- nautobot/docs/user-guide/feature-guides/getting-started/platforms.md +0 -78
- nautobot/docs/user-guide/feature-guides/getting-started/search-bar.md +0 -40
- nautobot/docs/user-guide/feature-guides/getting-started/tenants.md +0 -40
- nautobot/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.md +0 -87
- nautobot/docs/user-guide/feature-guides/git-data-source.md +0 -307
- nautobot/docs/user-guide/feature-guides/graphql.md +0 -342
- nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_choices.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_detail_grouped.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_detail_label.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_edit.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_select.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/1-create-location-type.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/10-add-platform.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/11-platforms-page.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/12-add-tenant.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/13-assign-tenant-to-device.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/14-assign-tenant-to-device-2.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/15-create-device-type.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/16-interface-templates.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/17-templated-interfaces.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/18-assign-device-type.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/19-edit-ints-for-lag.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/2-create-manufacturer.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/20-ints-int-lag.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/21-device-type.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/22-create-vlans.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/23-create-vlans-2.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/24-vlan-main-page.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/25-add-vlan-to-interface.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/26-add-vlan-to-interface-2.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/27-add-rir.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/3-create-role.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/30-add-prefix.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/32-add-ip-addr.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/33-assign-address.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/34-assign-address-2.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/35-assign-address-3.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/36-verify-address.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/37-verify-prefix.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/38-verify-prefix2.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/39-address-search.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/4-create-device-type.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/40-addr-main-page.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/41-device-search-results.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/42-address-search-v2.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/43-get-to-device-main-page.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/44-add-platform.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/5-create-device.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/6-create-location.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/7-location-type-page.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/8-location-page.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/01-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/02-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/03-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/04-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/05-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/06-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/07-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/08-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/09-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/10-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/11-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/12-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/13-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/14-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/15-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/16-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/17-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/git-as-data-source/18-git-data-source.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/00-graphiql.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/01-graphiql-explorer.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/02-graphiql-explorer-device-query.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/03-graphiql-explorer-device-attributes.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/04-graphql-query-01.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/05-graphiql-autocomplete.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/06-graphql-query-02.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/07-graphql-query-03.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/08-graphql-query-04.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/09-graphql-query-05.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/10-graphql-swagger.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/graphql/11-graphql-query-06.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/ip_merge_button.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/merge_button.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/merge_view.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/no_more_dup_ips.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/skip_button.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/unselect_ips.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/01-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/02-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/03-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/04-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/05-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/06-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/07-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/08-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/09-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/10-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/images/relationships/11-relationships.png +0 -0
- nautobot/docs/user-guide/feature-guides/ip-address-merge-tool.md +0 -63
- nautobot/docs/user-guide/feature-guides/relationships.md +0 -125
- nautobot/docs/user-guide/index.md +0 -1
- nautobot/docs/user-guide/platform-functionality/change-logging.md +0 -21
- nautobot/docs/user-guide/platform-functionality/computedfield.md +0 -89
- nautobot/docs/user-guide/platform-functionality/customfield.md +0 -123
- nautobot/docs/user-guide/platform-functionality/customlink.md +0 -59
- nautobot/docs/user-guide/platform-functionality/dynamicgroup.md +0 -660
- nautobot/docs/user-guide/platform-functionality/exporttemplate.md +0 -55
- nautobot/docs/user-guide/platform-functionality/gitrepository.md +0 -353
- nautobot/docs/user-guide/platform-functionality/graphql.md +0 -259
- nautobot/docs/user-guide/platform-functionality/graphqlquery.md +0 -28
- nautobot/docs/user-guide/platform-functionality/imageattachment.md +0 -10
- nautobot/docs/user-guide/platform-functionality/jobs/index.md +0 -193
- nautobot/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.md +0 -78
- nautobot/docs/user-guide/platform-functionality/jobs/jobbutton.md +0 -79
- nautobot/docs/user-guide/platform-functionality/jobs/jobhook.md +0 -15
- nautobot/docs/user-guide/platform-functionality/jobs/models.md +0 -65
- nautobot/docs/user-guide/platform-functionality/napalm.md +0 -85
- nautobot/docs/user-guide/platform-functionality/note.md +0 -7
- nautobot/docs/user-guide/platform-functionality/relationship.md +0 -158
- nautobot/docs/user-guide/platform-functionality/rest-api/authentication.md +0 -67
- nautobot/docs/user-guide/platform-functionality/rest-api/filtering.md +0 -142
- nautobot/docs/user-guide/platform-functionality/rest-api/overview.md +0 -1045
- nautobot/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.md +0 -9
- nautobot/docs/user-guide/platform-functionality/role.md +0 -17
- nautobot/docs/user-guide/platform-functionality/secret.md +0 -136
- nautobot/docs/user-guide/platform-functionality/status.md +0 -92
- nautobot/docs/user-guide/platform-functionality/tag.md +0 -62
- nautobot/docs/user-guide/platform-functionality/template-filters.md +0 -306
- nautobot/docs/user-guide/platform-functionality/users/objectpermission.md +0 -56
- nautobot/docs/user-guide/platform-functionality/users/token.md +0 -21
- nautobot/docs/user-guide/platform-functionality/webhook.md +0 -137
- nautobot/project-static/docs/media/nautobot_application_stack_low_level.drawio +0 -1
- nautobot/project-static/docs/media/nautobot_chatops.gif +0 -0
- nautobot/project-static/docs/media/nautobot_config_context.gif +0 -0
- nautobot/project-static/docs/media/nautobot_golden_config.gif +0 -0
- nautobot/project-static/docs/media/nautobot_graphql.gif +0 -0
- nautobot/project-static/docs/media/nautobot_mainpage.gif +0 -0
- nautobot/project-static/docs/media/nautobot_prefix_hierarchy.gif +0 -0
- nautobot-2.0.4.dist-info/LICENSE.txt +0 -177
- /LICENSE.txt → /nautobot-2.1.0b1.dist-info/LICENSE.txt +0 -0
- {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/WHEEL +0 -0
- {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/entry_points.txt +0 -0
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<link rel="next" href="forms.html">
|
|
18
18
|
|
|
19
19
|
<link rel="icon" href="../../../assets/favicon.ico">
|
|
20
|
-
<meta name="generator" content="mkdocs-1.
|
|
20
|
+
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.1.21">
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
|
|
@@ -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>
|
|
@@ -4316,19 +4330,6 @@
|
|
|
4316
4330
|
StatusFilter
|
|
4317
4331
|
</a>
|
|
4318
4332
|
|
|
4319
|
-
<nav class="md-nav" aria-label="StatusFilter">
|
|
4320
|
-
<ul class="md-nav__list">
|
|
4321
|
-
|
|
4322
|
-
<li class="md-nav__item">
|
|
4323
|
-
<a href="#nautobot.extras.filters.mixins.StatusFilter.get_filter_predicate" class="md-nav__link">
|
|
4324
|
-
get_filter_predicate()
|
|
4325
|
-
</a>
|
|
4326
|
-
|
|
4327
|
-
</li>
|
|
4328
|
-
|
|
4329
|
-
</ul>
|
|
4330
|
-
</nav>
|
|
4331
|
-
|
|
4332
4333
|
</li>
|
|
4333
4334
|
|
|
4334
4335
|
<li class="md-nav__item">
|
|
@@ -5121,6 +5122,20 @@
|
|
|
5121
5122
|
|
|
5122
5123
|
|
|
5123
5124
|
|
|
5125
|
+
<li class="md-nav__item">
|
|
5126
|
+
<a href="../../../release-notes/version-2.1.html" class="md-nav__link">
|
|
5127
|
+
Version 2.1
|
|
5128
|
+
</a>
|
|
5129
|
+
</li>
|
|
5130
|
+
|
|
5131
|
+
|
|
5132
|
+
|
|
5133
|
+
|
|
5134
|
+
|
|
5135
|
+
|
|
5136
|
+
|
|
5137
|
+
|
|
5138
|
+
|
|
5124
5139
|
<li class="md-nav__item">
|
|
5125
5140
|
<a href="../../../release-notes/version-2.0.html" class="md-nav__link">
|
|
5126
5141
|
Version 2.0
|
|
@@ -5715,19 +5730,6 @@
|
|
|
5715
5730
|
StatusFilter
|
|
5716
5731
|
</a>
|
|
5717
5732
|
|
|
5718
|
-
<nav class="md-nav" aria-label="StatusFilter">
|
|
5719
|
-
<ul class="md-nav__list">
|
|
5720
|
-
|
|
5721
|
-
<li class="md-nav__item">
|
|
5722
|
-
<a href="#nautobot.extras.filters.mixins.StatusFilter.get_filter_predicate" class="md-nav__link">
|
|
5723
|
-
get_filter_predicate()
|
|
5724
|
-
</a>
|
|
5725
|
-
|
|
5726
|
-
</li>
|
|
5727
|
-
|
|
5728
|
-
</ul>
|
|
5729
|
-
</nav>
|
|
5730
|
-
|
|
5731
5733
|
</li>
|
|
5732
5734
|
|
|
5733
5735
|
<li class="md-nav__item">
|
|
@@ -6080,7 +6082,15 @@
|
|
|
6080
6082
|
<span class="normal"><a href="#__codelineno-0-756">756</a></span>
|
|
6081
6083
|
<span class="normal"><a href="#__codelineno-0-757">757</a></span>
|
|
6082
6084
|
<span class="normal"><a href="#__codelineno-0-758">758</a></span>
|
|
6083
|
-
<span class="normal"><a href="#__codelineno-0-759">759</a></span
|
|
6085
|
+
<span class="normal"><a href="#__codelineno-0-759">759</a></span>
|
|
6086
|
+
<span class="normal"><a href="#__codelineno-0-760">760</a></span>
|
|
6087
|
+
<span class="normal"><a href="#__codelineno-0-761">761</a></span>
|
|
6088
|
+
<span class="normal"><a href="#__codelineno-0-762">762</a></span>
|
|
6089
|
+
<span class="normal"><a href="#__codelineno-0-763">763</a></span>
|
|
6090
|
+
<span class="normal"><a href="#__codelineno-0-764">764</a></span>
|
|
6091
|
+
<span class="normal"><a href="#__codelineno-0-765">765</a></span>
|
|
6092
|
+
<span class="normal"><a href="#__codelineno-0-766">766</a></span>
|
|
6093
|
+
<span class="normal"><a href="#__codelineno-0-767">767</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-533" name="__codelineno-0-533"></a><span class="k">class</span> <span class="nc">BaseFilterSet</span><span class="p">(</span><span class="n">django_filters</span><span class="o">.</span><span class="n">FilterSet</span><span class="p">):</span>
|
|
6084
6094
|
<a id="__codelineno-0-534" name="__codelineno-0-534"></a><span class="w"> </span><span class="sd">"""</span>
|
|
6085
6095
|
<a id="__codelineno-0-535" name="__codelineno-0-535"></a><span class="sd"> A base filterset which provides common functionality to all Nautobot filtersets.</span>
|
|
6086
6096
|
<a id="__codelineno-0-536" name="__codelineno-0-536"></a><span class="sd"> """</span>
|
|
@@ -6180,133 +6190,141 @@
|
|
|
6180
6190
|
<a id="__codelineno-0-630" name="__codelineno-0-630"></a> <span class="k">if</span> <span class="n">field</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
6181
6191
|
<a id="__codelineno-0-631" name="__codelineno-0-631"></a> <span class="k">return</span> <span class="n">magic_filters</span>
|
|
6182
6192
|
<a id="__codelineno-0-632" name="__codelineno-0-632"></a>
|
|
6183
|
-
<a id="__codelineno-0-633" name="__codelineno-0-633"></a> <span class="c1">#
|
|
6184
|
-
<a id="__codelineno-0-634" name="__codelineno-0-634"></a> <span class="k">
|
|
6185
|
-
<a id="__codelineno-0-635" name="__codelineno-0-635"></a> <span class="
|
|
6186
|
-
<a id="__codelineno-0-636" name="__codelineno-0-636"></a>
|
|
6187
|
-
<a id="__codelineno-0-637" name="__codelineno-0-637"></a> <span class="
|
|
6188
|
-
<a id="__codelineno-0-638" name="__codelineno-0-638"></a>
|
|
6189
|
-
<a id="__codelineno-0-639" name="__codelineno-0-639"></a>
|
|
6190
|
-
<a id="__codelineno-0-640" name="__codelineno-0-640"></a>
|
|
6191
|
-
<a id="__codelineno-0-641" name="__codelineno-0-641"></a>
|
|
6192
|
-
<a id="__codelineno-0-642" name="__codelineno-0-642"></a>
|
|
6193
|
-
<a id="__codelineno-0-643" name="__codelineno-0-643"></a>
|
|
6194
|
-
<a id="__codelineno-0-644" name="__codelineno-0-644"></a>
|
|
6195
|
-
<a id="__codelineno-0-645" name="__codelineno-0-645"></a>
|
|
6196
|
-
<a id="__codelineno-0-646" name="__codelineno-0-646"></a>
|
|
6197
|
-
<a id="__codelineno-0-647" name="__codelineno-0-647"></a>
|
|
6198
|
-
<a id="__codelineno-0-648" name="__codelineno-0-648"></a>
|
|
6199
|
-
<a id="__codelineno-0-649" name="__codelineno-0-649"></a>
|
|
6200
|
-
<a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="p">)</span>
|
|
6201
|
-
<a id="__codelineno-0-651" name="__codelineno-0-651"></a>
|
|
6202
|
-
<a id="__codelineno-0-652" name="__codelineno-0-652"></a>
|
|
6203
|
-
<a id="__codelineno-0-653" name="__codelineno-0-653"></a>
|
|
6204
|
-
<a id="__codelineno-0-654" name="__codelineno-0-654"></a>
|
|
6205
|
-
<a id="__codelineno-0-655" name="__codelineno-0-655"></a>
|
|
6206
|
-
<a id="__codelineno-0-656" name="__codelineno-0-656"></a>
|
|
6207
|
-
<a id="__codelineno-0-657" name="__codelineno-0-657"></a>
|
|
6208
|
-
<a id="__codelineno-0-658" name="__codelineno-0-658"></a>
|
|
6209
|
-
<a id="__codelineno-0-659" name="__codelineno-0-659"></a>
|
|
6210
|
-
<a id="__codelineno-0-660" name="__codelineno-0-660"></a>
|
|
6211
|
-
<a id="__codelineno-0-661" name="__codelineno-0-661"></a>
|
|
6212
|
-
<a id="__codelineno-0-662" name="__codelineno-0-662"></a>
|
|
6213
|
-
<a id="__codelineno-0-663" name="__codelineno-0-663"></a>
|
|
6214
|
-
<a id="__codelineno-0-664" name="__codelineno-0-664"></a>
|
|
6215
|
-
<a id="__codelineno-0-665" name="__codelineno-0-665"></a>
|
|
6216
|
-
<a id="__codelineno-0-666" name="__codelineno-0-666"></a>
|
|
6217
|
-
<a id="__codelineno-0-667" name="__codelineno-0-667"></a>
|
|
6218
|
-
<a id="__codelineno-0-668" name="__codelineno-0-668"></a>
|
|
6219
|
-
<a id="__codelineno-0-669" name="__codelineno-0-669"></a>
|
|
6220
|
-
<a id="__codelineno-0-670" name="__codelineno-0-670"></a><span class="
|
|
6221
|
-
<a id="__codelineno-0-671" name="__codelineno-0-671"></a
|
|
6222
|
-
<a id="__codelineno-0-672" name="__codelineno-0-672"></a>
|
|
6223
|
-
<a id="__codelineno-0-673" name="__codelineno-0-673"></a
|
|
6224
|
-
<a id="__codelineno-0-674" name="__codelineno-0-674"></a
|
|
6225
|
-
<a id="__codelineno-0-675" name="__codelineno-0-675"></a>
|
|
6226
|
-
<a id="__codelineno-0-676" name="__codelineno-0-676"></a>
|
|
6227
|
-
<a id="__codelineno-0-677" name="__codelineno-0-677"></a>
|
|
6228
|
-
<a id="__codelineno-0-678" name="__codelineno-0-678"></a
|
|
6229
|
-
<a id="__codelineno-0-679" name="__codelineno-0-679"></a
|
|
6230
|
-
<a id="__codelineno-0-680" name="__codelineno-0-680"></a>
|
|
6231
|
-
<a id="__codelineno-0-681" name="__codelineno-0-681"></a
|
|
6232
|
-
<a id="__codelineno-0-682" name="__codelineno-0-682"></a>
|
|
6233
|
-
<a id="__codelineno-0-683" name="__codelineno-0-683"></a> <span class="
|
|
6234
|
-
<a id="__codelineno-0-684" name="__codelineno-0-684"></a>
|
|
6235
|
-
<a id="__codelineno-0-685" name="__codelineno-0-685"></a>
|
|
6236
|
-
<a id="__codelineno-0-686" name="__codelineno-0-686"></a>
|
|
6237
|
-
<a id="__codelineno-0-687" name="__codelineno-0-687"></a>
|
|
6238
|
-
<a id="__codelineno-0-688" name="__codelineno-0-688"></a>
|
|
6239
|
-
<a id="__codelineno-0-689" name="__codelineno-0-689"></a>
|
|
6240
|
-
<a id="__codelineno-0-690" name="__codelineno-0-690"></a>
|
|
6241
|
-
<a id="__codelineno-0-691" name="__codelineno-0-691"></a>
|
|
6242
|
-
<a id="__codelineno-0-692" name="__codelineno-0-692"></a> <span class="
|
|
6243
|
-
<a id="__codelineno-0-693" name="__codelineno-0-693"></a> <span class="k">if</span> <span class="
|
|
6244
|
-
<a id="__codelineno-0-694" name="__codelineno-0-694"></a> <span class="
|
|
6245
|
-
<a id="__codelineno-0-695" name="__codelineno-0-695"></a>
|
|
6246
|
-
<a id="__codelineno-0-696" name="__codelineno-0-696"></a>
|
|
6193
|
+
<a id="__codelineno-0-633" name="__codelineno-0-633"></a> <span class="c1"># If the field allows null values, add an `isnull`` check</span>
|
|
6194
|
+
<a id="__codelineno-0-634" name="__codelineno-0-634"></a> <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="s2">"null"</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
|
6195
|
+
<a id="__codelineno-0-635" name="__codelineno-0-635"></a> <span class="c1"># Use this method vs extend as the `lookup_map` variable is generally one of</span>
|
|
6196
|
+
<a id="__codelineno-0-636" name="__codelineno-0-636"></a> <span class="c1"># the constants which we do not want to update</span>
|
|
6197
|
+
<a id="__codelineno-0-637" name="__codelineno-0-637"></a> <span class="n">lookup_map</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lookup_map</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="s2">"isnull"</span><span class="p">:</span> <span class="s2">"isnull"</span><span class="p">})</span>
|
|
6198
|
+
<a id="__codelineno-0-638" name="__codelineno-0-638"></a>
|
|
6199
|
+
<a id="__codelineno-0-639" name="__codelineno-0-639"></a> <span class="c1"># Create new filters for each lookup expression in the map</span>
|
|
6200
|
+
<a id="__codelineno-0-640" name="__codelineno-0-640"></a> <span class="k">for</span> <span class="n">lookup_name</span><span class="p">,</span> <span class="n">lookup_expr</span> <span class="ow">in</span> <span class="n">lookup_map</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
6201
|
+
<a id="__codelineno-0-641" name="__codelineno-0-641"></a> <span class="n">new_filter_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">filter_name</span><span class="si">}</span><span class="s2">__</span><span class="si">{</span><span class="n">lookup_name</span><span class="si">}</span><span class="s2">"</span>
|
|
6202
|
+
<a id="__codelineno-0-642" name="__codelineno-0-642"></a>
|
|
6203
|
+
<a id="__codelineno-0-643" name="__codelineno-0-643"></a> <span class="k">try</span><span class="p">:</span>
|
|
6204
|
+
<a id="__codelineno-0-644" name="__codelineno-0-644"></a> <span class="k">if</span> <span class="n">filter_name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">declared_filters</span> <span class="ow">and</span> <span class="n">lookup_expr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"isnull"</span><span class="p">}:</span>
|
|
6205
|
+
<a id="__codelineno-0-645" name="__codelineno-0-645"></a> <span class="c1"># The filter field has been explicitly defined on the filterset class so we must manually</span>
|
|
6206
|
+
<a id="__codelineno-0-646" name="__codelineno-0-646"></a> <span class="c1"># create the new filter with the same type because there is no guarantee the defined type</span>
|
|
6207
|
+
<a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="c1"># is the same as the default type for the field. This does not apply if the filter</span>
|
|
6208
|
+
<a id="__codelineno-0-648" name="__codelineno-0-648"></a> <span class="c1"># should retain the original lookup_expr type, such as `isnull` using a boolean field on a</span>
|
|
6209
|
+
<a id="__codelineno-0-649" name="__codelineno-0-649"></a> <span class="c1"># char or date object.</span>
|
|
6210
|
+
<a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="n">resolve_field</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">lookup_expr</span><span class="p">)</span> <span class="c1"># Will raise FieldLookupError if the lookup is invalid</span>
|
|
6211
|
+
<a id="__codelineno-0-651" name="__codelineno-0-651"></a> <span class="n">new_filter</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">filter_field</span><span class="p">)(</span>
|
|
6212
|
+
<a id="__codelineno-0-652" name="__codelineno-0-652"></a> <span class="n">field_name</span><span class="o">=</span><span class="n">field_name</span><span class="p">,</span>
|
|
6213
|
+
<a id="__codelineno-0-653" name="__codelineno-0-653"></a> <span class="n">lookup_expr</span><span class="o">=</span><span class="n">lookup_expr</span><span class="p">,</span>
|
|
6214
|
+
<a id="__codelineno-0-654" name="__codelineno-0-654"></a> <span class="n">label</span><span class="o">=</span><span class="n">filter_field</span><span class="o">.</span><span class="n">label</span><span class="p">,</span>
|
|
6215
|
+
<a id="__codelineno-0-655" name="__codelineno-0-655"></a> <span class="n">exclude</span><span class="o">=</span><span class="n">filter_field</span><span class="o">.</span><span class="n">exclude</span><span class="p">,</span>
|
|
6216
|
+
<a id="__codelineno-0-656" name="__codelineno-0-656"></a> <span class="n">distinct</span><span class="o">=</span><span class="n">filter_field</span><span class="o">.</span><span class="n">distinct</span><span class="p">,</span>
|
|
6217
|
+
<a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="o">**</span><span class="n">filter_field</span><span class="o">.</span><span class="n">extra</span><span class="p">,</span>
|
|
6218
|
+
<a id="__codelineno-0-658" name="__codelineno-0-658"></a> <span class="p">)</span>
|
|
6219
|
+
<a id="__codelineno-0-659" name="__codelineno-0-659"></a> <span class="k">else</span><span class="p">:</span>
|
|
6220
|
+
<a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="c1"># The filter field is listed in Meta.fields so we can safely rely on default behavior</span>
|
|
6221
|
+
<a id="__codelineno-0-661" name="__codelineno-0-661"></a> <span class="c1"># Will raise FieldLookupError if the lookup is invalid</span>
|
|
6222
|
+
<a id="__codelineno-0-662" name="__codelineno-0-662"></a> <span class="n">new_filter</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">filter_for_field</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">lookup_expr</span><span class="p">)</span>
|
|
6223
|
+
<a id="__codelineno-0-663" name="__codelineno-0-663"></a> <span class="k">except</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">FieldLookupError</span><span class="p">:</span>
|
|
6224
|
+
<a id="__codelineno-0-664" name="__codelineno-0-664"></a> <span class="c1"># The filter could not be created because the lookup expression is not supported on the field</span>
|
|
6225
|
+
<a id="__codelineno-0-665" name="__codelineno-0-665"></a> <span class="k">continue</span>
|
|
6226
|
+
<a id="__codelineno-0-666" name="__codelineno-0-666"></a>
|
|
6227
|
+
<a id="__codelineno-0-667" name="__codelineno-0-667"></a> <span class="k">if</span> <span class="n">lookup_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"n"</span><span class="p">):</span>
|
|
6228
|
+
<a id="__codelineno-0-668" name="__codelineno-0-668"></a> <span class="c1"># This is a negation filter which requires a queryset.exclude() clause</span>
|
|
6229
|
+
<a id="__codelineno-0-669" name="__codelineno-0-669"></a> <span class="c1"># Of course setting the negation of the existing filter's exclude attribute handles both cases</span>
|
|
6230
|
+
<a id="__codelineno-0-670" name="__codelineno-0-670"></a> <span class="n">new_filter</span><span class="o">.</span><span class="n">exclude</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">filter_field</span><span class="o">.</span><span class="n">exclude</span>
|
|
6231
|
+
<a id="__codelineno-0-671" name="__codelineno-0-671"></a>
|
|
6232
|
+
<a id="__codelineno-0-672" name="__codelineno-0-672"></a> <span class="n">magic_filters</span><span class="p">[</span><span class="n">new_filter_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_filter</span>
|
|
6233
|
+
<a id="__codelineno-0-673" name="__codelineno-0-673"></a>
|
|
6234
|
+
<a id="__codelineno-0-674" name="__codelineno-0-674"></a> <span class="k">return</span> <span class="n">magic_filters</span>
|
|
6235
|
+
<a id="__codelineno-0-675" name="__codelineno-0-675"></a>
|
|
6236
|
+
<a id="__codelineno-0-676" name="__codelineno-0-676"></a> <span class="nd">@classmethod</span>
|
|
6237
|
+
<a id="__codelineno-0-677" name="__codelineno-0-677"></a> <span class="k">def</span> <span class="nf">add_filter</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">new_filter_name</span><span class="p">,</span> <span class="n">new_filter_field</span><span class="p">):</span>
|
|
6238
|
+
<a id="__codelineno-0-678" name="__codelineno-0-678"></a><span class="w"> </span><span class="sd">"""</span>
|
|
6239
|
+
<a id="__codelineno-0-679" name="__codelineno-0-679"></a><span class="sd"> Allow filters to be added post-generation on import.</span>
|
|
6240
|
+
<a id="__codelineno-0-680" name="__codelineno-0-680"></a>
|
|
6241
|
+
<a id="__codelineno-0-681" name="__codelineno-0-681"></a><span class="sd"> Will provide `<field_name>__<lookup_expr>` generation automagically.</span>
|
|
6242
|
+
<a id="__codelineno-0-682" name="__codelineno-0-682"></a><span class="sd"> """</span>
|
|
6243
|
+
<a id="__codelineno-0-683" name="__codelineno-0-683"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_filter_field</span><span class="p">,</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">Filter</span><span class="p">):</span>
|
|
6244
|
+
<a id="__codelineno-0-684" name="__codelineno-0-684"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Tried to add filter (</span><span class="si">{</span><span class="n">new_filter_name</span><span class="si">}</span><span class="s2">) which is not an instance of Django Filter"</span><span class="p">)</span>
|
|
6245
|
+
<a id="__codelineno-0-685" name="__codelineno-0-685"></a>
|
|
6246
|
+
<a id="__codelineno-0-686" name="__codelineno-0-686"></a> <span class="k">if</span> <span class="n">new_filter_name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">base_filters</span><span class="p">:</span>
|
|
6247
|
+
<a id="__codelineno-0-687" name="__codelineno-0-687"></a> <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
|
|
6248
|
+
<a id="__codelineno-0-688" name="__codelineno-0-688"></a> <span class="sa">f</span><span class="s2">"There was a conflict with filter `</span><span class="si">{</span><span class="n">new_filter_name</span><span class="si">}</span><span class="s2">`, the custom filter was ignored."</span>
|
|
6249
|
+
<a id="__codelineno-0-689" name="__codelineno-0-689"></a> <span class="p">)</span>
|
|
6250
|
+
<a id="__codelineno-0-690" name="__codelineno-0-690"></a>
|
|
6251
|
+
<a id="__codelineno-0-691" name="__codelineno-0-691"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">base_filters</span><span class="p">[</span><span class="n">new_filter_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_filter_field</span>
|
|
6252
|
+
<a id="__codelineno-0-692" name="__codelineno-0-692"></a> <span class="c1"># django-filters has no concept of "abstract" filtersets, so we have to fake it</span>
|
|
6253
|
+
<a id="__codelineno-0-693" name="__codelineno-0-693"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
6254
|
+
<a id="__codelineno-0-694" name="__codelineno-0-694"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">base_filters</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
|
|
6255
|
+
<a id="__codelineno-0-695" name="__codelineno-0-695"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_generate_lookup_expression_filters</span><span class="p">(</span><span class="n">filter_name</span><span class="o">=</span><span class="n">new_filter_name</span><span class="p">,</span> <span class="n">filter_field</span><span class="o">=</span><span class="n">new_filter_field</span><span class="p">)</span>
|
|
6256
|
+
<a id="__codelineno-0-696" name="__codelineno-0-696"></a> <span class="p">)</span>
|
|
6247
6257
|
<a id="__codelineno-0-697" name="__codelineno-0-697"></a>
|
|
6248
6258
|
<a id="__codelineno-0-698" name="__codelineno-0-698"></a> <span class="nd">@classmethod</span>
|
|
6249
|
-
<a id="__codelineno-0-699" name="__codelineno-0-699"></a> <span class="k">def</span> <span class="nf">
|
|
6250
|
-
<a id="__codelineno-0-700" name="__codelineno-0-700"></a><span class="
|
|
6251
|
-
<a id="__codelineno-0-701" name="__codelineno-0-701"></a><span class="
|
|
6252
|
-
<a id="__codelineno-0-702" name="__codelineno-0-702"></a
|
|
6253
|
-
<a id="__codelineno-0-703" name="__codelineno-0-703"></a>
|
|
6254
|
-
<a id="__codelineno-0-704" name="__codelineno-0-704"></a>
|
|
6255
|
-
<a id="__codelineno-0-705" name="__codelineno-0-705"></a>
|
|
6256
|
-
<a id="__codelineno-0-706" name="__codelineno-0-706"></a>
|
|
6257
|
-
<a id="__codelineno-0-707" name="__codelineno-0-707"></a>
|
|
6258
|
-
<a id="__codelineno-0-708" name="__codelineno-0-708"></a
|
|
6259
|
-
<a id="__codelineno-0-709" name="__codelineno-0-709"></a
|
|
6260
|
-
<a id="__codelineno-0-710" name="__codelineno-0-710"></a
|
|
6261
|
-
<a id="__codelineno-0-711" name="__codelineno-0-711"></a>
|
|
6262
|
-
<a id="__codelineno-0-712" name="__codelineno-0-712"></a>
|
|
6263
|
-
<a id="__codelineno-0-713" name="__codelineno-0-713"></a>
|
|
6264
|
-
<a id="__codelineno-0-714" name="__codelineno-0-714"></a>
|
|
6265
|
-
<a id="__codelineno-0-715" name="__codelineno-0-715"></a>
|
|
6266
|
-
<a id="__codelineno-0-716" name="__codelineno-0-716"></a> <span class="n">
|
|
6267
|
-
<a id="__codelineno-0-717" name="__codelineno-0-717"></a>
|
|
6268
|
-
<a id="__codelineno-0-718" name="__codelineno-0-718"></a>
|
|
6269
|
-
<a id="__codelineno-0-719" name="__codelineno-0-719"></a>
|
|
6270
|
-
<a id="__codelineno-0-720" name="__codelineno-0-720"></a>
|
|
6271
|
-
<a id="__codelineno-0-721" name="__codelineno-0-721"></a>
|
|
6272
|
-
<a id="__codelineno-0-722" name="__codelineno-0-722"></a
|
|
6259
|
+
<a id="__codelineno-0-699" name="__codelineno-0-699"></a> <span class="k">def</span> <span class="nf">get_fields</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
|
6260
|
+
<a id="__codelineno-0-700" name="__codelineno-0-700"></a> <span class="n">fields</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_fields</span><span class="p">()</span>
|
|
6261
|
+
<a id="__codelineno-0-701" name="__codelineno-0-701"></a> <span class="k">if</span> <span class="s2">"id"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">fields</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">exclude</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="s2">"id"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">exclude</span><span class="p">):</span>
|
|
6262
|
+
<a id="__codelineno-0-702" name="__codelineno-0-702"></a> <span class="c1"># Add "id" as the first key in the `fields` OrderedDict</span>
|
|
6263
|
+
<a id="__codelineno-0-703" name="__codelineno-0-703"></a> <span class="n">fields</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="p">[</span><span class="n">django_filters</span><span class="o">.</span><span class="n">conf</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">DEFAULT_LOOKUP_EXPR</span><span class="p">],</span> <span class="o">**</span><span class="n">fields</span><span class="p">)</span>
|
|
6264
|
+
<a id="__codelineno-0-704" name="__codelineno-0-704"></a> <span class="k">return</span> <span class="n">fields</span>
|
|
6265
|
+
<a id="__codelineno-0-705" name="__codelineno-0-705"></a>
|
|
6266
|
+
<a id="__codelineno-0-706" name="__codelineno-0-706"></a> <span class="nd">@classmethod</span>
|
|
6267
|
+
<a id="__codelineno-0-707" name="__codelineno-0-707"></a> <span class="k">def</span> <span class="nf">get_filters</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
|
6268
|
+
<a id="__codelineno-0-708" name="__codelineno-0-708"></a><span class="w"> </span><span class="sd">"""</span>
|
|
6269
|
+
<a id="__codelineno-0-709" name="__codelineno-0-709"></a><span class="sd"> Override filter generation to support dynamic lookup expressions for certain filter types.</span>
|
|
6270
|
+
<a id="__codelineno-0-710" name="__codelineno-0-710"></a><span class="sd"> """</span>
|
|
6271
|
+
<a id="__codelineno-0-711" name="__codelineno-0-711"></a> <span class="n">filters</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_filters</span><span class="p">()</span>
|
|
6272
|
+
<a id="__codelineno-0-712" name="__codelineno-0-712"></a>
|
|
6273
|
+
<a id="__codelineno-0-713" name="__codelineno-0-713"></a> <span class="c1"># django-filters has no concept of "abstract" filtersets, so we have to fake it</span>
|
|
6274
|
+
<a id="__codelineno-0-714" name="__codelineno-0-714"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
6275
|
+
<a id="__codelineno-0-715" name="__codelineno-0-715"></a> <span class="n">new_filters</span> <span class="o">=</span> <span class="p">{}</span>
|
|
6276
|
+
<a id="__codelineno-0-716" name="__codelineno-0-716"></a> <span class="k">for</span> <span class="n">existing_filter_name</span><span class="p">,</span> <span class="n">existing_filter</span> <span class="ow">in</span> <span class="n">filters</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
6277
|
+
<a id="__codelineno-0-717" name="__codelineno-0-717"></a> <span class="n">new_filters</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
|
|
6278
|
+
<a id="__codelineno-0-718" name="__codelineno-0-718"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_generate_lookup_expression_filters</span><span class="p">(</span>
|
|
6279
|
+
<a id="__codelineno-0-719" name="__codelineno-0-719"></a> <span class="n">filter_name</span><span class="o">=</span><span class="n">existing_filter_name</span><span class="p">,</span>
|
|
6280
|
+
<a id="__codelineno-0-720" name="__codelineno-0-720"></a> <span class="n">filter_field</span><span class="o">=</span><span class="n">existing_filter</span><span class="p">,</span>
|
|
6281
|
+
<a id="__codelineno-0-721" name="__codelineno-0-721"></a> <span class="p">)</span>
|
|
6282
|
+
<a id="__codelineno-0-722" name="__codelineno-0-722"></a> <span class="p">)</span>
|
|
6273
6283
|
<a id="__codelineno-0-723" name="__codelineno-0-723"></a>
|
|
6274
|
-
<a id="__codelineno-0-724" name="__codelineno-0-724"></a
|
|
6275
|
-
<a id="__codelineno-0-725" name="__codelineno-0-725"></a
|
|
6276
|
-
<a id="__codelineno-0-726" name="__codelineno-0-726"></a> <span class="k">
|
|
6277
|
-
<a id="__codelineno-0-727" name="__codelineno-0-727"></a>
|
|
6278
|
-
<a id="__codelineno-0-728" name="__codelineno-0-728"></a>
|
|
6279
|
-
<a id="__codelineno-0-729" name="__codelineno-0-729"></a>
|
|
6280
|
-
<a id="__codelineno-0-730" name="__codelineno-0-730"></a
|
|
6281
|
-
<a id="__codelineno-0-731" name="__codelineno-0-731"></a>
|
|
6282
|
-
<a id="__codelineno-0-732" name="__codelineno-0-732"></a
|
|
6283
|
-
<a id="__codelineno-0-733" name="__codelineno-0-733"></a
|
|
6284
|
-
<a id="__codelineno-0-734" name="__codelineno-0-734"></a>
|
|
6285
|
-
<a id="__codelineno-0-735" name="__codelineno-0-735"></a>
|
|
6286
|
-
<a id="__codelineno-0-736" name="__codelineno-0-736"></a><span class="
|
|
6287
|
-
<a id="__codelineno-0-737" name="__codelineno-0-737"></a>
|
|
6288
|
-
<a id="__codelineno-0-738" name="__codelineno-0-738"></a>
|
|
6289
|
-
<a id="__codelineno-0-739" name="__codelineno-0-739"></a>
|
|
6290
|
-
<a id="__codelineno-0-740" name="__codelineno-0-740"></a>
|
|
6291
|
-
<a id="__codelineno-0-741" name="__codelineno-0-741"></a>
|
|
6292
|
-
<a id="__codelineno-0-742" name="__codelineno-0-742"></a>
|
|
6293
|
-
<a id="__codelineno-0-743" name="__codelineno-0-743"></a>
|
|
6294
|
-
<a id="__codelineno-0-744" name="__codelineno-0-744"></a
|
|
6295
|
-
<a id="__codelineno-0-745" name="__codelineno-0-745"></a>
|
|
6296
|
-
<a id="__codelineno-0-746" name="__codelineno-0-746"></a>
|
|
6297
|
-
<a id="__codelineno-0-747" name="__codelineno-0-747"></a>
|
|
6298
|
-
<a id="__codelineno-0-748" name="__codelineno-0-748"></a><span class="
|
|
6299
|
-
<a id="__codelineno-0-749" name="__codelineno-0-749"></a>
|
|
6300
|
-
<a id="__codelineno-0-750" name="__codelineno-0-750"></a>
|
|
6301
|
-
<a id="__codelineno-0-751" name="__codelineno-0-751"></a>
|
|
6302
|
-
<a id="__codelineno-0-752" name="__codelineno-0-752"></a>
|
|
6303
|
-
<a id="__codelineno-0-753" name="__codelineno-0-753"></a>
|
|
6304
|
-
<a id="__codelineno-0-754" name="__codelineno-0-754"></a>
|
|
6305
|
-
<a id="__codelineno-0-755" name="__codelineno-0-755"></a>
|
|
6306
|
-
<a id="__codelineno-0-756" name="__codelineno-0-756"></a
|
|
6307
|
-
<a id="__codelineno-0-757" name="__codelineno-0-757"></a>
|
|
6308
|
-
<a id="__codelineno-0-758" name="__codelineno-0-758"></a>
|
|
6309
|
-
<a id="__codelineno-0-759" name="__codelineno-0-759"></a>
|
|
6284
|
+
<a id="__codelineno-0-724" name="__codelineno-0-724"></a> <span class="n">filters</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">new_filters</span><span class="p">)</span>
|
|
6285
|
+
<a id="__codelineno-0-725" name="__codelineno-0-725"></a>
|
|
6286
|
+
<a id="__codelineno-0-726" name="__codelineno-0-726"></a> <span class="k">return</span> <span class="n">filters</span>
|
|
6287
|
+
<a id="__codelineno-0-727" name="__codelineno-0-727"></a>
|
|
6288
|
+
<a id="__codelineno-0-728" name="__codelineno-0-728"></a> <span class="nd">@classmethod</span>
|
|
6289
|
+
<a id="__codelineno-0-729" name="__codelineno-0-729"></a> <span class="k">def</span> <span class="nf">filter_for_lookup</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">lookup_type</span><span class="p">):</span>
|
|
6290
|
+
<a id="__codelineno-0-730" name="__codelineno-0-730"></a><span class="w"> </span><span class="sd">"""Override filter_for_lookup method to set ChoiceField Filter to MultipleChoiceFilter.</span>
|
|
6291
|
+
<a id="__codelineno-0-731" name="__codelineno-0-731"></a>
|
|
6292
|
+
<a id="__codelineno-0-732" name="__codelineno-0-732"></a><span class="sd"> Note: Any CharField or IntegerField with choices set is a ChoiceField.</span>
|
|
6293
|
+
<a id="__codelineno-0-733" name="__codelineno-0-733"></a><span class="sd"> """</span>
|
|
6294
|
+
<a id="__codelineno-0-734" name="__codelineno-0-734"></a> <span class="k">if</span> <span class="n">lookup_type</span> <span class="o">==</span> <span class="s2">"exact"</span> <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="s2">"choices"</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
|
6295
|
+
<a id="__codelineno-0-735" name="__codelineno-0-735"></a> <span class="k">return</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">MultipleChoiceFilter</span><span class="p">,</span> <span class="p">{</span><span class="s2">"choices"</span><span class="p">:</span> <span class="n">field</span><span class="o">.</span><span class="n">choices</span><span class="p">}</span>
|
|
6296
|
+
<a id="__codelineno-0-736" name="__codelineno-0-736"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">filter_for_lookup</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">lookup_type</span><span class="p">)</span>
|
|
6297
|
+
<a id="__codelineno-0-737" name="__codelineno-0-737"></a>
|
|
6298
|
+
<a id="__codelineno-0-738" name="__codelineno-0-738"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
6299
|
+
<a id="__codelineno-0-739" name="__codelineno-0-739"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">)</span>
|
|
6300
|
+
<a id="__codelineno-0-740" name="__codelineno-0-740"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="o">=</span> <span class="kc">None</span>
|
|
6301
|
+
<a id="__codelineno-0-741" name="__codelineno-0-741"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_errors</span> <span class="o">=</span> <span class="kc">None</span>
|
|
6302
|
+
<a id="__codelineno-0-742" name="__codelineno-0-742"></a>
|
|
6303
|
+
<a id="__codelineno-0-743" name="__codelineno-0-743"></a> <span class="k">def</span> <span class="nf">is_valid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
6304
|
+
<a id="__codelineno-0-744" name="__codelineno-0-744"></a><span class="w"> </span><span class="sd">"""Extend FilterSet.is_valid() to potentially enforce settings.STRICT_FILTERING."""</span>
|
|
6305
|
+
<a id="__codelineno-0-745" name="__codelineno-0-745"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
6306
|
+
<a id="__codelineno-0-746" name="__codelineno-0-746"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span>
|
|
6307
|
+
<a id="__codelineno-0-747" name="__codelineno-0-747"></a> <span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">STRICT_FILTERING</span><span class="p">:</span>
|
|
6308
|
+
<a id="__codelineno-0-748" name="__codelineno-0-748"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="ow">and</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
|
6309
|
+
<a id="__codelineno-0-749" name="__codelineno-0-749"></a> <span class="k">else</span><span class="p">:</span>
|
|
6310
|
+
<a id="__codelineno-0-750" name="__codelineno-0-750"></a> <span class="c1"># Trigger warning logs associated with generating self.errors</span>
|
|
6311
|
+
<a id="__codelineno-0-751" name="__codelineno-0-751"></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span>
|
|
6312
|
+
<a id="__codelineno-0-752" name="__codelineno-0-752"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span>
|
|
6313
|
+
<a id="__codelineno-0-753" name="__codelineno-0-753"></a>
|
|
6314
|
+
<a id="__codelineno-0-754" name="__codelineno-0-754"></a> <span class="nd">@property</span>
|
|
6315
|
+
<a id="__codelineno-0-755" name="__codelineno-0-755"></a> <span class="k">def</span> <span class="nf">errors</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
6316
|
+
<a id="__codelineno-0-756" name="__codelineno-0-756"></a><span class="w"> </span><span class="sd">"""Extend FilterSet.errors to potentially include additional errors from settings.STRICT_FILTERING."""</span>
|
|
6317
|
+
<a id="__codelineno-0-757" name="__codelineno-0-757"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errors</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
6318
|
+
<a id="__codelineno-0-758" name="__codelineno-0-758"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_errors</span> <span class="o">=</span> <span class="n">ErrorDict</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">errors</span><span class="p">)</span>
|
|
6319
|
+
<a id="__codelineno-0-759" name="__codelineno-0-759"></a> <span class="k">for</span> <span class="n">extra_key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
|
|
6320
|
+
<a id="__codelineno-0-760" name="__codelineno-0-760"></a> <span class="c1"># If a given field was invalid, it will be omitted from cleaned_data; don't report extra errors</span>
|
|
6321
|
+
<a id="__codelineno-0-761" name="__codelineno-0-761"></a> <span class="k">if</span> <span class="n">extra_key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errors</span><span class="p">:</span>
|
|
6322
|
+
<a id="__codelineno-0-762" name="__codelineno-0-762"></a> <span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">STRICT_FILTERING</span><span class="p">:</span>
|
|
6323
|
+
<a id="__codelineno-0-763" name="__codelineno-0-763"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_errors</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">extra_key</span><span class="p">,</span> <span class="n">ErrorList</span><span class="p">())</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"Unknown filter field"</span><span class="p">)</span>
|
|
6324
|
+
<a id="__codelineno-0-764" name="__codelineno-0-764"></a> <span class="k">else</span><span class="p">:</span>
|
|
6325
|
+
<a id="__codelineno-0-765" name="__codelineno-0-765"></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s1">'</span><span class="si">%s</span><span class="s1">: Unknown filter field "</span><span class="si">%s</span><span class="s1">"'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">extra_key</span><span class="p">)</span>
|
|
6326
|
+
<a id="__codelineno-0-766" name="__codelineno-0-766"></a>
|
|
6327
|
+
<a id="__codelineno-0-767" name="__codelineno-0-767"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errors</span>
|
|
6310
6328
|
</code></pre></div></td></tr></table></div>
|
|
6311
6329
|
</details>
|
|
6312
6330
|
|
|
@@ -6365,15 +6383,7 @@
|
|
|
6365
6383
|
|
|
6366
6384
|
<details class="quote">
|
|
6367
6385
|
<summary>Source code in <code>nautobot/core/filters.py</code></summary>
|
|
6368
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
6369
|
-
<span class="normal"><a href="#__codelineno-0-669">669</a></span>
|
|
6370
|
-
<span class="normal"><a href="#__codelineno-0-670">670</a></span>
|
|
6371
|
-
<span class="normal"><a href="#__codelineno-0-671">671</a></span>
|
|
6372
|
-
<span class="normal"><a href="#__codelineno-0-672">672</a></span>
|
|
6373
|
-
<span class="normal"><a href="#__codelineno-0-673">673</a></span>
|
|
6374
|
-
<span class="normal"><a href="#__codelineno-0-674">674</a></span>
|
|
6375
|
-
<span class="normal"><a href="#__codelineno-0-675">675</a></span>
|
|
6376
|
-
<span class="normal"><a href="#__codelineno-0-676">676</a></span>
|
|
6386
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-676">676</a></span>
|
|
6377
6387
|
<span class="normal"><a href="#__codelineno-0-677">677</a></span>
|
|
6378
6388
|
<span class="normal"><a href="#__codelineno-0-678">678</a></span>
|
|
6379
6389
|
<span class="normal"><a href="#__codelineno-0-679">679</a></span>
|
|
@@ -6385,27 +6395,35 @@
|
|
|
6385
6395
|
<span class="normal"><a href="#__codelineno-0-685">685</a></span>
|
|
6386
6396
|
<span class="normal"><a href="#__codelineno-0-686">686</a></span>
|
|
6387
6397
|
<span class="normal"><a href="#__codelineno-0-687">687</a></span>
|
|
6388
|
-
<span class="normal"><a href="#__codelineno-0-688">688</a></span
|
|
6389
|
-
<
|
|
6390
|
-
<
|
|
6391
|
-
<
|
|
6392
|
-
<
|
|
6393
|
-
<
|
|
6394
|
-
<
|
|
6395
|
-
<
|
|
6396
|
-
<
|
|
6397
|
-
<a id="__codelineno-0-677" name="__codelineno-0-677"></a>
|
|
6398
|
-
<a id="__codelineno-0-678" name="__codelineno-0-678"></a
|
|
6399
|
-
<a id="__codelineno-0-679" name="__codelineno-0-679"></a
|
|
6400
|
-
<a id="__codelineno-0-680" name="__codelineno-0-680"></a>
|
|
6401
|
-
<a id="__codelineno-0-681" name="__codelineno-0-681"></a
|
|
6402
|
-
<a id="__codelineno-0-682" name="__codelineno-0-682"></a>
|
|
6403
|
-
<a id="__codelineno-0-683" name="__codelineno-0-683"></a> <span class="
|
|
6404
|
-
<a id="__codelineno-0-684" name="__codelineno-0-684"></a>
|
|
6405
|
-
<a id="__codelineno-0-685" name="__codelineno-0-685"></a>
|
|
6406
|
-
<a id="__codelineno-0-686" name="__codelineno-0-686"></a>
|
|
6407
|
-
<a id="__codelineno-0-687" name="__codelineno-0-687"></a>
|
|
6408
|
-
<a id="__codelineno-0-688" name="__codelineno-0-688"></a>
|
|
6398
|
+
<span class="normal"><a href="#__codelineno-0-688">688</a></span>
|
|
6399
|
+
<span class="normal"><a href="#__codelineno-0-689">689</a></span>
|
|
6400
|
+
<span class="normal"><a href="#__codelineno-0-690">690</a></span>
|
|
6401
|
+
<span class="normal"><a href="#__codelineno-0-691">691</a></span>
|
|
6402
|
+
<span class="normal"><a href="#__codelineno-0-692">692</a></span>
|
|
6403
|
+
<span class="normal"><a href="#__codelineno-0-693">693</a></span>
|
|
6404
|
+
<span class="normal"><a href="#__codelineno-0-694">694</a></span>
|
|
6405
|
+
<span class="normal"><a href="#__codelineno-0-695">695</a></span>
|
|
6406
|
+
<span class="normal"><a href="#__codelineno-0-696">696</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-676" name="__codelineno-0-676"></a><span class="nd">@classmethod</span>
|
|
6407
|
+
<a id="__codelineno-0-677" name="__codelineno-0-677"></a><span class="k">def</span> <span class="nf">add_filter</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">new_filter_name</span><span class="p">,</span> <span class="n">new_filter_field</span><span class="p">):</span>
|
|
6408
|
+
<a id="__codelineno-0-678" name="__codelineno-0-678"></a><span class="w"> </span><span class="sd">"""</span>
|
|
6409
|
+
<a id="__codelineno-0-679" name="__codelineno-0-679"></a><span class="sd"> Allow filters to be added post-generation on import.</span>
|
|
6410
|
+
<a id="__codelineno-0-680" name="__codelineno-0-680"></a>
|
|
6411
|
+
<a id="__codelineno-0-681" name="__codelineno-0-681"></a><span class="sd"> Will provide `<field_name>__<lookup_expr>` generation automagically.</span>
|
|
6412
|
+
<a id="__codelineno-0-682" name="__codelineno-0-682"></a><span class="sd"> """</span>
|
|
6413
|
+
<a id="__codelineno-0-683" name="__codelineno-0-683"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_filter_field</span><span class="p">,</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">Filter</span><span class="p">):</span>
|
|
6414
|
+
<a id="__codelineno-0-684" name="__codelineno-0-684"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Tried to add filter (</span><span class="si">{</span><span class="n">new_filter_name</span><span class="si">}</span><span class="s2">) which is not an instance of Django Filter"</span><span class="p">)</span>
|
|
6415
|
+
<a id="__codelineno-0-685" name="__codelineno-0-685"></a>
|
|
6416
|
+
<a id="__codelineno-0-686" name="__codelineno-0-686"></a> <span class="k">if</span> <span class="n">new_filter_name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">base_filters</span><span class="p">:</span>
|
|
6417
|
+
<a id="__codelineno-0-687" name="__codelineno-0-687"></a> <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
|
|
6418
|
+
<a id="__codelineno-0-688" name="__codelineno-0-688"></a> <span class="sa">f</span><span class="s2">"There was a conflict with filter `</span><span class="si">{</span><span class="n">new_filter_name</span><span class="si">}</span><span class="s2">`, the custom filter was ignored."</span>
|
|
6419
|
+
<a id="__codelineno-0-689" name="__codelineno-0-689"></a> <span class="p">)</span>
|
|
6420
|
+
<a id="__codelineno-0-690" name="__codelineno-0-690"></a>
|
|
6421
|
+
<a id="__codelineno-0-691" name="__codelineno-0-691"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">base_filters</span><span class="p">[</span><span class="n">new_filter_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_filter_field</span>
|
|
6422
|
+
<a id="__codelineno-0-692" name="__codelineno-0-692"></a> <span class="c1"># django-filters has no concept of "abstract" filtersets, so we have to fake it</span>
|
|
6423
|
+
<a id="__codelineno-0-693" name="__codelineno-0-693"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
6424
|
+
<a id="__codelineno-0-694" name="__codelineno-0-694"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">base_filters</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
|
|
6425
|
+
<a id="__codelineno-0-695" name="__codelineno-0-695"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_generate_lookup_expression_filters</span><span class="p">(</span><span class="n">filter_name</span><span class="o">=</span><span class="n">new_filter_name</span><span class="p">,</span> <span class="n">filter_field</span><span class="o">=</span><span class="n">new_filter_field</span><span class="p">)</span>
|
|
6426
|
+
<a id="__codelineno-0-696" name="__codelineno-0-696"></a> <span class="p">)</span>
|
|
6409
6427
|
</code></pre></div></td></tr></table></div>
|
|
6410
6428
|
</details>
|
|
6411
6429
|
</div>
|
|
@@ -6434,23 +6452,23 @@
|
|
|
6434
6452
|
|
|
6435
6453
|
<details class="quote">
|
|
6436
6454
|
<summary>Source code in <code>nautobot/core/filters.py</code></summary>
|
|
6437
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
6438
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6439
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6440
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6441
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6442
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6443
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6444
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6445
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6446
|
-
<a id="__codelineno-0-
|
|
6447
|
-
<a id="__codelineno-0-
|
|
6448
|
-
<a id="__codelineno-0-
|
|
6449
|
-
<a id="__codelineno-0-
|
|
6450
|
-
<a id="__codelineno-0-
|
|
6451
|
-
<a id="__codelineno-0-
|
|
6452
|
-
<a id="__codelineno-0-
|
|
6453
|
-
<a id="__codelineno-0-
|
|
6455
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-728">728</a></span>
|
|
6456
|
+
<span class="normal"><a href="#__codelineno-0-729">729</a></span>
|
|
6457
|
+
<span class="normal"><a href="#__codelineno-0-730">730</a></span>
|
|
6458
|
+
<span class="normal"><a href="#__codelineno-0-731">731</a></span>
|
|
6459
|
+
<span class="normal"><a href="#__codelineno-0-732">732</a></span>
|
|
6460
|
+
<span class="normal"><a href="#__codelineno-0-733">733</a></span>
|
|
6461
|
+
<span class="normal"><a href="#__codelineno-0-734">734</a></span>
|
|
6462
|
+
<span class="normal"><a href="#__codelineno-0-735">735</a></span>
|
|
6463
|
+
<span class="normal"><a href="#__codelineno-0-736">736</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-728" name="__codelineno-0-728"></a><span class="nd">@classmethod</span>
|
|
6464
|
+
<a id="__codelineno-0-729" name="__codelineno-0-729"></a><span class="k">def</span> <span class="nf">filter_for_lookup</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">lookup_type</span><span class="p">):</span>
|
|
6465
|
+
<a id="__codelineno-0-730" name="__codelineno-0-730"></a><span class="w"> </span><span class="sd">"""Override filter_for_lookup method to set ChoiceField Filter to MultipleChoiceFilter.</span>
|
|
6466
|
+
<a id="__codelineno-0-731" name="__codelineno-0-731"></a>
|
|
6467
|
+
<a id="__codelineno-0-732" name="__codelineno-0-732"></a><span class="sd"> Note: Any CharField or IntegerField with choices set is a ChoiceField.</span>
|
|
6468
|
+
<a id="__codelineno-0-733" name="__codelineno-0-733"></a><span class="sd"> """</span>
|
|
6469
|
+
<a id="__codelineno-0-734" name="__codelineno-0-734"></a> <span class="k">if</span> <span class="n">lookup_type</span> <span class="o">==</span> <span class="s2">"exact"</span> <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="s2">"choices"</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
|
6470
|
+
<a id="__codelineno-0-735" name="__codelineno-0-735"></a> <span class="k">return</span> <span class="n">django_filters</span><span class="o">.</span><span class="n">MultipleChoiceFilter</span><span class="p">,</span> <span class="p">{</span><span class="s2">"choices"</span><span class="p">:</span> <span class="n">field</span><span class="o">.</span><span class="n">choices</span><span class="p">}</span>
|
|
6471
|
+
<a id="__codelineno-0-736" name="__codelineno-0-736"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">filter_for_lookup</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">lookup_type</span><span class="p">)</span>
|
|
6454
6472
|
</code></pre></div></td></tr></table></div>
|
|
6455
6473
|
</details>
|
|
6456
6474
|
</div>
|
|
@@ -6478,15 +6496,7 @@
|
|
|
6478
6496
|
|
|
6479
6497
|
<details class="quote">
|
|
6480
6498
|
<summary>Source code in <code>nautobot/core/filters.py</code></summary>
|
|
6481
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
6482
|
-
<span class="normal"><a href="#__codelineno-0-699">699</a></span>
|
|
6483
|
-
<span class="normal"><a href="#__codelineno-0-700">700</a></span>
|
|
6484
|
-
<span class="normal"><a href="#__codelineno-0-701">701</a></span>
|
|
6485
|
-
<span class="normal"><a href="#__codelineno-0-702">702</a></span>
|
|
6486
|
-
<span class="normal"><a href="#__codelineno-0-703">703</a></span>
|
|
6487
|
-
<span class="normal"><a href="#__codelineno-0-704">704</a></span>
|
|
6488
|
-
<span class="normal"><a href="#__codelineno-0-705">705</a></span>
|
|
6489
|
-
<span class="normal"><a href="#__codelineno-0-706">706</a></span>
|
|
6499
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-706">706</a></span>
|
|
6490
6500
|
<span class="normal"><a href="#__codelineno-0-707">707</a></span>
|
|
6491
6501
|
<span class="normal"><a href="#__codelineno-0-708">708</a></span>
|
|
6492
6502
|
<span class="normal"><a href="#__codelineno-0-709">709</a></span>
|
|
@@ -6498,27 +6508,35 @@
|
|
|
6498
6508
|
<span class="normal"><a href="#__codelineno-0-715">715</a></span>
|
|
6499
6509
|
<span class="normal"><a href="#__codelineno-0-716">716</a></span>
|
|
6500
6510
|
<span class="normal"><a href="#__codelineno-0-717">717</a></span>
|
|
6501
|
-
<span class="normal"><a href="#__codelineno-0-718">718</a></span
|
|
6502
|
-
<
|
|
6503
|
-
<
|
|
6504
|
-
<
|
|
6505
|
-
<
|
|
6506
|
-
<
|
|
6507
|
-
<
|
|
6508
|
-
<
|
|
6509
|
-
<
|
|
6510
|
-
<a id="__codelineno-0-707" name="__codelineno-0-707"></a
|
|
6511
|
-
<a id="__codelineno-0-708" name="__codelineno-0-708"></a
|
|
6512
|
-
<a id="__codelineno-0-709" name="__codelineno-0-709"></a
|
|
6513
|
-
<a id="__codelineno-0-710" name="__codelineno-0-710"></a
|
|
6514
|
-
<a id="__codelineno-0-711" name="__codelineno-0-711"></a>
|
|
6515
|
-
<a id="__codelineno-0-712" name="__codelineno-0-712"></a>
|
|
6516
|
-
<a id="__codelineno-0-713" name="__codelineno-0-713"></a>
|
|
6517
|
-
<a id="__codelineno-0-714" name="__codelineno-0-714"></a>
|
|
6518
|
-
<a id="__codelineno-0-715" name="__codelineno-0-715"></a>
|
|
6519
|
-
<a id="__codelineno-0-716" name="__codelineno-0-716"></a> <span class="n">
|
|
6520
|
-
<a id="__codelineno-0-717" name="__codelineno-0-717"></a>
|
|
6521
|
-
<a id="__codelineno-0-718" name="__codelineno-0-718"></a>
|
|
6511
|
+
<span class="normal"><a href="#__codelineno-0-718">718</a></span>
|
|
6512
|
+
<span class="normal"><a href="#__codelineno-0-719">719</a></span>
|
|
6513
|
+
<span class="normal"><a href="#__codelineno-0-720">720</a></span>
|
|
6514
|
+
<span class="normal"><a href="#__codelineno-0-721">721</a></span>
|
|
6515
|
+
<span class="normal"><a href="#__codelineno-0-722">722</a></span>
|
|
6516
|
+
<span class="normal"><a href="#__codelineno-0-723">723</a></span>
|
|
6517
|
+
<span class="normal"><a href="#__codelineno-0-724">724</a></span>
|
|
6518
|
+
<span class="normal"><a href="#__codelineno-0-725">725</a></span>
|
|
6519
|
+
<span class="normal"><a href="#__codelineno-0-726">726</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-706" name="__codelineno-0-706"></a><span class="nd">@classmethod</span>
|
|
6520
|
+
<a id="__codelineno-0-707" name="__codelineno-0-707"></a><span class="k">def</span> <span class="nf">get_filters</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
|
6521
|
+
<a id="__codelineno-0-708" name="__codelineno-0-708"></a><span class="w"> </span><span class="sd">"""</span>
|
|
6522
|
+
<a id="__codelineno-0-709" name="__codelineno-0-709"></a><span class="sd"> Override filter generation to support dynamic lookup expressions for certain filter types.</span>
|
|
6523
|
+
<a id="__codelineno-0-710" name="__codelineno-0-710"></a><span class="sd"> """</span>
|
|
6524
|
+
<a id="__codelineno-0-711" name="__codelineno-0-711"></a> <span class="n">filters</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_filters</span><span class="p">()</span>
|
|
6525
|
+
<a id="__codelineno-0-712" name="__codelineno-0-712"></a>
|
|
6526
|
+
<a id="__codelineno-0-713" name="__codelineno-0-713"></a> <span class="c1"># django-filters has no concept of "abstract" filtersets, so we have to fake it</span>
|
|
6527
|
+
<a id="__codelineno-0-714" name="__codelineno-0-714"></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
6528
|
+
<a id="__codelineno-0-715" name="__codelineno-0-715"></a> <span class="n">new_filters</span> <span class="o">=</span> <span class="p">{}</span>
|
|
6529
|
+
<a id="__codelineno-0-716" name="__codelineno-0-716"></a> <span class="k">for</span> <span class="n">existing_filter_name</span><span class="p">,</span> <span class="n">existing_filter</span> <span class="ow">in</span> <span class="n">filters</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
6530
|
+
<a id="__codelineno-0-717" name="__codelineno-0-717"></a> <span class="n">new_filters</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
|
|
6531
|
+
<a id="__codelineno-0-718" name="__codelineno-0-718"></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_generate_lookup_expression_filters</span><span class="p">(</span>
|
|
6532
|
+
<a id="__codelineno-0-719" name="__codelineno-0-719"></a> <span class="n">filter_name</span><span class="o">=</span><span class="n">existing_filter_name</span><span class="p">,</span>
|
|
6533
|
+
<a id="__codelineno-0-720" name="__codelineno-0-720"></a> <span class="n">filter_field</span><span class="o">=</span><span class="n">existing_filter</span><span class="p">,</span>
|
|
6534
|
+
<a id="__codelineno-0-721" name="__codelineno-0-721"></a> <span class="p">)</span>
|
|
6535
|
+
<a id="__codelineno-0-722" name="__codelineno-0-722"></a> <span class="p">)</span>
|
|
6536
|
+
<a id="__codelineno-0-723" name="__codelineno-0-723"></a>
|
|
6537
|
+
<a id="__codelineno-0-724" name="__codelineno-0-724"></a> <span class="n">filters</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">new_filters</span><span class="p">)</span>
|
|
6538
|
+
<a id="__codelineno-0-725" name="__codelineno-0-725"></a>
|
|
6539
|
+
<a id="__codelineno-0-726" name="__codelineno-0-726"></a> <span class="k">return</span> <span class="n">filters</span>
|
|
6522
6540
|
</code></pre></div></td></tr></table></div>
|
|
6523
6541
|
</details>
|
|
6524
6542
|
</div>
|
|
@@ -6542,25 +6560,25 @@
|
|
|
6542
6560
|
|
|
6543
6561
|
<details class="quote">
|
|
6544
6562
|
<summary>Source code in <code>nautobot/core/filters.py</code></summary>
|
|
6545
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
6546
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6547
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6548
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6549
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6550
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6551
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6552
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6553
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6554
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
6555
|
-
<a id="__codelineno-0-
|
|
6556
|
-
<a id="__codelineno-0-
|
|
6557
|
-
<a id="__codelineno-0-
|
|
6558
|
-
<a id="__codelineno-0-
|
|
6559
|
-
<a id="__codelineno-0-
|
|
6560
|
-
<a id="__codelineno-0-
|
|
6561
|
-
<a id="__codelineno-0-
|
|
6562
|
-
<a id="__codelineno-0-
|
|
6563
|
-
<a id="__codelineno-0-
|
|
6563
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-743">743</a></span>
|
|
6564
|
+
<span class="normal"><a href="#__codelineno-0-744">744</a></span>
|
|
6565
|
+
<span class="normal"><a href="#__codelineno-0-745">745</a></span>
|
|
6566
|
+
<span class="normal"><a href="#__codelineno-0-746">746</a></span>
|
|
6567
|
+
<span class="normal"><a href="#__codelineno-0-747">747</a></span>
|
|
6568
|
+
<span class="normal"><a href="#__codelineno-0-748">748</a></span>
|
|
6569
|
+
<span class="normal"><a href="#__codelineno-0-749">749</a></span>
|
|
6570
|
+
<span class="normal"><a href="#__codelineno-0-750">750</a></span>
|
|
6571
|
+
<span class="normal"><a href="#__codelineno-0-751">751</a></span>
|
|
6572
|
+
<span class="normal"><a href="#__codelineno-0-752">752</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-743" name="__codelineno-0-743"></a><span class="k">def</span> <span class="nf">is_valid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
6573
|
+
<a id="__codelineno-0-744" name="__codelineno-0-744"></a><span class="w"> </span><span class="sd">"""Extend FilterSet.is_valid() to potentially enforce settings.STRICT_FILTERING."""</span>
|
|
6574
|
+
<a id="__codelineno-0-745" name="__codelineno-0-745"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
6575
|
+
<a id="__codelineno-0-746" name="__codelineno-0-746"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span>
|
|
6576
|
+
<a id="__codelineno-0-747" name="__codelineno-0-747"></a> <span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">STRICT_FILTERING</span><span class="p">:</span>
|
|
6577
|
+
<a id="__codelineno-0-748" name="__codelineno-0-748"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span> <span class="ow">and</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
|
6578
|
+
<a id="__codelineno-0-749" name="__codelineno-0-749"></a> <span class="k">else</span><span class="p">:</span>
|
|
6579
|
+
<a id="__codelineno-0-750" name="__codelineno-0-750"></a> <span class="c1"># Trigger warning logs associated with generating self.errors</span>
|
|
6580
|
+
<a id="__codelineno-0-751" name="__codelineno-0-751"></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span>
|
|
6581
|
+
<a id="__codelineno-0-752" name="__codelineno-0-752"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_valid</span>
|
|
6564
6582
|
</code></pre></div></td></tr></table></div>
|
|
6565
6583
|
</details>
|
|
6566
6584
|
</div>
|
|
@@ -7783,17 +7801,17 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
|
|
|
7783
7801
|
|
|
7784
7802
|
<details class="quote">
|
|
7785
7803
|
<summary>Source code in <code>nautobot/core/filters.py</code></summary>
|
|
7786
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
7787
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
7788
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
7789
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
7790
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
7791
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
7792
|
-
<a id="__codelineno-0-
|
|
7793
|
-
<a id="__codelineno-0-
|
|
7794
|
-
<a id="__codelineno-0-
|
|
7795
|
-
<a id="__codelineno-0-
|
|
7796
|
-
<a id="__codelineno-0-
|
|
7804
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-770">770</a></span>
|
|
7805
|
+
<span class="normal"><a href="#__codelineno-0-771">771</a></span>
|
|
7806
|
+
<span class="normal"><a href="#__codelineno-0-772">772</a></span>
|
|
7807
|
+
<span class="normal"><a href="#__codelineno-0-773">773</a></span>
|
|
7808
|
+
<span class="normal"><a href="#__codelineno-0-774">774</a></span>
|
|
7809
|
+
<span class="normal"><a href="#__codelineno-0-775">775</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-770" name="__codelineno-0-770"></a><span class="k">class</span> <span class="nc">NameSearchFilterSet</span><span class="p">(</span><span class="n">django_filters</span><span class="o">.</span><span class="n">FilterSet</span><span class="p">):</span>
|
|
7810
|
+
<a id="__codelineno-0-771" name="__codelineno-0-771"></a><span class="w"> </span><span class="sd">"""</span>
|
|
7811
|
+
<a id="__codelineno-0-772" name="__codelineno-0-772"></a><span class="sd"> A base class for adding the search method to models which only expose the `name` field in searches.</span>
|
|
7812
|
+
<a id="__codelineno-0-773" name="__codelineno-0-773"></a><span class="sd"> """</span>
|
|
7813
|
+
<a id="__codelineno-0-774" name="__codelineno-0-774"></a>
|
|
7814
|
+
<a id="__codelineno-0-775" name="__codelineno-0-775"></a> <span class="n">q</span> <span class="o">=</span> <span class="n">SearchFilter</span><span class="p">(</span><span class="n">filter_predicates</span><span class="o">=</span><span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"icontains"</span><span class="p">})</span>
|
|
7797
7815
|
</code></pre></div></td></tr></table></div>
|
|
7798
7816
|
</details>
|
|
7799
7817
|
|
|
@@ -8082,27 +8100,27 @@ are needed.</p>
|
|
|
8082
8100
|
|
|
8083
8101
|
<details class="quote">
|
|
8084
8102
|
<summary>Source code in <code>nautobot/extras/filters/__init__.py</code></summary>
|
|
8085
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8086
|
-
<span class="normal"><a href="#__codelineno-0-376">376</a></span>
|
|
8087
|
-
<span class="normal"><a href="#__codelineno-0-377">377</a></span>
|
|
8088
|
-
<span class="normal"><a href="#__codelineno-0-378">378</a></span>
|
|
8089
|
-
<span class="normal"><a href="#__codelineno-0-379">379</a></span>
|
|
8103
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-379">379</a></span>
|
|
8090
8104
|
<span class="normal"><a href="#__codelineno-0-380">380</a></span>
|
|
8091
8105
|
<span class="normal"><a href="#__codelineno-0-381">381</a></span>
|
|
8092
8106
|
<span class="normal"><a href="#__codelineno-0-382">382</a></span>
|
|
8093
8107
|
<span class="normal"><a href="#__codelineno-0-383">383</a></span>
|
|
8094
8108
|
<span class="normal"><a href="#__codelineno-0-384">384</a></span>
|
|
8095
|
-
<span class="normal"><a href="#__codelineno-0-385">385</a></span
|
|
8096
|
-
<
|
|
8097
|
-
<
|
|
8098
|
-
<
|
|
8099
|
-
<a id="__codelineno-0-379" name="__codelineno-0-379"></a>
|
|
8100
|
-
<a id="__codelineno-0-380" name="__codelineno-0-380"></a><span class="p"
|
|
8101
|
-
<a id="__codelineno-0-381" name="__codelineno-0-381"></a
|
|
8102
|
-
<a id="__codelineno-0-382" name="__codelineno-0-382"></a
|
|
8103
|
-
<a id="__codelineno-0-383" name="__codelineno-0-383"></a
|
|
8104
|
-
<a id="__codelineno-0-384" name="__codelineno-0-384"></a><span class="
|
|
8105
|
-
<a id="__codelineno-0-385" name="__codelineno-0-385"></a><span class="
|
|
8109
|
+
<span class="normal"><a href="#__codelineno-0-385">385</a></span>
|
|
8110
|
+
<span class="normal"><a href="#__codelineno-0-386">386</a></span>
|
|
8111
|
+
<span class="normal"><a href="#__codelineno-0-387">387</a></span>
|
|
8112
|
+
<span class="normal"><a href="#__codelineno-0-388">388</a></span>
|
|
8113
|
+
<span class="normal"><a href="#__codelineno-0-389">389</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-379" name="__codelineno-0-379"></a><span class="k">class</span> <span class="nc">NautobotFilterSet</span><span class="p">(</span>
|
|
8114
|
+
<a id="__codelineno-0-380" name="__codelineno-0-380"></a> <span class="n">BaseFilterSet</span><span class="p">,</span>
|
|
8115
|
+
<a id="__codelineno-0-381" name="__codelineno-0-381"></a> <span class="n">CreatedUpdatedModelFilterSetMixin</span><span class="p">,</span>
|
|
8116
|
+
<a id="__codelineno-0-382" name="__codelineno-0-382"></a> <span class="n">RelationshipModelFilterSetMixin</span><span class="p">,</span>
|
|
8117
|
+
<a id="__codelineno-0-383" name="__codelineno-0-383"></a> <span class="n">CustomFieldModelFilterSetMixin</span><span class="p">,</span>
|
|
8118
|
+
<a id="__codelineno-0-384" name="__codelineno-0-384"></a><span class="p">):</span>
|
|
8119
|
+
<a id="__codelineno-0-385" name="__codelineno-0-385"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8120
|
+
<a id="__codelineno-0-386" name="__codelineno-0-386"></a><span class="sd"> This class exists to combine common functionality and is used as a base class throughout the codebase where all of</span>
|
|
8121
|
+
<a id="__codelineno-0-387" name="__codelineno-0-387"></a><span class="sd"> BaseFilterSet, CreatedUpdatedModelFilterSetMixin, RelationshipModelFilterSetMixin and CustomFieldModelFilterSetMixin</span>
|
|
8122
|
+
<a id="__codelineno-0-388" name="__codelineno-0-388"></a><span class="sd"> are needed.</span>
|
|
8123
|
+
<a id="__codelineno-0-389" name="__codelineno-0-389"></a><span class="sd"> """</span>
|
|
8106
8124
|
</code></pre></div></td></tr></table></div>
|
|
8107
8125
|
</details>
|
|
8108
8126
|
|
|
@@ -8623,7 +8641,7 @@ argument to test for the existence of related objects.</p>
|
|
|
8623
8641
|
Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
|
|
8624
8642
|
|
|
8625
8643
|
|
|
8626
|
-
<p>
|
|
8644
|
+
<p>Filter field used for filtering Role fields.</p>
|
|
8627
8645
|
|
|
8628
8646
|
<details class="quote">
|
|
8629
8647
|
<summary>Source code in <code>nautobot/extras/filters/mixins.py</code></summary>
|
|
@@ -8633,25 +8651,13 @@ argument to test for the existence of related objects.</p>
|
|
|
8633
8651
|
<span class="normal"><a href="#__codelineno-0-296">296</a></span>
|
|
8634
8652
|
<span class="normal"><a href="#__codelineno-0-297">297</a></span>
|
|
8635
8653
|
<span class="normal"><a href="#__codelineno-0-298">298</a></span>
|
|
8636
|
-
<span class="normal"><a href="#__codelineno-0-299">299</a></span>
|
|
8637
|
-
<
|
|
8638
|
-
<span class="normal"><a href="#__codelineno-0-301">301</a></span>
|
|
8639
|
-
<span class="normal"><a href="#__codelineno-0-302">302</a></span>
|
|
8640
|
-
<span class="normal"><a href="#__codelineno-0-303">303</a></span>
|
|
8641
|
-
<span class="normal"><a href="#__codelineno-0-304">304</a></span>
|
|
8642
|
-
<span class="normal"><a href="#__codelineno-0-305">305</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-293" name="__codelineno-0-293"></a><span class="k">class</span> <span class="nc">RoleFilter</span><span class="p">(</span><span class="n">NaturalKeyOrPKMultipleChoiceFilter</span><span class="p">):</span>
|
|
8643
|
-
<a id="__codelineno-0-294" name="__codelineno-0-294"></a><span class="w"> </span><span class="sd">"""Limit role choices to the available role choices for self.model"""</span>
|
|
8654
|
+
<span class="normal"><a href="#__codelineno-0-299">299</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-293" name="__codelineno-0-293"></a><span class="k">class</span> <span class="nc">RoleFilter</span><span class="p">(</span><span class="n">NaturalKeyOrPKMultipleChoiceFilter</span><span class="p">):</span>
|
|
8655
|
+
<a id="__codelineno-0-294" name="__codelineno-0-294"></a><span class="w"> </span><span class="sd">"""Filter field used for filtering Role fields."""</span>
|
|
8644
8656
|
<a id="__codelineno-0-295" name="__codelineno-0-295"></a>
|
|
8645
8657
|
<a id="__codelineno-0-296" name="__codelineno-0-296"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
8646
|
-
<a id="__codelineno-0-297" name="__codelineno-0-297"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"
|
|
8647
|
-
<a id="__codelineno-0-298" name="__codelineno-0-298"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"
|
|
8648
|
-
<a id="__codelineno-0-299" name="__codelineno-0-299"></a> <span class="
|
|
8649
|
-
<a id="__codelineno-0-300" name="__codelineno-0-300"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"label"</span><span class="p">,</span> <span class="s2">"Role (name or ID)"</span><span class="p">)</span>
|
|
8650
|
-
<a id="__codelineno-0-301" name="__codelineno-0-301"></a>
|
|
8651
|
-
<a id="__codelineno-0-302" name="__codelineno-0-302"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
8652
|
-
<a id="__codelineno-0-303" name="__codelineno-0-303"></a>
|
|
8653
|
-
<a id="__codelineno-0-304" name="__codelineno-0-304"></a> <span class="k">def</span> <span class="nf">get_queryset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
|
|
8654
|
-
<a id="__codelineno-0-305" name="__codelineno-0-305"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span><span class="o">.</span><span class="n">get_for_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
|
|
8658
|
+
<a id="__codelineno-0-297" name="__codelineno-0-297"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"queryset"</span><span class="p">,</span> <span class="n">Role</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
|
8659
|
+
<a id="__codelineno-0-298" name="__codelineno-0-298"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"label"</span><span class="p">,</span> <span class="s2">"Role (name or ID)"</span><span class="p">)</span>
|
|
8660
|
+
<a id="__codelineno-0-299" name="__codelineno-0-299"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
8655
8661
|
</code></pre></div></td></tr></table></div>
|
|
8656
8662
|
</details>
|
|
8657
8663
|
|
|
@@ -8695,17 +8701,17 @@ argument to test for the existence of related objects.</p>
|
|
|
8695
8701
|
|
|
8696
8702
|
<details class="quote">
|
|
8697
8703
|
<summary>Source code in <code>nautobot/extras/filters/mixins.py</code></summary>
|
|
8698
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8699
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8700
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8701
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8702
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8703
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8704
|
-
<a id="__codelineno-0-
|
|
8705
|
-
<a id="__codelineno-0-
|
|
8706
|
-
<a id="__codelineno-0-
|
|
8707
|
-
<a id="__codelineno-0-
|
|
8708
|
-
<a id="__codelineno-0-
|
|
8704
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-302">302</a></span>
|
|
8705
|
+
<span class="normal"><a href="#__codelineno-0-303">303</a></span>
|
|
8706
|
+
<span class="normal"><a href="#__codelineno-0-304">304</a></span>
|
|
8707
|
+
<span class="normal"><a href="#__codelineno-0-305">305</a></span>
|
|
8708
|
+
<span class="normal"><a href="#__codelineno-0-306">306</a></span>
|
|
8709
|
+
<span class="normal"><a href="#__codelineno-0-307">307</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-302" name="__codelineno-0-302"></a><span class="k">class</span> <span class="nc">RoleModelFilterSetMixin</span><span class="p">(</span><span class="n">django_filters</span><span class="o">.</span><span class="n">FilterSet</span><span class="p">):</span>
|
|
8710
|
+
<a id="__codelineno-0-303" name="__codelineno-0-303"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8711
|
+
<a id="__codelineno-0-304" name="__codelineno-0-304"></a><span class="sd"> Mixin to add a `role` filter field to a FilterSet.</span>
|
|
8712
|
+
<a id="__codelineno-0-305" name="__codelineno-0-305"></a><span class="sd"> """</span>
|
|
8713
|
+
<a id="__codelineno-0-306" name="__codelineno-0-306"></a>
|
|
8714
|
+
<a id="__codelineno-0-307" name="__codelineno-0-307"></a> <span class="n">role</span> <span class="o">=</span> <span class="n">RoleFilter</span><span class="p">()</span>
|
|
8709
8715
|
</code></pre></div></td></tr></table></div>
|
|
8710
8716
|
</details>
|
|
8711
8717
|
|
|
@@ -8801,71 +8807,30 @@ argument to test for the existence of related objects.</p>
|
|
|
8801
8807
|
|
|
8802
8808
|
<div class="doc doc-contents ">
|
|
8803
8809
|
<p class="doc doc-class-bases">
|
|
8804
|
-
Bases: <code
|
|
8810
|
+
Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
|
|
8805
8811
|
|
|
8806
8812
|
|
|
8807
8813
|
<p>Filter field used for filtering Status fields.</p>
|
|
8808
|
-
<p>Explicitly sets <code>to_field_name='value'</code> and dynamically sets queryset to
|
|
8809
|
-
retrieve choices for the corresponding model & field name bound to the
|
|
8810
|
-
filterset.</p>
|
|
8811
8814
|
|
|
8812
8815
|
<details class="quote">
|
|
8813
8816
|
<summary>Source code in <code>nautobot/extras/filters/mixins.py</code></summary>
|
|
8814
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8817
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-310">310</a></span>
|
|
8818
|
+
<span class="normal"><a href="#__codelineno-0-311">311</a></span>
|
|
8819
|
+
<span class="normal"><a href="#__codelineno-0-312">312</a></span>
|
|
8820
|
+
<span class="normal"><a href="#__codelineno-0-313">313</a></span>
|
|
8821
|
+
<span class="normal"><a href="#__codelineno-0-314">314</a></span>
|
|
8822
|
+
<span class="normal"><a href="#__codelineno-0-315">315</a></span>
|
|
8823
|
+
<span class="normal"><a href="#__codelineno-0-316">316</a></span>
|
|
8815
8824
|
<span class="normal"><a href="#__codelineno-0-317">317</a></span>
|
|
8816
|
-
<span class="normal"><a href="#__codelineno-0-318">318</a></span>
|
|
8817
|
-
<
|
|
8818
|
-
<
|
|
8819
|
-
<
|
|
8820
|
-
<
|
|
8821
|
-
<
|
|
8822
|
-
<
|
|
8823
|
-
<
|
|
8824
|
-
<
|
|
8825
|
-
<span class="normal"><a href="#__codelineno-0-327">327</a></span>
|
|
8826
|
-
<span class="normal"><a href="#__codelineno-0-328">328</a></span>
|
|
8827
|
-
<span class="normal"><a href="#__codelineno-0-329">329</a></span>
|
|
8828
|
-
<span class="normal"><a href="#__codelineno-0-330">330</a></span>
|
|
8829
|
-
<span class="normal"><a href="#__codelineno-0-331">331</a></span>
|
|
8830
|
-
<span class="normal"><a href="#__codelineno-0-332">332</a></span>
|
|
8831
|
-
<span class="normal"><a href="#__codelineno-0-333">333</a></span>
|
|
8832
|
-
<span class="normal"><a href="#__codelineno-0-334">334</a></span>
|
|
8833
|
-
<span class="normal"><a href="#__codelineno-0-335">335</a></span>
|
|
8834
|
-
<span class="normal"><a href="#__codelineno-0-336">336</a></span>
|
|
8835
|
-
<span class="normal"><a href="#__codelineno-0-337">337</a></span>
|
|
8836
|
-
<span class="normal"><a href="#__codelineno-0-338">338</a></span>
|
|
8837
|
-
<span class="normal"><a href="#__codelineno-0-339">339</a></span>
|
|
8838
|
-
<span class="normal"><a href="#__codelineno-0-340">340</a></span>
|
|
8839
|
-
<span class="normal"><a href="#__codelineno-0-341">341</a></span>
|
|
8840
|
-
<span class="normal"><a href="#__codelineno-0-342">342</a></span>
|
|
8841
|
-
<span class="normal"><a href="#__codelineno-0-343">343</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-316" name="__codelineno-0-316"></a><span class="k">class</span> <span class="nc">StatusFilter</span><span class="p">(</span><span class="n">django_filters</span><span class="o">.</span><span class="n">ModelMultipleChoiceFilter</span><span class="p">):</span>
|
|
8842
|
-
<a id="__codelineno-0-317" name="__codelineno-0-317"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8843
|
-
<a id="__codelineno-0-318" name="__codelineno-0-318"></a><span class="sd"> Filter field used for filtering Status fields.</span>
|
|
8844
|
-
<a id="__codelineno-0-319" name="__codelineno-0-319"></a>
|
|
8845
|
-
<a id="__codelineno-0-320" name="__codelineno-0-320"></a><span class="sd"> Explicitly sets `to_field_name='value'` and dynamically sets queryset to</span>
|
|
8846
|
-
<a id="__codelineno-0-321" name="__codelineno-0-321"></a><span class="sd"> retrieve choices for the corresponding model & field name bound to the</span>
|
|
8847
|
-
<a id="__codelineno-0-322" name="__codelineno-0-322"></a><span class="sd"> filterset.</span>
|
|
8848
|
-
<a id="__codelineno-0-323" name="__codelineno-0-323"></a><span class="sd"> """</span>
|
|
8849
|
-
<a id="__codelineno-0-324" name="__codelineno-0-324"></a>
|
|
8850
|
-
<a id="__codelineno-0-325" name="__codelineno-0-325"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
8851
|
-
<a id="__codelineno-0-326" name="__codelineno-0-326"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"to_field_name"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"name"</span>
|
|
8852
|
-
<a id="__codelineno-0-327" name="__codelineno-0-327"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
8853
|
-
<a id="__codelineno-0-328" name="__codelineno-0-328"></a>
|
|
8854
|
-
<a id="__codelineno-0-329" name="__codelineno-0-329"></a> <span class="k">def</span> <span class="nf">get_queryset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
|
|
8855
|
-
<a id="__codelineno-0-330" name="__codelineno-0-330"></a> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span> <span class="o">=</span> <span class="n">Status</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
8856
|
-
<a id="__codelineno-0-331" name="__codelineno-0-331"></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
8857
|
-
<a id="__codelineno-0-332" name="__codelineno-0-332"></a>
|
|
8858
|
-
<a id="__codelineno-0-333" name="__codelineno-0-333"></a> <span class="k">def</span> <span class="nf">get_filter_predicate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8859
|
-
<a id="__codelineno-0-334" name="__codelineno-0-334"></a><span class="w"> </span><span class="sd">"""Always use the field's name and the `to_field_name` attribute as predicate."""</span>
|
|
8860
|
-
<a id="__codelineno-0-335" name="__codelineno-0-335"></a> <span class="c1"># e.g. `status__name`</span>
|
|
8861
|
-
<a id="__codelineno-0-336" name="__codelineno-0-336"></a> <span class="n">to_field_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">to_field_name</span>
|
|
8862
|
-
<a id="__codelineno-0-337" name="__codelineno-0-337"></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">field_name</span><span class="si">}</span><span class="s2">__</span><span class="si">{</span><span class="n">to_field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
8863
|
-
<a id="__codelineno-0-338" name="__codelineno-0-338"></a> <span class="c1"># Sometimes the incoming value is an instance. This block of logic comes from the base</span>
|
|
8864
|
-
<a id="__codelineno-0-339" name="__codelineno-0-339"></a> <span class="c1"># `get_filter_predicate()` and was added here to support this.</span>
|
|
8865
|
-
<a id="__codelineno-0-340" name="__codelineno-0-340"></a> <span class="k">try</span><span class="p">:</span>
|
|
8866
|
-
<a id="__codelineno-0-341" name="__codelineno-0-341"></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">to_field_name</span><span class="p">)}</span>
|
|
8867
|
-
<a id="__codelineno-0-342" name="__codelineno-0-342"></a> <span class="k">except</span> <span class="p">(</span><span class="ne">AttributeError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">):</span>
|
|
8868
|
-
<a id="__codelineno-0-343" name="__codelineno-0-343"></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">value</span><span class="p">}</span>
|
|
8825
|
+
<span class="normal"><a href="#__codelineno-0-318">318</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-310" name="__codelineno-0-310"></a><span class="k">class</span> <span class="nc">StatusFilter</span><span class="p">(</span><span class="n">NaturalKeyOrPKMultipleChoiceFilter</span><span class="p">):</span>
|
|
8826
|
+
<a id="__codelineno-0-311" name="__codelineno-0-311"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8827
|
+
<a id="__codelineno-0-312" name="__codelineno-0-312"></a><span class="sd"> Filter field used for filtering Status fields.</span>
|
|
8828
|
+
<a id="__codelineno-0-313" name="__codelineno-0-313"></a><span class="sd"> """</span>
|
|
8829
|
+
<a id="__codelineno-0-314" name="__codelineno-0-314"></a>
|
|
8830
|
+
<a id="__codelineno-0-315" name="__codelineno-0-315"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
8831
|
+
<a id="__codelineno-0-316" name="__codelineno-0-316"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"queryset"</span><span class="p">,</span> <span class="n">Status</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
|
8832
|
+
<a id="__codelineno-0-317" name="__codelineno-0-317"></a> <span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"label"</span><span class="p">,</span> <span class="s2">"Status (name or ID)"</span><span class="p">)</span>
|
|
8833
|
+
<a id="__codelineno-0-318" name="__codelineno-0-318"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
8869
8834
|
</code></pre></div></td></tr></table></div>
|
|
8870
8835
|
</details>
|
|
8871
8836
|
|
|
@@ -8882,50 +8847,6 @@ filterset.</p>
|
|
|
8882
8847
|
|
|
8883
8848
|
|
|
8884
8849
|
|
|
8885
|
-
<div class="doc doc-object doc-function">
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
<h3 id="nautobot.extras.filters.mixins.StatusFilter.get_filter_predicate" class="doc doc-heading">
|
|
8890
|
-
<code class="highlight language-python"><span class="n">get_filter_predicate</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></code>
|
|
8891
|
-
|
|
8892
|
-
<a href="#nautobot.extras.filters.mixins.StatusFilter.get_filter_predicate" class="headerlink" title="Permanent link">¶</a></h3>
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
<div class="doc doc-contents ">
|
|
8896
|
-
|
|
8897
|
-
<p>Always use the field's name and the <code>to_field_name</code> attribute as predicate.</p>
|
|
8898
|
-
|
|
8899
|
-
<details class="quote">
|
|
8900
|
-
<summary>Source code in <code>nautobot/extras/filters/mixins.py</code></summary>
|
|
8901
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-333">333</a></span>
|
|
8902
|
-
<span class="normal"><a href="#__codelineno-0-334">334</a></span>
|
|
8903
|
-
<span class="normal"><a href="#__codelineno-0-335">335</a></span>
|
|
8904
|
-
<span class="normal"><a href="#__codelineno-0-336">336</a></span>
|
|
8905
|
-
<span class="normal"><a href="#__codelineno-0-337">337</a></span>
|
|
8906
|
-
<span class="normal"><a href="#__codelineno-0-338">338</a></span>
|
|
8907
|
-
<span class="normal"><a href="#__codelineno-0-339">339</a></span>
|
|
8908
|
-
<span class="normal"><a href="#__codelineno-0-340">340</a></span>
|
|
8909
|
-
<span class="normal"><a href="#__codelineno-0-341">341</a></span>
|
|
8910
|
-
<span class="normal"><a href="#__codelineno-0-342">342</a></span>
|
|
8911
|
-
<span class="normal"><a href="#__codelineno-0-343">343</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-333" name="__codelineno-0-333"></a><span class="k">def</span> <span class="nf">get_filter_predicate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
8912
|
-
<a id="__codelineno-0-334" name="__codelineno-0-334"></a><span class="w"> </span><span class="sd">"""Always use the field's name and the `to_field_name` attribute as predicate."""</span>
|
|
8913
|
-
<a id="__codelineno-0-335" name="__codelineno-0-335"></a> <span class="c1"># e.g. `status__name`</span>
|
|
8914
|
-
<a id="__codelineno-0-336" name="__codelineno-0-336"></a> <span class="n">to_field_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">to_field_name</span>
|
|
8915
|
-
<a id="__codelineno-0-337" name="__codelineno-0-337"></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">field_name</span><span class="si">}</span><span class="s2">__</span><span class="si">{</span><span class="n">to_field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
8916
|
-
<a id="__codelineno-0-338" name="__codelineno-0-338"></a> <span class="c1"># Sometimes the incoming value is an instance. This block of logic comes from the base</span>
|
|
8917
|
-
<a id="__codelineno-0-339" name="__codelineno-0-339"></a> <span class="c1"># `get_filter_predicate()` and was added here to support this.</span>
|
|
8918
|
-
<a id="__codelineno-0-340" name="__codelineno-0-340"></a> <span class="k">try</span><span class="p">:</span>
|
|
8919
|
-
<a id="__codelineno-0-341" name="__codelineno-0-341"></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">to_field_name</span><span class="p">)}</span>
|
|
8920
|
-
<a id="__codelineno-0-342" name="__codelineno-0-342"></a> <span class="k">except</span> <span class="p">(</span><span class="ne">AttributeError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">):</span>
|
|
8921
|
-
<a id="__codelineno-0-343" name="__codelineno-0-343"></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">value</span><span class="p">}</span>
|
|
8922
|
-
</code></pre></div></td></tr></table></div>
|
|
8923
|
-
</details>
|
|
8924
|
-
</div>
|
|
8925
|
-
|
|
8926
|
-
</div>
|
|
8927
|
-
|
|
8928
|
-
|
|
8929
8850
|
|
|
8930
8851
|
</div>
|
|
8931
8852
|
|
|
@@ -8953,17 +8874,17 @@ filterset.</p>
|
|
|
8953
8874
|
|
|
8954
8875
|
<details class="quote">
|
|
8955
8876
|
<summary>Source code in <code>nautobot/extras/filters/mixins.py</code></summary>
|
|
8956
|
-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-
|
|
8957
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8958
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8959
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8960
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8961
|
-
<span class="normal"><a href="#__codelineno-0-
|
|
8962
|
-
<a id="__codelineno-0-
|
|
8963
|
-
<a id="__codelineno-0-
|
|
8964
|
-
<a id="__codelineno-0-
|
|
8965
|
-
<a id="__codelineno-0-
|
|
8966
|
-
<a id="__codelineno-0-
|
|
8877
|
+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-321">321</a></span>
|
|
8878
|
+
<span class="normal"><a href="#__codelineno-0-322">322</a></span>
|
|
8879
|
+
<span class="normal"><a href="#__codelineno-0-323">323</a></span>
|
|
8880
|
+
<span class="normal"><a href="#__codelineno-0-324">324</a></span>
|
|
8881
|
+
<span class="normal"><a href="#__codelineno-0-325">325</a></span>
|
|
8882
|
+
<span class="normal"><a href="#__codelineno-0-326">326</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-321" name="__codelineno-0-321"></a><span class="k">class</span> <span class="nc">StatusModelFilterSetMixin</span><span class="p">(</span><span class="n">django_filters</span><span class="o">.</span><span class="n">FilterSet</span><span class="p">):</span>
|
|
8883
|
+
<a id="__codelineno-0-322" name="__codelineno-0-322"></a><span class="w"> </span><span class="sd">"""</span>
|
|
8884
|
+
<a id="__codelineno-0-323" name="__codelineno-0-323"></a><span class="sd"> Mixin to add a `status` filter field to a FilterSet.</span>
|
|
8885
|
+
<a id="__codelineno-0-324" name="__codelineno-0-324"></a><span class="sd"> """</span>
|
|
8886
|
+
<a id="__codelineno-0-325" name="__codelineno-0-325"></a>
|
|
8887
|
+
<a id="__codelineno-0-326" name="__codelineno-0-326"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">StatusFilter</span><span class="p">()</span>
|
|
8967
8888
|
</code></pre></div></td></tr></table></div>
|
|
8968
8889
|
</details>
|
|
8969
8890
|
|