nautobot 2.3.5__py3-none-any.whl → 2.3.7__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 (337) hide show
  1. nautobot/__init__.py +4 -2
  2. nautobot/circuits/tests/test_views.py +4 -5
  3. nautobot/core/api/utils.py +12 -2
  4. nautobot/core/api/views.py +15 -3
  5. nautobot/core/forms/fields.py +5 -2
  6. nautobot/core/forms/utils.py +31 -6
  7. nautobot/core/models/fields.py +56 -0
  8. nautobot/core/templates/inc/javascript.html +2 -0
  9. nautobot/core/templates/inc/nav_menu.html +0 -251
  10. nautobot/core/testing/mixins.py +59 -2
  11. nautobot/core/testing/views.py +45 -61
  12. nautobot/core/tests/runner.py +6 -3
  13. nautobot/core/tests/test_paginator.py +4 -3
  14. nautobot/core/tests/test_utils.py +83 -0
  15. nautobot/core/tests/test_views.py +39 -56
  16. nautobot/core/views/__init__.py +27 -11
  17. nautobot/dcim/tests/test_api.py +4 -1
  18. nautobot/dcim/tests/test_views.py +26 -67
  19. nautobot/extras/datasources/git.py +6 -1
  20. nautobot/extras/factory.py +2 -1
  21. nautobot/extras/migrations/0112_dynamic_group_group_type_data_migration.py +3 -0
  22. nautobot/extras/migrations/0116_fix_dynamic_group_group_type_data_migration.py +16 -0
  23. nautobot/extras/models/models.py +2 -0
  24. nautobot/extras/tests/test_api.py +3 -3
  25. nautobot/extras/tests/test_customfields.py +9 -16
  26. nautobot/extras/tests/test_dynamicgroups.py +116 -0
  27. nautobot/extras/tests/test_forms.py +2 -0
  28. nautobot/extras/tests/test_plugins.py +4 -6
  29. nautobot/extras/tests/test_utils.py +5 -0
  30. nautobot/extras/tests/test_views.py +63 -161
  31. nautobot/extras/utils.py +50 -11
  32. nautobot/ipam/api/serializers.py +30 -1
  33. nautobot/ipam/api/views.py +165 -3
  34. nautobot/ipam/filters.py +1 -1
  35. nautobot/ipam/forms.py +2 -0
  36. nautobot/ipam/migrations/0050_vlangroup_range.py +24 -0
  37. nautobot/ipam/models.py +51 -8
  38. nautobot/ipam/tables.py +4 -4
  39. nautobot/ipam/templates/ipam/vlangroup.html +4 -0
  40. nautobot/ipam/tests/test_api.py +192 -12
  41. nautobot/ipam/tests/test_models.py +35 -1
  42. nautobot/ipam/tests/test_utils.py +61 -0
  43. nautobot/ipam/tests/test_views.py +8 -15
  44. nautobot/ipam/utils/__init__.py +10 -17
  45. nautobot/ipam/views.py +1 -1
  46. nautobot/project-static/docs/404.html +3 -3
  47. nautobot/project-static/docs/apps/index.html +3 -3
  48. nautobot/project-static/docs/apps/nautobot-apps.html +3 -3
  49. nautobot/project-static/docs/assets/javascripts/bundle.525ec568.min.js +16 -0
  50. nautobot/project-static/docs/assets/javascripts/{bundle.56dfad97.min.js.map → bundle.525ec568.min.js.map} +4 -4
  51. nautobot/project-static/docs/assets/stylesheets/main.8c3ca2c6.min.css +1 -0
  52. nautobot/project-static/docs/assets/stylesheets/main.8c3ca2c6.min.css.map +1 -0
  53. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +3 -3
  54. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +3 -3
  55. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +3 -3
  56. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +3 -3
  57. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +3 -3
  58. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +3 -3
  59. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +3 -3
  60. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +3 -3
  61. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +3 -3
  62. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +3 -3
  63. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +3 -3
  64. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +5 -5
  65. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +3 -3
  66. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +3 -3
  67. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +3 -3
  68. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +3 -3
  69. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +3 -3
  70. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +3 -3
  71. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +124 -3
  72. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +3 -3
  73. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +3 -3
  74. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +3 -3
  75. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +3 -3
  76. nautobot/project-static/docs/development/apps/api/configuration-view.html +3 -3
  77. nautobot/project-static/docs/development/apps/api/database-backend-config.html +3 -3
  78. nautobot/project-static/docs/development/apps/api/models/django-admin.html +3 -3
  79. nautobot/project-static/docs/development/apps/api/models/global-search.html +3 -3
  80. nautobot/project-static/docs/development/apps/api/models/graphql.html +3 -3
  81. nautobot/project-static/docs/development/apps/api/models/index.html +5 -5
  82. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +3 -3
  83. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +3 -3
  84. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +3 -3
  85. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +3 -3
  86. nautobot/project-static/docs/development/apps/api/platform-features/index.html +3 -3
  87. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +3 -3
  88. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +3 -3
  89. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +3 -3
  90. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +3 -3
  91. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +3 -3
  92. nautobot/project-static/docs/development/apps/api/prometheus.html +3 -3
  93. nautobot/project-static/docs/development/apps/api/setup.html +3 -3
  94. nautobot/project-static/docs/development/apps/api/testing.html +3 -3
  95. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +3 -3
  96. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +3 -3
  97. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +3 -3
  98. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +3 -3
  99. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +3 -3
  100. nautobot/project-static/docs/development/apps/api/views/base-template.html +3 -3
  101. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +3 -3
  102. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +3 -3
  103. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +3 -3
  104. nautobot/project-static/docs/development/apps/api/views/index.html +3 -3
  105. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +3 -3
  106. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +3 -3
  107. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +3 -3
  108. nautobot/project-static/docs/development/apps/api/views/notes.html +3 -3
  109. nautobot/project-static/docs/development/apps/api/views/rest-api.html +3 -3
  110. nautobot/project-static/docs/development/apps/api/views/urls.html +3 -3
  111. nautobot/project-static/docs/development/apps/index.html +3 -3
  112. nautobot/project-static/docs/development/apps/migration/code-updates.html +3 -3
  113. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +3 -3
  114. nautobot/project-static/docs/development/apps/migration/from-v1.html +3 -3
  115. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +3 -3
  116. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +3 -3
  117. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +3 -3
  118. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +3 -3
  119. nautobot/project-static/docs/development/apps/porting-from-netbox.html +3 -3
  120. nautobot/project-static/docs/development/core/application-registry.html +3 -3
  121. nautobot/project-static/docs/development/core/best-practices.html +3 -3
  122. nautobot/project-static/docs/development/core/bootstrap-ui.html +3 -3
  123. nautobot/project-static/docs/development/core/caching.html +3 -3
  124. nautobot/project-static/docs/development/core/controllers.html +3 -3
  125. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +3 -3
  126. nautobot/project-static/docs/development/core/generic-views.html +3 -3
  127. nautobot/project-static/docs/development/core/getting-started.html +3 -3
  128. nautobot/project-static/docs/development/core/homepage.html +3 -3
  129. nautobot/project-static/docs/development/core/index.html +3 -3
  130. nautobot/project-static/docs/development/core/model-checklist.html +3 -3
  131. nautobot/project-static/docs/development/core/model-features.html +3 -3
  132. nautobot/project-static/docs/development/core/natural-keys.html +3 -3
  133. nautobot/project-static/docs/development/core/navigation-menu.html +3 -3
  134. nautobot/project-static/docs/development/core/release-checklist.html +3 -3
  135. nautobot/project-static/docs/development/core/role-internals.html +3 -3
  136. nautobot/project-static/docs/development/core/settings.html +3 -3
  137. nautobot/project-static/docs/development/core/style-guide.html +3 -3
  138. nautobot/project-static/docs/development/core/templates.html +3 -3
  139. nautobot/project-static/docs/development/core/testing.html +3 -3
  140. nautobot/project-static/docs/development/core/user-preferences.html +3 -3
  141. nautobot/project-static/docs/development/index.html +3 -3
  142. nautobot/project-static/docs/development/jobs/index.html +3 -3
  143. nautobot/project-static/docs/development/jobs/migration/from-v1.html +3 -3
  144. nautobot/project-static/docs/index.html +3 -3
  145. nautobot/project-static/docs/objects.inv +0 -0
  146. nautobot/project-static/docs/overview/application_stack.html +3 -3
  147. nautobot/project-static/docs/overview/design_philosophy.html +3 -3
  148. nautobot/project-static/docs/release-notes/index.html +3 -3
  149. nautobot/project-static/docs/release-notes/version-1.0.html +3 -3
  150. nautobot/project-static/docs/release-notes/version-1.1.html +3 -3
  151. nautobot/project-static/docs/release-notes/version-1.2.html +3 -3
  152. nautobot/project-static/docs/release-notes/version-1.3.html +3 -3
  153. nautobot/project-static/docs/release-notes/version-1.4.html +3 -3
  154. nautobot/project-static/docs/release-notes/version-1.5.html +3 -3
  155. nautobot/project-static/docs/release-notes/version-1.6.html +3 -3
  156. nautobot/project-static/docs/release-notes/version-2.0.html +3 -3
  157. nautobot/project-static/docs/release-notes/version-2.1.html +3 -3
  158. nautobot/project-static/docs/release-notes/version-2.2.html +3 -3
  159. nautobot/project-static/docs/release-notes/version-2.3.html +392 -95
  160. nautobot/project-static/docs/requirements.txt +1 -1
  161. nautobot/project-static/docs/search/search_index.json +1 -1
  162. nautobot/project-static/docs/sitemap.xml +269 -269
  163. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  164. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +3 -3
  165. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +3 -3
  166. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +3 -3
  167. nautobot/project-static/docs/user-guide/administration/configuration/index.html +3 -3
  168. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +3 -3
  169. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +3 -3
  170. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +3 -3
  171. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +3 -3
  172. nautobot/project-static/docs/user-guide/administration/guides/docker.html +3 -3
  173. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +3 -3
  174. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +3 -3
  175. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +3 -3
  176. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +3 -3
  177. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +3 -3
  178. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +3 -3
  179. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +3 -3
  180. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +3 -3
  181. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +3 -3
  182. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +3 -3
  183. nautobot/project-static/docs/user-guide/administration/installation/index.html +3 -3
  184. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +3 -3
  185. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +3 -3
  186. nautobot/project-static/docs/user-guide/administration/installation/services.html +3 -3
  187. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +3 -3
  188. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +3 -3
  189. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +3 -3
  190. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +3 -3
  191. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +3 -3
  192. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +3 -3
  193. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +3 -3
  194. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +3 -3
  195. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +3 -3
  196. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +3 -3
  197. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +3 -3
  198. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +3 -3
  199. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +3 -3
  200. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +3 -3
  201. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +3 -3
  202. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +3 -3
  203. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +3 -3
  204. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +3 -3
  205. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +3 -3
  206. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +3 -3
  207. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +3 -3
  208. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +3 -3
  209. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +3 -3
  210. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +3 -3
  211. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +3 -3
  212. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +3 -3
  213. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +3 -3
  214. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +3 -3
  215. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +3 -3
  216. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +3 -3
  217. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +3 -3
  218. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +3 -3
  219. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +3 -3
  220. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +3 -3
  221. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +3 -3
  222. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +3 -3
  223. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +3 -3
  224. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +3 -3
  225. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +3 -3
  226. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +3 -3
  227. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +3 -3
  228. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +3 -3
  229. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +3 -3
  230. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +3 -3
  231. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +3 -3
  232. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +3 -3
  233. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +3 -3
  234. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +3 -3
  235. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +3 -3
  236. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +3 -3
  237. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +3 -3
  238. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +3 -3
  239. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +3 -3
  240. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +3 -3
  241. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +3 -3
  242. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +3 -3
  243. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +3 -3
  244. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +3 -3
  245. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +3 -3
  246. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +3 -3
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +3 -3
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +3 -3
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +3 -3
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +3 -3
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +3 -3
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +3 -3
  253. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +3 -3
  254. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +3 -3
  255. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +3 -3
  256. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +3 -3
  257. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +3 -3
  258. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +3 -3
  259. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +3 -3
  260. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +3 -3
  261. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +3 -3
  262. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +3 -3
  263. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +3 -3
  264. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +308 -3
  265. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +3 -3
  266. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +3 -3
  267. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +3 -3
  268. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +3 -3
  269. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +3 -3
  270. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +3 -3
  271. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +3 -3
  272. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +3 -3
  273. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +3 -3
  274. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +3 -3
  275. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +3 -3
  276. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +3 -3
  277. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +3 -3
  278. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +3 -3
  279. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +3 -3
  280. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +3 -3
  281. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +3 -3
  282. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +3 -3
  283. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +3 -3
  284. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +3 -3
  285. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +3 -3
  286. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +3 -3
  287. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +3 -3
  288. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +3 -3
  289. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +3 -3
  290. nautobot/project-static/docs/user-guide/index.html +3 -3
  291. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +3 -3
  292. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +3 -3
  293. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +3 -3
  294. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +3 -3
  295. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +3 -3
  296. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +3 -3
  297. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +3 -3
  298. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +3 -3
  299. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +3 -3
  300. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +3 -3
  301. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +3 -3
  302. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +3 -3
  303. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +3 -3
  304. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +3 -3
  305. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +3 -3
  306. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +3 -3
  307. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +3 -3
  308. nautobot/project-static/docs/user-guide/platform-functionality/note.html +3 -3
  309. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +3 -3
  310. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +3 -3
  311. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +3 -3
  312. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +3 -3
  313. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +3 -3
  314. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +3 -3
  315. nautobot/project-static/docs/user-guide/platform-functionality/role.html +3 -3
  316. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +3 -3
  317. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +3 -3
  318. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +3 -3
  319. nautobot/project-static/docs/user-guide/platform-functionality/status.html +3 -3
  320. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +3 -3
  321. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +3 -3
  322. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +3 -3
  323. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +3 -3
  324. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +3 -3
  325. nautobot/project-static/js/nav_menu.js +249 -0
  326. nautobot/tenancy/templates/tenancy/tenant.html +1 -1
  327. nautobot/users/tests/test_views.py +9 -11
  328. nautobot/virtualization/tests/test_views.py +3 -5
  329. {nautobot-2.3.5.dist-info → nautobot-2.3.7.dist-info}/METADATA +2 -1
  330. {nautobot-2.3.5.dist-info → nautobot-2.3.7.dist-info}/RECORD +334 -330
  331. {nautobot-2.3.5.dist-info → nautobot-2.3.7.dist-info}/WHEEL +1 -1
  332. nautobot/project-static/docs/assets/javascripts/bundle.56dfad97.min.js +0 -16
  333. nautobot/project-static/docs/assets/stylesheets/main.35f28582.min.css +0 -1
  334. nautobot/project-static/docs/assets/stylesheets/main.35f28582.min.css.map +0 -1
  335. {nautobot-2.3.5.dist-info → nautobot-2.3.7.dist-info}/LICENSE.txt +0 -0
  336. {nautobot-2.3.5.dist-info → nautobot-2.3.7.dist-info}/NOTICE +0 -0
  337. {nautobot-2.3.5.dist-info → nautobot-2.3.7.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -10027,7 +10027,7 @@ This parameter is an positive integer value that can range from 0 to 10. In most
10027
10027
  <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.6ce7567c.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>
10028
10028
 
10029
10029
 
10030
- <script src="../../../assets/javascripts/bundle.56dfad97.min.js"></script>
10030
+ <script src="../../../assets/javascripts/bundle.525ec568.min.js"></script>
10031
10031
 
10032
10032
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
10033
10033
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -8737,7 +8737,7 @@ Note that these API endpoints are hidden from OpenAPI schema as well.</p>
8737
8737
  <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.6ce7567c.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>
8738
8738
 
8739
8739
 
8740
- <script src="../../../assets/javascripts/bundle.56dfad97.min.js"></script>
8740
+ <script src="../../../assets/javascripts/bundle.525ec568.min.js"></script>
8741
8741
 
8742
8742
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8743
8743
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -8788,7 +8788,7 @@
8788
8788
  <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.6ce7567c.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>
8789
8789
 
8790
8790
 
8791
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
8791
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
8792
8792
 
8793
8793
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8794
8794
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -9038,7 +9038,7 @@ The <code>is_shared</code> attribute dictates whether a Saved View will be made
9038
9038
  <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.6ce7567c.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>
9039
9039
 
9040
9040
 
9041
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
9041
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
9042
9042
 
9043
9043
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
9044
9044
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -9028,7 +9028,7 @@
9028
9028
  <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.6ce7567c.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>
9029
9029
 
9030
9030
 
9031
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
9031
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
9032
9032
 
9033
9033
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
9034
9034
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -8834,7 +8834,7 @@
8834
8834
  <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.6ce7567c.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>
8835
8835
 
8836
8836
 
8837
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
8837
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
8838
8838
 
8839
8839
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8840
8840
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -9105,7 +9105,7 @@ own risk!</p>
9105
9105
  <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.6ce7567c.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>
9106
9106
 
9107
9107
 
9108
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
9108
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
9109
9109
 
9110
9110
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
9111
9111
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -8864,7 +8864,7 @@
8864
8864
  <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.6ce7567c.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>
8865
8865
 
8866
8866
 
8867
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
8867
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
8868
8868
 
8869
8869
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8870
8870
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -9882,7 +9882,7 @@ additionally if there is an <code>object.description</code> this will be used as
9882
9882
  <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.6ce7567c.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>
9883
9883
 
9884
9884
 
9885
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
9885
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
9886
9886
 
9887
9887
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
9888
9888
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -8849,7 +8849,7 @@
8849
8849
  <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.6ce7567c.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>
8850
8850
 
8851
8851
 
8852
- <script src="../../../assets/javascripts/bundle.56dfad97.min.js"></script>
8852
+ <script src="../../../assets/javascripts/bundle.525ec568.min.js"></script>
8853
8853
 
8854
8854
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8855
8855
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -8746,7 +8746,7 @@
8746
8746
  <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.6ce7567c.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>
8747
8747
 
8748
8748
 
8749
- <script src="../../../assets/javascripts/bundle.56dfad97.min.js"></script>
8749
+ <script src="../../../assets/javascripts/bundle.525ec568.min.js"></script>
8750
8750
 
8751
8751
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8752
8752
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.35">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
29
+ <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -8997,7 +8997,7 @@
8997
8997
  <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.6ce7567c.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>
8998
8998
 
8999
8999
 
9000
- <script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
9000
+ <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
9001
9001
 
9002
9002
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
9003
9003
 
@@ -0,0 +1,249 @@
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ const navbar = document.querySelector('.navbar-fixed-left');
3
+ const navbarHeader = document.querySelector('.navbar-header');
4
+ const mainContent = document.querySelector('#main-content');
5
+ const footer = document.querySelector('#footer');
6
+ const dropdownToggles = document.querySelectorAll('.navbar-fixed-left .navbar-nav > .dropdown > a[data-toggle="collapse"]');
7
+ const dropdowns = document.querySelectorAll('.navbar-fixed-left .navbar-nav .collapse');
8
+ const toggler = document.querySelector('.navbar-toggler');
9
+ const togglerIcon = toggler.querySelector('.navbar-toggler-arrow');
10
+ let lastDropdownId = sessionStorage.getItem('lastOpenedDropdown');
11
+ let savedScrollPosition = sessionStorage.getItem('navbarScrollPosition');
12
+ let activeLink = sessionStorage.getItem('activeLink');
13
+ let expandedByHover = false;
14
+ let manuallyToggled = sessionStorage.getItem('manuallyToggled') === 'true';
15
+
16
+ // Function to reset stored dropdown state information
17
+ function resetNavbarState() {
18
+ sessionStorage.removeItem('lastOpenedDropdown');
19
+ sessionStorage.removeItem('savedScrollPosition');
20
+ sessionStorage.removeItem('activeLink');
21
+ sessionStorage.removeItem('navbarCollapsed');
22
+ expandedByHover = false;
23
+ }
24
+
25
+ toggler.addEventListener('click', function() {
26
+ let isNowCollapsed;
27
+ if (expandedByHover) {
28
+ expandedByHover = false;
29
+ isNowCollapsed = false;
30
+ } else {
31
+ isNowCollapsed = navbar.classList.toggle('collapsed');
32
+ }
33
+ sessionStorage.setItem('navbarCollapsed', isNowCollapsed ? 'true' : 'false');
34
+ // Set 'navbarManuallyToggled' to track any manual toggle
35
+ sessionStorage.setItem('navbarManuallyToggled', 'true');
36
+ // Track if the action was an expansion or a collapse
37
+ sessionStorage.setItem('navbarExpanded', !isNowCollapsed ? 'true' : 'false');
38
+ if (isNowCollapsed) {
39
+ togglerIcon.classList.add("mdi-rotate-90");
40
+ togglerIcon.classList.remove("mdi-rotate-270");
41
+ } else {
42
+ togglerIcon.classList.remove("mdi-rotate-90");
43
+ togglerIcon.classList.add("mdi-rotate-270");
44
+ }
45
+ adjustElementsForNavbarState(isNowCollapsed);
46
+ });
47
+
48
+ // Retrieve the navbar collapsed state from session storage on page load
49
+ const navbarCollapsed = sessionStorage.getItem('navbarCollapsed') === 'true';
50
+ if (navbarCollapsed) {
51
+ navbar.classList.add('collapsed');
52
+ togglerIcon.classList.remove("mdi-rotate-270");
53
+ togglerIcon.classList.add("mdi-rotate-90");
54
+ adjustElementsForNavbarState(true);
55
+ }
56
+
57
+ function adjustElementsForNavbarState(isCollapsed) {
58
+ const marginLeftValue = isCollapsed ? '-240px' : '0px';
59
+ mainContent.style.marginLeft = marginLeftValue;
60
+ if(footer) footer.style.marginLeft = marginLeftValue;
61
+ toggler.style.left = isCollapsed ? '-5px' : '225px';
62
+ }
63
+
64
+ // Expand navbar when hovering near the left edge of the screen
65
+ document.addEventListener('mousemove', function(e) {
66
+ if (
67
+ e.clientX < 20 // 20px from the left edge
68
+ && (e.clientY < 20 || e.clientY > 50) // not near the toggle button
69
+ && navbar.classList.contains('collapsed')
70
+ ) {
71
+ navbar.classList.remove('collapsed');
72
+ toggler.style.left = '225px';
73
+ expandedByHover = true; // Set flag when expanded by hover
74
+ } else if (expandedByHover && e.clientX > 240) {
75
+ navbar.classList.add('collapsed');
76
+ toggler.style.left = '-5px';
77
+ expandedByHover = false; // Reset flag after auto-collapse
78
+ }
79
+ });
80
+
81
+ function collapseNavbarIfNeeded() {
82
+ const windowWidth = window.innerWidth;
83
+ const navbarManuallyToggled = sessionStorage.getItem('navbarManuallyToggled') === 'true';
84
+ const navbarExpanded = sessionStorage.getItem('navbarExpanded') === 'true';
85
+ const isCollapsed = navbar.classList.contains('collapsed');
86
+
87
+ if (windowWidth < 1007) {
88
+ if (!isCollapsed) {
89
+ navbar.classList.add('collapsed');
90
+ togglerIcon.classList.remove("mdi-rotate-270");
91
+ togglerIcon.classList.add("mdi-rotate-90");
92
+ adjustElementsForNavbarState(true);
93
+ sessionStorage.setItem('navbarCollapsed', 'true');
94
+ }
95
+ } else if (windowWidth >= 1007) {
96
+ // Only expand automatically if it was not manually collapsed
97
+ if (isCollapsed && (navbarManuallyToggled && navbarExpanded)) {
98
+ navbar.classList.remove('collapsed');
99
+ togglerIcon.classList.add("mdi-rotate-270");
100
+ togglerIcon.classList.remove("mdi-rotate-90");
101
+ adjustElementsForNavbarState(false);
102
+ sessionStorage.setItem('navbarCollapsed', 'false');
103
+ }
104
+ // Do not automatically change the state if it was manually collapsed
105
+ }
106
+ }
107
+
108
+ // Update the window resize listener
109
+ function toggleNavbarOnResize() {
110
+ collapseNavbarIfNeeded(); // Use the new function to decide whether to collapse
111
+ }
112
+
113
+ let debouncedToggleNavbarOnResize = debounce(toggleNavbarOnResize, 50);
114
+ window.addEventListener('resize', debouncedToggleNavbarOnResize);
115
+
116
+ // Select the navbar dropdown elements
117
+ let navbarItems = document.querySelectorAll('.navbar-fixed-left .navbar-nav > .dropdown > .dropdown-toggle > #dropdown_title');
118
+
119
+ // Add a title attribute and tooltip, only if necessary
120
+ navbarItems.forEach(function(item) {
121
+ // Check if the text overflows
122
+ if (item.scrollWidth > item.clientWidth) {
123
+ // Set the title attribute
124
+ item.setAttribute('title', item.innerText);
125
+
126
+ // Reinitialize Bootstrap tooltip
127
+ $(item).tooltip();
128
+ }
129
+ });
130
+
131
+ // Add an event listener for the home link click
132
+ const homeLink = document.querySelector('.navbar-fixed-left .navbar-brand');
133
+ if (homeLink) {
134
+ homeLink.addEventListener('click', function() {
135
+ resetNavbarState();
136
+ });
137
+ }
138
+
139
+ // Close all dropdowns except the one specified
140
+ function closeAllDropdownsExcept(exceptId) {
141
+ dropdowns.forEach(function(collapse) {
142
+ if (collapse.id !== exceptId && collapse.classList.contains('in')) {
143
+ $(collapse).collapse('hide');
144
+ }
145
+ });
146
+ }
147
+
148
+ // Add click event listener to the dropdown links and save the clicked one
149
+ function addLinkClickListeners() {
150
+ const dropdownLinks = document.querySelectorAll('.navbar-fixed-left .navbar-nav > .dropdown > .nav-dropdown-menu > li > a');
151
+
152
+ dropdownLinks.forEach(function(link) {
153
+ link.addEventListener('click', function() {
154
+ sessionStorage.setItem('activeLink', link.getAttribute('href'));
155
+ });
156
+ });
157
+ collapseNavbarIfNeeded();
158
+ }
159
+
160
+ // Close all dropdowns except the last opened one
161
+ dropdownToggles.forEach(function(toggle) {
162
+ toggle.addEventListener('click', function(event) {
163
+ event.preventDefault();
164
+ const collapseElement = document.getElementById(this.getAttribute('href').substring(1));
165
+
166
+ if (!collapseElement.classList.contains('in')) {
167
+ closeAllDropdownsExcept(collapseElement.id);
168
+ $(collapseElement).collapse('show');
169
+ sessionStorage.setItem('lastOpenedDropdown', collapseElement.id);
170
+ } else {
171
+ $(collapseElement).collapse('hide');
172
+ sessionStorage.removeItem('lastOpenedDropdown');
173
+ }
174
+ });
175
+ });
176
+
177
+ // Open the last opened dropdown
178
+ if (lastDropdownId) {
179
+ let lastDropdownMenu = document.getElementById(lastDropdownId);
180
+ if (lastDropdownMenu && !lastDropdownMenu.classList.contains('in')) {
181
+ $(lastDropdownMenu).collapse('show');
182
+ }
183
+ }
184
+
185
+ // Restore the last saved scroll position
186
+ if (savedScrollPosition) {
187
+ navbar.scrollTop = savedScrollPosition;
188
+ }
189
+
190
+ // Function to adjust navbar header visibility based on scroll position and navbar collapsed state
191
+ function adjustNavbarHeaderVisibility() {
192
+ // Check if the navbar is collapsed and mainContent is defined
193
+ if (navbar.classList.contains('collapsed') && mainContent) {
194
+ const mainContentTop = mainContent.getBoundingClientRect().top;
195
+ // Show or hide the navbar header based on mainContent's position
196
+ if (mainContentTop < 0) {
197
+ // Main content top is out of view, hide navbar header
198
+ navbarHeader.style.top = '-60px'; // height of navbar header
199
+ } else {
200
+ // Main content top is in view, show navbar header
201
+ navbarHeader.style.top = '0';
202
+ }
203
+ }
204
+ }
205
+
206
+ // Add scroll event listener to adjust navbar header visibility
207
+ window.addEventListener('scroll', adjustNavbarHeaderVisibility);
208
+
209
+ // Call the function initially to set the correct state when the page loads
210
+ adjustNavbarHeaderVisibility();
211
+
212
+ // Debounce function to limit the rate at which the handleScroll function is executed
213
+ function debounce(func, wait, immediate) {
214
+ let timeout;
215
+ return function() {
216
+ const context = this, args = arguments;
217
+ const later = function() {
218
+ timeout = null;
219
+ if (!immediate) func.apply(context, args);
220
+ };
221
+ const callNow = immediate && !timeout;
222
+ clearTimeout(timeout);
223
+ timeout = setTimeout(later, wait);
224
+ if (callNow) func.apply(context, args);
225
+ };
226
+ }
227
+
228
+ // Save the scroll position when the navbar is scrolled
229
+ navbar.addEventListener('scroll', debounce(function() {
230
+ sessionStorage.setItem('navbarScrollPosition', navbar.scrollTop);
231
+ }, 250));
232
+
233
+ // Add click event listeners to dropdown links
234
+ addLinkClickListeners();
235
+
236
+ // Apply the 'active' class to the previously clicked link
237
+ if (activeLink) {
238
+ let previouslyClickedLink = document.querySelector('.navbar-fixed-left .navbar-nav > .dropdown > .nav-dropdown-menu > li > a[href="' + activeLink + '"]');
239
+ let currentLocation = window.location.pathname + window.location.search;
240
+
241
+ if (previouslyClickedLink && currentLocation.includes(previouslyClickedLink.getAttribute('href'))) {
242
+ previouslyClickedLink.parentElement.classList.add('active');
243
+ }
244
+ else {
245
+ sessionStorage.removeItem('activeLink');
246
+ }
247
+ }
248
+
249
+ });
@@ -42,7 +42,7 @@
42
42
  <div class="panel-heading">
43
43
  <strong>Stats</strong>
44
44
  </div>
45
- <div class="row panel-body">
45
+ <div class="panel-body">
46
46
  <div class="col-md-4 text-center">
47
47
  <h2><a href="{% url 'circuits:circuit_list' %}?tenant={{ object.name }}" class="btn {% if stats.circuit_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ stats.circuit_count }}</a></h2>
48
48
  <p>Circuits</p>