nautobot 2.2.4__py3-none-any.whl → 2.2.6__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.

Files changed (365) hide show
  1. nautobot/apps/api.py +2 -0
  2. nautobot/apps/models.py +2 -0
  3. nautobot/circuits/forms.py +15 -0
  4. nautobot/circuits/navigation.py +9 -1
  5. nautobot/circuits/views.py +2 -0
  6. nautobot/core/api/fields.py +13 -0
  7. nautobot/core/api/serializers.py +7 -1
  8. nautobot/core/filters.py +11 -0
  9. nautobot/core/management/commands/generate_test_data.py +128 -158
  10. nautobot/core/models/fields.py +15 -0
  11. nautobot/core/settings.yaml +3 -3
  12. nautobot/core/testing/filters.py +24 -1
  13. nautobot/core/testing/views.py +13 -1
  14. nautobot/core/tests/test_utils.py +48 -1
  15. nautobot/core/utils/git.py +121 -49
  16. nautobot/core/utils/module_loading.py +10 -2
  17. nautobot/core/views/utils.py +18 -1
  18. nautobot/dcim/factory.py +1 -1
  19. nautobot/dcim/filters/__init__.py +1 -1
  20. nautobot/dcim/forms.py +23 -4
  21. nautobot/dcim/tables/devicetypes.py +15 -4
  22. nautobot/dcim/tests/test_models.py +2 -0
  23. nautobot/dcim/tests/test_views.py +84 -0
  24. nautobot/dcim/views.py +3 -0
  25. nautobot/extras/api/views.py +2 -2
  26. nautobot/extras/context_managers.py +3 -0
  27. nautobot/extras/datasources/git.py +133 -135
  28. nautobot/extras/datasources/utils.py +3 -0
  29. nautobot/extras/filters/__init__.py +16 -1
  30. nautobot/extras/forms/forms.py +49 -3
  31. nautobot/extras/forms/mixins.py +0 -6
  32. nautobot/extras/jobs.py +9 -1
  33. nautobot/extras/migrations/0107_laxurlfield.py +28 -0
  34. nautobot/extras/migrations/0108_jobbutton_enabled.py +17 -0
  35. nautobot/extras/models/datasources.py +6 -4
  36. nautobot/extras/models/jobs.py +30 -0
  37. nautobot/extras/models/models.py +2 -4
  38. nautobot/extras/signals.py +6 -1
  39. nautobot/extras/tables.py +3 -0
  40. nautobot/extras/templates/extras/jobbutton_retrieve.html +6 -2
  41. nautobot/extras/templatetags/job_buttons.py +2 -2
  42. nautobot/extras/tests/git_data/01-valid-files/__init__.py +0 -0
  43. nautobot/extras/tests/git_data/01-valid-files/config_context_schemas/schema-1.yaml +18 -0
  44. nautobot/extras/tests/git_data/01-valid-files/config_contexts/context.yaml +12 -0
  45. nautobot/extras/tests/git_data/01-valid-files/config_contexts/devices/test-device.json +3 -0
  46. nautobot/extras/tests/git_data/01-valid-files/config_contexts/locations/Test Location.json +7 -0
  47. nautobot/extras/tests/git_data/01-valid-files/export_templates/dcim/device/template.j2 +3 -0
  48. nautobot/extras/tests/git_data/01-valid-files/export_templates/dcim/device/template2.html +4 -0
  49. nautobot/extras/tests/git_data/01-valid-files/export_templates/ipam/vlan/template.j2 +3 -0
  50. nautobot/extras/tests/git_data/01-valid-files/jobs/__init__.py +5 -0
  51. nautobot/extras/tests/git_data/01-valid-files/jobs/my_job.py +16 -0
  52. nautobot/extras/tests/git_data/02-invalid-files/__init__.py +0 -0
  53. nautobot/extras/tests/git_data/02-invalid-files/config_context_schemas/badschema1.json +2 -0
  54. nautobot/extras/tests/git_data/02-invalid-files/config_context_schemas/badschema2.json +1 -0
  55. nautobot/extras/tests/git_data/02-invalid-files/config_contexts/badcontext1.json +2 -0
  56. nautobot/extras/tests/git_data/02-invalid-files/config_contexts/badcontext2.json +1 -0
  57. nautobot/extras/tests/git_data/02-invalid-files/config_contexts/badcontext3.json +3 -0
  58. nautobot/extras/tests/git_data/02-invalid-files/config_contexts/devices/nosuchdevice.json +1 -0
  59. nautobot/extras/tests/git_data/02-invalid-files/dcim/template.j2 +0 -0
  60. nautobot/extras/tests/git_data/02-invalid-files/devices/template.j2 +0 -0
  61. nautobot/extras/tests/git_data/02-invalid-files/export_templates/dcim/nosuchmodel/template.j2 +3 -0
  62. nautobot/extras/tests/git_data/02-invalid-files/export_templates/nosuchapp/device/template.j2 +3 -0
  63. nautobot/extras/tests/git_data/02-invalid-files/jobs/__init__.py +2 -0
  64. nautobot/extras/tests/git_data/02-invalid-files/jobs/importerror.py +1 -0
  65. nautobot/extras/tests/git_data/02-invalid-files/jobs/syntaxerror.py +1 -0
  66. nautobot/extras/tests/git_helper.py +76 -0
  67. nautobot/extras/tests/test_api.py +52 -13
  68. nautobot/extras/tests/test_context_managers.py +33 -1
  69. nautobot/extras/tests/test_datasources.py +94 -276
  70. nautobot/extras/tests/test_filters.py +69 -0
  71. nautobot/extras/tests/test_forms.py +0 -3
  72. nautobot/extras/tests/test_models.py +8 -3
  73. nautobot/extras/tests/test_views.py +69 -11
  74. nautobot/extras/views.py +12 -10
  75. nautobot/ipam/filters.py +9 -1
  76. nautobot/ipam/forms.py +26 -0
  77. nautobot/ipam/tables.py +1 -1
  78. nautobot/ipam/tests/test_filters.py +15 -0
  79. nautobot/ipam/tests/test_views.py +9 -2
  80. nautobot/ipam/views.py +11 -0
  81. nautobot/project-static/docs/404.html +84 -9
  82. nautobot/project-static/docs/apps/index.html +97 -11
  83. nautobot/project-static/docs/apps/nautobot-apps.html +97 -11
  84. nautobot/project-static/docs/assets/app-icons/icon-CapacityMetrics.svg +1 -0
  85. nautobot/project-static/docs/assets/app-icons/icon-CircuitMaintenance.png +0 -0
  86. nautobot/project-static/docs/assets/javascripts/{bundle.3220b9d7.min.js → bundle.ad660dcc.min.js} +6 -6
  87. nautobot/project-static/docs/assets/javascripts/{bundle.3220b9d7.min.js.map → bundle.ad660dcc.min.js.map} +3 -3
  88. nautobot/project-static/docs/assets/javascripts/glightbox.min.js +1 -0
  89. nautobot/project-static/docs/assets/stylesheets/glightbox.min.css +1 -0
  90. nautobot/project-static/docs/assets/stylesheets/{main.66ac8b77.min.css → main.6543a935.min.css} +1 -1
  91. nautobot/project-static/docs/assets/stylesheets/{main.66ac8b77.min.css.map → main.6543a935.min.css.map} +1 -1
  92. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +97 -11
  93. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +97 -11
  94. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +97 -11
  95. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +97 -11
  96. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +97 -11
  97. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +97 -11
  98. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +97 -11
  99. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +97 -11
  100. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +97 -11
  101. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +97 -11
  102. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +97 -11
  103. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +97 -11
  104. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +97 -11
  105. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +97 -11
  106. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +157 -13
  107. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +97 -11
  108. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +97 -11
  109. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +97 -11
  110. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +107 -12
  111. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +97 -11
  112. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +97 -11
  113. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +144 -12
  114. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +97 -11
  115. nautobot/project-static/docs/development/apps/api/configuration-view.html +97 -11
  116. nautobot/project-static/docs/development/apps/api/database-backend-config.html +97 -11
  117. nautobot/project-static/docs/development/apps/api/models/django-admin.html +97 -11
  118. nautobot/project-static/docs/development/apps/api/models/global-search.html +97 -11
  119. nautobot/project-static/docs/development/apps/api/models/graphql.html +97 -11
  120. nautobot/project-static/docs/development/apps/api/models/index.html +97 -11
  121. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +97 -11
  122. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +97 -11
  123. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +98 -12
  124. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +97 -11
  125. nautobot/project-static/docs/development/apps/api/platform-features/index.html +97 -11
  126. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +97 -11
  127. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +97 -11
  128. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +97 -11
  129. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +97 -11
  130. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +97 -11
  131. nautobot/project-static/docs/development/apps/api/prometheus.html +97 -11
  132. nautobot/project-static/docs/development/apps/api/setup.html +97 -11
  133. nautobot/project-static/docs/development/apps/api/testing.html +97 -11
  134. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +97 -11
  135. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +97 -11
  136. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +97 -11
  137. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +97 -11
  138. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +97 -11
  139. nautobot/project-static/docs/development/apps/api/views/base-template.html +97 -11
  140. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +97 -11
  141. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +97 -11
  142. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +97 -11
  143. nautobot/project-static/docs/development/apps/api/views/index.html +97 -11
  144. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +97 -11
  145. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +97 -11
  146. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +97 -11
  147. nautobot/project-static/docs/development/apps/api/views/notes.html +97 -11
  148. nautobot/project-static/docs/development/apps/api/views/rest-api.html +97 -11
  149. nautobot/project-static/docs/development/apps/api/views/urls.html +97 -11
  150. nautobot/project-static/docs/development/apps/index.html +97 -11
  151. nautobot/project-static/docs/development/apps/migration/code-updates.html +98 -12
  152. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +97 -11
  153. nautobot/project-static/docs/development/apps/migration/from-v1.html +99 -13
  154. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +97 -11
  155. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +97 -11
  156. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +97 -11
  157. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +97 -11
  158. nautobot/project-static/docs/development/apps/porting-from-netbox.html +97 -11
  159. nautobot/project-static/docs/development/core/application-registry.html +98 -12
  160. nautobot/project-static/docs/development/core/best-practices.html +97 -11
  161. nautobot/project-static/docs/development/core/bootstrap-ui.html +97 -11
  162. nautobot/project-static/docs/development/core/caching.html +97 -11
  163. nautobot/project-static/docs/development/core/controllers.html +97 -11
  164. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +97 -11
  165. nautobot/project-static/docs/development/core/generic-views.html +97 -11
  166. nautobot/project-static/docs/development/core/getting-started.html +99 -13
  167. nautobot/project-static/docs/development/core/homepage.html +97 -11
  168. nautobot/project-static/docs/development/core/index.html +97 -11
  169. nautobot/project-static/docs/development/core/model-checklist.html +97 -11
  170. nautobot/project-static/docs/development/core/model-features.html +97 -11
  171. nautobot/project-static/docs/development/core/natural-keys.html +97 -11
  172. nautobot/project-static/docs/development/core/navigation-menu.html +97 -11
  173. nautobot/project-static/docs/development/core/release-checklist.html +97 -11
  174. nautobot/project-static/docs/development/core/role-internals.html +97 -11
  175. nautobot/project-static/docs/development/core/settings.html +97 -11
  176. nautobot/project-static/docs/development/core/style-guide.html +97 -11
  177. nautobot/project-static/docs/development/core/templates.html +97 -11
  178. nautobot/project-static/docs/development/core/testing.html +98 -12
  179. nautobot/project-static/docs/development/core/user-preferences.html +97 -11
  180. nautobot/project-static/docs/development/index.html +97 -11
  181. nautobot/project-static/docs/development/jobs/index.html +97 -11
  182. nautobot/project-static/docs/development/jobs/migration/from-v1.html +97 -11
  183. nautobot/project-static/docs/index.html +13 -8362
  184. nautobot/project-static/docs/objects.inv +0 -0
  185. nautobot/project-static/docs/overview/application_stack.html +8229 -0
  186. nautobot/project-static/docs/overview/design_philosophy.html +8158 -0
  187. nautobot/project-static/docs/overview/index.html +8230 -0
  188. nautobot/project-static/docs/release-notes/index.html +97 -11
  189. nautobot/project-static/docs/release-notes/version-1.0.html +98 -12
  190. nautobot/project-static/docs/release-notes/version-1.1.html +97 -11
  191. nautobot/project-static/docs/release-notes/version-1.2.html +99 -13
  192. nautobot/project-static/docs/release-notes/version-1.3.html +98 -12
  193. nautobot/project-static/docs/release-notes/version-1.4.html +99 -13
  194. nautobot/project-static/docs/release-notes/version-1.5.html +99 -13
  195. nautobot/project-static/docs/release-notes/version-1.6.html +626 -160
  196. nautobot/project-static/docs/release-notes/version-2.0.html +100 -14
  197. nautobot/project-static/docs/release-notes/version-2.1.html +97 -11
  198. nautobot/project-static/docs/release-notes/version-2.2.html +546 -107
  199. nautobot/project-static/docs/requirements.txt +3 -2
  200. nautobot/project-static/docs/search/search_index.json +1 -1
  201. nautobot/project-static/docs/sitemap.xml +268 -258
  202. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  203. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +97 -11
  204. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +97 -11
  205. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +99 -13
  206. nautobot/project-static/docs/user-guide/administration/configuration/index.html +98 -12
  207. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +100 -14
  208. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +97 -11
  209. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +97 -11
  210. nautobot/project-static/docs/user-guide/administration/guides/caching.html +97 -11
  211. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +97 -11
  212. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +97 -11
  213. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +97 -11
  214. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +97 -11
  215. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +98 -12
  216. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +97 -11
  217. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +97 -11
  218. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +97 -11
  219. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +97 -11
  220. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +97 -11
  221. nautobot/project-static/docs/user-guide/administration/installation/index.html +97 -11
  222. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +97 -11
  223. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +101 -15
  224. nautobot/project-static/docs/user-guide/administration/installation/services.html +98 -12
  225. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +97 -11
  226. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +97 -11
  227. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +97 -11
  228. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +97 -11
  229. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +97 -11
  230. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +97 -11
  231. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +97 -11
  232. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +97 -11
  233. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +97 -11
  234. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +97 -11
  235. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +98 -12
  236. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +97 -11
  237. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +97 -11
  238. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +97 -30
  239. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-location-changes.yaml +1 -1
  240. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +100 -14
  241. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +97 -11
  242. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +97 -11
  243. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +97 -11
  244. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +97 -11
  245. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +97 -11
  246. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +97 -11
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +97 -11
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +97 -11
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +97 -11
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +97 -11
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +97 -11
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +97 -11
  253. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +97 -11
  254. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +99 -13
  255. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +97 -11
  256. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +97 -11
  257. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +97 -11
  258. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +97 -11
  259. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +98 -12
  260. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +97 -11
  261. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +97 -11
  262. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +97 -11
  263. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +97 -11
  264. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +97 -11
  265. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +97 -11
  266. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +97 -11
  267. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +97 -11
  268. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +97 -11
  269. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +97 -11
  270. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +97 -11
  271. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +97 -11
  272. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +97 -11
  273. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +97 -11
  274. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +97 -11
  275. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +97 -11
  276. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +97 -11
  277. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +97 -11
  278. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +97 -11
  279. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +97 -11
  280. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +97 -11
  281. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +97 -11
  282. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +97 -11
  283. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +97 -11
  284. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +97 -11
  285. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +97 -11
  286. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +97 -11
  287. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +97 -11
  288. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +97 -11
  289. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +97 -11
  290. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +97 -11
  291. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +97 -11
  292. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +97 -11
  293. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +97 -11
  294. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +97 -11
  295. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +97 -11
  296. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +97 -11
  297. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +97 -11
  298. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +97 -11
  299. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +97 -11
  300. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +97 -11
  301. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +97 -11
  302. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +97 -11
  303. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +97 -11
  304. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +97 -11
  305. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +97 -11
  306. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +97 -11
  307. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +100 -14
  308. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +97 -11
  309. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +97 -11
  310. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +98 -12
  311. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +97 -11
  312. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +97 -11
  313. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +97 -11
  314. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +97 -11
  315. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +98 -12
  316. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +97 -11
  317. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +97 -11
  318. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +97 -11
  319. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +97 -11
  320. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +97 -11
  321. nautobot/project-static/docs/user-guide/index.html +100 -14
  322. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +97 -11
  323. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +97 -11
  324. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +97 -11
  325. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +97 -11
  326. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +97 -11
  327. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +97 -11
  328. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +97 -11
  329. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +97 -11
  330. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +97 -11
  331. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +97 -11
  332. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +97 -11
  333. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +98 -12
  334. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +98 -12
  335. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +102 -15
  336. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +97 -11
  337. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +99 -13
  338. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +99 -13
  339. nautobot/project-static/docs/user-guide/platform-functionality/note.html +97 -11
  340. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +97 -11
  341. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +97 -11
  342. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +97 -11
  343. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +97 -11
  344. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +97 -11
  345. nautobot/project-static/docs/user-guide/platform-functionality/role.html +98 -44
  346. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +97 -11
  347. nautobot/project-static/docs/user-guide/platform-functionality/status.html +97 -11
  348. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +97 -11
  349. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +97 -11
  350. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +97 -11
  351. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +97 -11
  352. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +97 -11
  353. nautobot/project-static/js/forms.js +2 -1
  354. nautobot/tenancy/forms.py +9 -0
  355. nautobot/tenancy/views.py +1 -0
  356. nautobot/virtualization/forms.py +18 -6
  357. nautobot/virtualization/templates/virtualization/clustertype.html +2 -2
  358. nautobot/virtualization/views.py +2 -0
  359. {nautobot-2.2.4.dist-info → nautobot-2.2.6.dist-info}/METADATA +1 -1
  360. {nautobot-2.2.4.dist-info → nautobot-2.2.6.dist-info}/RECORD +364 -331
  361. nautobot/extras/tests/test_git.py +0 -23
  362. {nautobot-2.2.4.dist-info → nautobot-2.2.6.dist-info}/LICENSE.txt +0 -0
  363. {nautobot-2.2.4.dist-info → nautobot-2.2.6.dist-info}/NOTICE +0 -0
  364. {nautobot-2.2.4.dist-info → nautobot-2.2.6.dist-info}/WHEEL +0 -0
  365. {nautobot-2.2.4.dist-info → nautobot-2.2.6.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
21
+ <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.26">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.66ac8b77.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.6543a935.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -67,7 +67,16 @@
67
67
 
68
68
 
69
69
 
70
- </head>
70
+ <link href="../../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
71
+ html.glightbox-open { overflow: initial; height: 100%; }
72
+ .gslide-title { margin-top: 0px; user-select: text; }
73
+ .gslide-desc { color: #666; user-select: text; }
74
+ .gslide-image img { background: white; }
75
+ .gscrollbar-fixer { padding-right: 15px; }
76
+ .gdesc-inner { font-size: 0.75rem; }
77
+ body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
78
+ body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
79
+ body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}</style> <script src="../../../assets/javascripts/glightbox.min.js"></script></head>
71
80
 
72
81
 
73
82
 
@@ -102,7 +111,7 @@
102
111
 
103
112
  <header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
104
113
  <nav class="md-header__inner md-grid" aria-label="Header">
105
- <a href="../../../index.html" title="Nautobot Documentation" class="md-header__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
114
+ <a href="../../.." title="Nautobot Documentation" class="md-header__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
106
115
 
107
116
  <img src="../../../assets/nautobot_logo.svg" alt="logo">
108
117
 
@@ -191,7 +200,7 @@
191
200
 
192
201
  </form>
193
202
  <div class="md-search__output">
194
- <div class="md-search__scrollwrap" data-md-scrollfix>
203
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
195
204
  <div class="md-search-result" data-md-component="search-result">
196
205
  <div class="md-search-result__meta">
197
206
  Initializing search
@@ -229,7 +238,7 @@
229
238
 
230
239
 
231
240
  <li class="md-tabs__item">
232
- <a href="../../../index.html" class="md-tabs__link">
241
+ <a href="../../../overview/index.html" class="md-tabs__link">
233
242
 
234
243
 
235
244
 
@@ -356,7 +365,7 @@
356
365
 
357
366
  <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
358
367
  <label class="md-nav__title" for="__drawer">
359
- <a href="../../../index.html" title="Nautobot Documentation" class="md-nav__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
368
+ <a href="../../.." title="Nautobot Documentation" class="md-nav__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
360
369
 
361
370
  <img src="../../../assets/nautobot_logo.svg" alt="logo">
362
371
 
@@ -384,17 +393,92 @@
384
393
 
385
394
 
386
395
 
387
- <li class="md-nav__item">
388
- <a href="../../../index.html" class="md-nav__link">
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+ <li class="md-nav__item md-nav__item--nested">
404
+
405
+
406
+
407
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
389
408
 
409
+
410
+
411
+ <div class="md-nav__link md-nav__container">
412
+ <a href="../../../overview/index.html" class="md-nav__link ">
413
+
390
414
 
391
415
  <span class="md-ellipsis">
392
416
  Overview
393
417
  </span>
394
418
 
395
419
 
420
+ </a>
421
+
422
+
423
+ <label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0">
424
+ <span class="md-nav__icon md-icon"></span>
425
+ </label>
426
+
427
+ </div>
428
+
429
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
430
+ <label class="md-nav__title" for="__nav_1">
431
+ <span class="md-nav__icon md-icon"></span>
432
+ Overview
433
+ </label>
434
+ <ul class="md-nav__list" data-md-scrollfix>
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+ <li class="md-nav__item">
443
+ <a href="../../../overview/design_philosophy.html" class="md-nav__link">
444
+
445
+
446
+ <span class="md-ellipsis">
447
+ Design Philosophy
448
+ </span>
449
+
450
+
451
+ </a>
452
+ </li>
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+ <li class="md-nav__item">
464
+ <a href="../../../overview/application_stack.html" class="md-nav__link">
465
+
466
+
467
+ <span class="md-ellipsis">
468
+ Application Stack
469
+ </span>
470
+
471
+
396
472
  </a>
397
473
  </li>
474
+
475
+
476
+
477
+
478
+ </ul>
479
+ </nav>
480
+
481
+ </li>
398
482
 
399
483
 
400
484
 
@@ -7946,10 +8030,12 @@
7946
8030
  <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
7947
8031
 
7948
8032
 
7949
- <script src="../../../assets/javascripts/bundle.3220b9d7.min.js"></script>
8033
+ <script src="../../../assets/javascripts/bundle.ad660dcc.min.js"></script>
7950
8034
 
7951
8035
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
7952
8036
 
7953
8037
 
7954
- </body>
8038
+ <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
8039
+ document$.subscribe(() => { lightbox.reload() });
8040
+ </script></body>
7955
8041
  </html>
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
21
+ <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.26">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.6543a935.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -67,7 +67,16 @@
67
67
 
68
68
 
69
69
 
70
- </head>
70
+ <link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
71
+ html.glightbox-open { overflow: initial; height: 100%; }
72
+ .gslide-title { margin-top: 0px; user-select: text; }
73
+ .gslide-desc { color: #666; user-select: text; }
74
+ .gslide-image img { background: white; }
75
+ .gscrollbar-fixer { padding-right: 15px; }
76
+ .gdesc-inner { font-size: 0.75rem; }
77
+ body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
78
+ body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
79
+ body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
71
80
 
72
81
 
73
82
 
@@ -102,7 +111,7 @@
102
111
 
103
112
  <header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
104
113
  <nav class="md-header__inner md-grid" aria-label="Header">
105
- <a href="../../index.html" title="Nautobot Documentation" class="md-header__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
114
+ <a href="../.." title="Nautobot Documentation" class="md-header__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
106
115
 
107
116
  <img src="../../assets/nautobot_logo.svg" alt="logo">
108
117
 
@@ -191,7 +200,7 @@
191
200
 
192
201
  </form>
193
202
  <div class="md-search__output">
194
- <div class="md-search__scrollwrap" data-md-scrollfix>
203
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
195
204
  <div class="md-search-result" data-md-component="search-result">
196
205
  <div class="md-search-result__meta">
197
206
  Initializing search
@@ -229,7 +238,7 @@
229
238
 
230
239
 
231
240
  <li class="md-tabs__item">
232
- <a href="../../index.html" class="md-tabs__link">
241
+ <a href="../../overview/index.html" class="md-tabs__link">
233
242
 
234
243
 
235
244
 
@@ -356,7 +365,7 @@
356
365
 
357
366
  <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
358
367
  <label class="md-nav__title" for="__drawer">
359
- <a href="../../index.html" title="Nautobot Documentation" class="md-nav__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
368
+ <a href="../.." title="Nautobot Documentation" class="md-nav__button md-logo" aria-label="Nautobot Documentation" data-md-component="logo">
360
369
 
361
370
  <img src="../../assets/nautobot_logo.svg" alt="logo">
362
371
 
@@ -384,17 +393,92 @@
384
393
 
385
394
 
386
395
 
387
- <li class="md-nav__item">
388
- <a href="../../index.html" class="md-nav__link">
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+ <li class="md-nav__item md-nav__item--nested">
404
+
405
+
406
+
407
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
389
408
 
409
+
410
+
411
+ <div class="md-nav__link md-nav__container">
412
+ <a href="../../overview/index.html" class="md-nav__link ">
413
+
390
414
 
391
415
  <span class="md-ellipsis">
392
416
  Overview
393
417
  </span>
394
418
 
395
419
 
420
+ </a>
421
+
422
+
423
+ <label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0">
424
+ <span class="md-nav__icon md-icon"></span>
425
+ </label>
426
+
427
+ </div>
428
+
429
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
430
+ <label class="md-nav__title" for="__nav_1">
431
+ <span class="md-nav__icon md-icon"></span>
432
+ Overview
433
+ </label>
434
+ <ul class="md-nav__list" data-md-scrollfix>
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+ <li class="md-nav__item">
443
+ <a href="../../overview/design_philosophy.html" class="md-nav__link">
444
+
445
+
446
+ <span class="md-ellipsis">
447
+ Design Philosophy
448
+ </span>
449
+
450
+
451
+ </a>
452
+ </li>
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+ <li class="md-nav__item">
464
+ <a href="../../overview/application_stack.html" class="md-nav__link">
465
+
466
+
467
+ <span class="md-ellipsis">
468
+ Application Stack
469
+ </span>
470
+
471
+
396
472
  </a>
397
473
  </li>
474
+
475
+
476
+
477
+
478
+ </ul>
479
+ </nav>
480
+
481
+ </li>
398
482
 
399
483
 
400
484
 
@@ -8197,10 +8281,12 @@
8197
8281
  <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
8198
8282
 
8199
8283
 
8200
- <script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
8284
+ <script src="../../assets/javascripts/bundle.ad660dcc.min.js"></script>
8201
8285
 
8202
8286
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8203
8287
 
8204
8288
 
8205
- </body>
8289
+ <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
8290
+ document$.subscribe(() => { lightbox.reload() });
8291
+ </script></body>
8206
8292
  </html>
@@ -664,7 +664,8 @@ function initializeDynamicFilterForm(context){
664
664
  let search_query = new URLSearchParams();
665
665
  let dynamic_query = new URLSearchParams(new FormData(document.getElementById("dynamic-filter-form")));
666
666
  dynamic_query.forEach((value, key) => { if (value != "") { search_query.append(key, value); }});
667
- let default_query = new URLSearchParams(new FormData(document.getElementById("default-filter").firstElementChild));
667
+ // Some list views may lack a default-filter form
668
+ let default_query = new URLSearchParams(new FormData(document.getElementById("default-filter")?.firstElementChild));
668
669
  default_query.forEach((value, key) => {
669
670
  if (value != "" && !search_query.has(key, value)) { search_query.append(key, value); }
670
671
  });
nautobot/tenancy/forms.py CHANGED
@@ -4,8 +4,10 @@ from nautobot.core.forms import (
4
4
  CommentField,
5
5
  DynamicModelChoiceField,
6
6
  DynamicModelMultipleChoiceField,
7
+ StaticSelect2,
7
8
  TagFilterField,
8
9
  )
10
+ from nautobot.core.forms.constants import BOOLEAN_WITH_BLANK_CHOICES
9
11
  from nautobot.extras.forms import (
10
12
  NautobotBulkEditForm,
11
13
  NautobotFilterForm,
@@ -32,6 +34,13 @@ class TenantGroupForm(NautobotModelForm):
32
34
  ]
33
35
 
34
36
 
37
+ class TenantGroupFilterForm(NautobotFilterForm):
38
+ model = TenantGroup
39
+ q = forms.CharField(required=False, label="Search")
40
+ parent = DynamicModelMultipleChoiceField(queryset=TenantGroup.objects.all(), to_field_name="name", required=False)
41
+ has_tenants = forms.NullBooleanField(required="False", widget=StaticSelect2(choices=BOOLEAN_WITH_BLANK_CHOICES))
42
+
43
+
35
44
  #
36
45
  # Tenants
37
46
  #
nautobot/tenancy/views.py CHANGED
@@ -19,6 +19,7 @@ from .models import Tenant, TenantGroup
19
19
  class TenantGroupListView(generic.ObjectListView):
20
20
  queryset = TenantGroup.objects.annotate(tenant_count=count_related(Tenant, "tenant_group"))
21
21
  filterset = filters.TenantGroupFilterSet
22
+ filterset_form = forms.TenantGroupFilterForm
22
23
  table = tables.TenantGroupTable
23
24
 
24
25
 
@@ -62,6 +62,12 @@ class ClusterTypeForm(NautobotModelForm):
62
62
  ]
63
63
 
64
64
 
65
+ class ClusterTypeFilterForm(NautobotFilterForm):
66
+ model = ClusterType
67
+ q = forms.CharField(required=False, label="Search")
68
+ clusters = DynamicModelMultipleChoiceField(queryset=Cluster.objects.all(), to_field_name="name", required=False)
69
+
70
+
65
71
  #
66
72
  # Cluster groups
67
73
  #
@@ -76,6 +82,12 @@ class ClusterGroupForm(NautobotModelForm):
76
82
  ]
77
83
 
78
84
 
85
+ class ClusterGroupFilterForm(NautobotFilterForm):
86
+ model = ClusterGroup
87
+ q = forms.CharField(required=False, label="Search")
88
+ clusters = DynamicModelMultipleChoiceField(queryset=Cluster.objects.all(), to_field_name="name", required=False)
89
+
90
+
79
91
  #
80
92
  # Clusters
81
93
  #
@@ -485,8 +497,8 @@ class VMInterfaceForm(NautobotModelForm, InterfaceCommonForm):
485
497
  # Add current location to VLANs query params
486
498
  location = virtual_machine.location
487
499
  if location:
488
- self.fields["untagged_vlan"].widget.add_query_param("location", location.pk)
489
- self.fields["tagged_vlans"].widget.add_query_param("location", location.pk)
500
+ self.fields["untagged_vlan"].widget.add_query_param("locations", location.pk)
501
+ self.fields["tagged_vlans"].widget.add_query_param("locations", location.pk)
490
502
 
491
503
 
492
504
  class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
@@ -558,8 +570,8 @@ class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
558
570
  # Add current location to VLANs query params
559
571
  location = virtual_machine.location
560
572
  if location:
561
- self.fields["untagged_vlan"].widget.add_query_param("location", location.pk)
562
- self.fields["tagged_vlans"].widget.add_query_param("location", location.pk)
573
+ self.fields["untagged_vlan"].widget.add_query_param("locations", location.pk)
574
+ self.fields["tagged_vlans"].widget.add_query_param("locations", location.pk)
563
575
 
564
576
 
565
577
  class VMInterfaceBulkEditForm(TagsBulkEditFormMixin, StatusModelBulkEditFormMixin, NautobotBulkEditForm):
@@ -628,8 +640,8 @@ class VMInterfaceBulkEditForm(TagsBulkEditFormMixin, StatusModelBulkEditFormMixi
628
640
  location = getattr(parent_obj.cluster, "location", None)
629
641
  if location is not None:
630
642
  # Add current location to VLANs query params
631
- self.fields["untagged_vlan"].widget.add_query_param("location", location.pk)
632
- self.fields["tagged_vlans"].widget.add_query_param("location", location.pk)
643
+ self.fields["untagged_vlan"].widget.add_query_param("locations", location.pk)
644
+ self.fields["tagged_vlans"].widget.add_query_param("locations", location.pk)
633
645
 
634
646
  self.fields["parent_interface"].choices = ()
635
647
  self.fields["parent_interface"].widget.attrs["disabled"] = True
@@ -14,7 +14,7 @@
14
14
  <tr>
15
15
  <td>Clusters</td>
16
16
  <td>
17
- <a href="{% url 'virtualization:cluster_list' %}?type={{ object.name }}">{{ cluster_table.rows|length }}</a>
17
+ <a href="{% url 'virtualization:cluster_list' %}?cluster_type={{ object.name }}">{{ cluster_table.rows|length }}</a>
18
18
  </td>
19
19
  </tr>
20
20
  </table>
@@ -29,7 +29,7 @@
29
29
  {% include 'inc/table.html' with table=cluster_table %}
30
30
  {% if perms.virtualization.add_cluster %}
31
31
  <div class="panel-footer text-right noprint">
32
- <a href="{% url 'virtualization:cluster_add' %}?type={{ object.pk }}" class="btn btn-xs btn-primary">
32
+ <a href="{% url 'virtualization:cluster_add' %}?cluster_type={{ object.pk }}" class="btn btn-xs btn-primary">
33
33
  <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add cluster
34
34
  </a>
35
35
  </div>
@@ -27,6 +27,7 @@ from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterf
27
27
  class ClusterTypeListView(generic.ObjectListView):
28
28
  queryset = ClusterType.objects.annotate(cluster_count=count_related(Cluster, "cluster_type"))
29
29
  filterset = filters.ClusterTypeFilterSet
30
+ filterset_form = forms.ClusterTypeFilterForm
30
31
  table = tables.ClusterTypeTable
31
32
 
32
33
 
@@ -84,6 +85,7 @@ class ClusterTypeBulkDeleteView(generic.BulkDeleteView):
84
85
  class ClusterGroupListView(generic.ObjectListView):
85
86
  queryset = ClusterGroup.objects.annotate(cluster_count=count_related(Cluster, "cluster_group"))
86
87
  filterset = filters.ClusterGroupFilterSet
88
+ filterset_form = forms.ClusterGroupFilterForm
87
89
  table = tables.ClusterGroupTable
88
90
 
89
91
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nautobot
3
- Version: 2.2.4
3
+ Version: 2.2.6
4
4
  Summary: Source of truth and network automation platform.
5
5
  Home-page: https://nautobot.com
6
6
  License: Apache-2.0