nautobot 2.2.0__py3-none-any.whl → 2.2.0b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of nautobot might be problematic. Click here for more details.

Files changed (362) hide show
  1. nautobot/apps/api.py +2 -1
  2. nautobot/apps/utils.py +0 -4
  3. nautobot/apps/views.py +0 -2
  4. nautobot/circuits/api/urls.py +2 -1
  5. nautobot/circuits/api/views.py +12 -0
  6. nautobot/circuits/tests/test_filters.py +1 -1
  7. nautobot/core/api/routers.py +3 -25
  8. nautobot/core/api/utils.py +0 -4
  9. nautobot/core/api/views.py +15 -21
  10. nautobot/core/filters.py +1 -7
  11. nautobot/core/management/commands/generate_test_data.py +4 -4
  12. nautobot/core/settings.py +0 -1
  13. nautobot/core/tables.py +1 -2
  14. nautobot/core/templates/admin/base.html +94 -23
  15. nautobot/core/templates/graphene/graphiql.html +47 -18
  16. nautobot/core/templates/inc/footer.html +5 -5
  17. nautobot/core/templates/inc/nav_menu.html +7 -0
  18. nautobot/core/templates/rest_framework/api.html +5 -12
  19. nautobot/core/templatetags/helpers.py +2 -2
  20. nautobot/core/testing/views.py +0 -30
  21. nautobot/core/tests/test_api.py +6 -13
  22. nautobot/core/tests/test_csv.py +4 -5
  23. nautobot/core/tests/test_filters.py +1 -2
  24. nautobot/core/tests/test_graphql.py +14 -4
  25. nautobot/core/tests/test_navigations.py +0 -3
  26. nautobot/core/tests/test_views.py +16 -22
  27. nautobot/core/utils/lookup.py +0 -124
  28. nautobot/core/views/__init__.py +7 -3
  29. nautobot/core/views/generic.py +3 -19
  30. nautobot/core/views/mixins.py +0 -7
  31. nautobot/core/views/renderers.py +1 -4
  32. nautobot/dcim/api/serializers.py +4 -4
  33. nautobot/dcim/api/urls.py +3 -2
  34. nautobot/dcim/api/views.py +18 -7
  35. nautobot/dcim/factory.py +7 -7
  36. nautobot/dcim/filters/__init__.py +17 -16
  37. nautobot/dcim/forms.py +45 -61
  38. nautobot/dcim/homepage.py +3 -11
  39. nautobot/dcim/migrations/0057_controller_models.py +70 -11
  40. nautobot/dcim/models/__init__.py +2 -2
  41. nautobot/dcim/models/devices.py +16 -14
  42. nautobot/dcim/models/racks.py +3 -1
  43. nautobot/dcim/navigation.py +31 -23
  44. nautobot/dcim/signals.py +6 -6
  45. nautobot/dcim/tables/__init__.py +2 -2
  46. nautobot/dcim/tables/devices.py +15 -12
  47. nautobot/dcim/tables/template_code.py +1 -1
  48. nautobot/dcim/templates/dcim/controller_retrieve.html +18 -35
  49. nautobot/dcim/templates/dcim/controllerdevicegroup_create.html +43 -0
  50. nautobot/dcim/templates/dcim/device/lldp_neighbors.html +43 -67
  51. nautobot/dcim/templates/dcim/device.html +2 -10
  52. nautobot/dcim/templates/dcim/device_edit.html +1 -1
  53. nautobot/dcim/tests/test_api.py +6 -11
  54. nautobot/dcim/tests/test_filters.py +81 -92
  55. nautobot/dcim/tests/test_graphql.py +1 -11
  56. nautobot/dcim/tests/test_models.py +15 -15
  57. nautobot/dcim/tests/test_signals.py +0 -2
  58. nautobot/dcim/tests/test_views.py +12 -24
  59. nautobot/dcim/urls.py +1 -1
  60. nautobot/dcim/views.py +15 -19
  61. nautobot/extras/api/urls.py +2 -1
  62. nautobot/extras/api/views.py +10 -0
  63. nautobot/extras/filters/__init__.py +2 -53
  64. nautobot/extras/forms/contacts.py +0 -7
  65. nautobot/extras/managers.py +0 -14
  66. nautobot/extras/navigation.py +65 -71
  67. nautobot/extras/plugins/views.py +11 -7
  68. nautobot/extras/tests/test_api.py +0 -2
  69. nautobot/extras/tests/test_dynamicgroups.py +0 -2
  70. nautobot/extras/tests/test_filters.py +4 -89
  71. nautobot/extras/tests/test_models.py +0 -9
  72. nautobot/extras/tests/test_relationships.py +1 -10
  73. nautobot/extras/tests/test_views.py +1 -112
  74. nautobot/extras/views.py +10 -10
  75. nautobot/ipam/api/urls.py +2 -1
  76. nautobot/ipam/api/views.py +11 -0
  77. nautobot/ipam/tables.py +22 -2
  78. nautobot/ipam/tests/test_graphql.py +3 -2
  79. nautobot/ipam/tests/test_views.py +0 -1
  80. nautobot/ipam/views.py +9 -9
  81. nautobot/project-static/css/base.css +0 -1
  82. nautobot/project-static/docs/404.html +3 -24
  83. nautobot/project-static/docs/apps/index.html +3 -24
  84. nautobot/project-static/docs/apps/nautobot-apps.html +3 -24
  85. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +3 -24
  86. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +3 -24
  87. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +5 -26
  88. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +3 -24
  89. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +3 -24
  90. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +3 -24
  91. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +3 -24
  92. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +3 -24
  93. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +3 -24
  94. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +3 -24
  95. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +3 -24
  96. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +3 -24
  97. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +3 -24
  98. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +3 -24
  99. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +3 -24
  100. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +3 -24
  101. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +3 -24
  102. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +3 -24
  103. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +3 -24
  104. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +3 -24
  105. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +3 -24
  106. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +3 -242
  107. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +5 -69
  108. nautobot/project-static/docs/development/apps/api/configuration-view.html +3 -24
  109. nautobot/project-static/docs/development/apps/api/database-backend-config.html +3 -24
  110. nautobot/project-static/docs/development/apps/api/models/django-admin.html +3 -24
  111. nautobot/project-static/docs/development/apps/api/models/global-search.html +3 -24
  112. nautobot/project-static/docs/development/apps/api/models/graphql.html +3 -24
  113. nautobot/project-static/docs/development/apps/api/models/index.html +3 -24
  114. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +3 -24
  115. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +3 -24
  116. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +3 -24
  117. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +3 -24
  118. nautobot/project-static/docs/development/apps/api/platform-features/index.html +3 -24
  119. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +3 -24
  120. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +3 -24
  121. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +3 -24
  122. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +3 -24
  123. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +3 -24
  124. nautobot/project-static/docs/development/apps/api/prometheus.html +3 -24
  125. nautobot/project-static/docs/development/apps/api/setup.html +3 -24
  126. nautobot/project-static/docs/development/apps/api/testing.html +3 -24
  127. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +3 -24
  128. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +3 -24
  129. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +3 -24
  130. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +3 -24
  131. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +3 -24
  132. nautobot/project-static/docs/development/apps/api/views/base-template.html +3 -24
  133. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +12 -38
  134. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +15 -41
  135. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +3 -24
  136. nautobot/project-static/docs/development/apps/api/views/index.html +3 -24
  137. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +3 -24
  138. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +3 -24
  139. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +3 -24
  140. nautobot/project-static/docs/development/apps/api/views/notes.html +3 -24
  141. nautobot/project-static/docs/development/apps/api/views/rest-api.html +3 -24
  142. nautobot/project-static/docs/development/apps/api/views/urls.html +3 -24
  143. nautobot/project-static/docs/development/apps/index.html +3 -24
  144. nautobot/project-static/docs/development/apps/migration/code-updates.html +3 -24
  145. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +3 -24
  146. nautobot/project-static/docs/development/apps/migration/from-v1.html +3 -24
  147. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +3 -24
  148. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +3 -24
  149. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +3 -24
  150. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +3 -24
  151. nautobot/project-static/docs/development/apps/porting-from-netbox.html +3 -24
  152. nautobot/project-static/docs/development/core/application-registry.html +3 -24
  153. nautobot/project-static/docs/development/core/best-practices.html +3 -24
  154. nautobot/project-static/docs/development/core/bootstrap-ui.html +3 -24
  155. nautobot/project-static/docs/development/core/caching.html +3 -24
  156. nautobot/project-static/docs/development/core/controllers.html +204 -35
  157. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +3 -24
  158. nautobot/project-static/docs/development/core/extending-models.html +3 -24
  159. nautobot/project-static/docs/development/core/generic-views.html +3 -24
  160. nautobot/project-static/docs/development/core/getting-started.html +13 -43
  161. nautobot/project-static/docs/development/core/homepage.html +3 -24
  162. nautobot/project-static/docs/development/core/index.html +3 -24
  163. nautobot/project-static/docs/development/core/model-features.html +3 -24
  164. nautobot/project-static/docs/development/core/natural-keys.html +3 -24
  165. nautobot/project-static/docs/development/core/navigation-menu.html +3 -24
  166. nautobot/project-static/docs/development/core/release-checklist.html +3 -24
  167. nautobot/project-static/docs/development/core/role-internals.html +3 -24
  168. nautobot/project-static/docs/development/core/settings.html +3 -24
  169. nautobot/project-static/docs/development/core/style-guide.html +3 -24
  170. nautobot/project-static/docs/development/core/templates.html +3 -24
  171. nautobot/project-static/docs/development/core/testing.html +3 -24
  172. nautobot/project-static/docs/development/core/user-preferences.html +3 -24
  173. nautobot/project-static/docs/development/index.html +3 -24
  174. nautobot/project-static/docs/development/jobs/index.html +3 -24
  175. nautobot/project-static/docs/development/jobs/migration/from-v1.html +3 -24
  176. nautobot/project-static/docs/index.html +3 -24
  177. nautobot/project-static/docs/models/dcim/{controllermanageddevicegroup.html → controllerdevicegroup.html} +3 -3
  178. nautobot/project-static/docs/objects.inv +0 -0
  179. nautobot/project-static/docs/release-notes/index.html +3 -24
  180. nautobot/project-static/docs/release-notes/version-1.0.html +3 -24
  181. nautobot/project-static/docs/release-notes/version-1.1.html +3 -24
  182. nautobot/project-static/docs/release-notes/version-1.2.html +3 -24
  183. nautobot/project-static/docs/release-notes/version-1.3.html +3 -24
  184. nautobot/project-static/docs/release-notes/version-1.4.html +3 -24
  185. nautobot/project-static/docs/release-notes/version-1.5.html +3 -24
  186. nautobot/project-static/docs/release-notes/version-1.6.html +3 -24
  187. nautobot/project-static/docs/release-notes/version-2.0.html +3 -24
  188. nautobot/project-static/docs/release-notes/version-2.1.html +162 -411
  189. nautobot/project-static/docs/release-notes/version-2.2.html +30 -212
  190. nautobot/project-static/docs/search/search_index.json +1 -1
  191. nautobot/project-static/docs/sitemap.xml +255 -260
  192. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  193. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +3 -24
  194. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +3 -24
  195. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +3 -24
  196. nautobot/project-static/docs/user-guide/administration/configuration/index.html +3 -24
  197. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +3 -24
  198. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +3 -24
  199. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +3 -24
  200. nautobot/project-static/docs/user-guide/administration/guides/caching.html +3 -24
  201. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +3 -24
  202. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +3 -24
  203. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +3 -24
  204. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +3 -24
  205. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +3 -24
  206. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +3 -24
  207. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +3 -24
  208. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +3 -24
  209. nautobot/project-static/docs/user-guide/administration/installation/docker.html +6 -31
  210. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +3 -24
  211. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +3 -24
  212. nautobot/project-static/docs/user-guide/administration/installation/index.html +3 -24
  213. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +3 -24
  214. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +3 -24
  215. nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +6 -27
  216. nautobot/project-static/docs/user-guide/administration/installation/services.html +3 -24
  217. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +3 -24
  218. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +3 -24
  219. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +3 -24
  220. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +3 -24
  221. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +3 -24
  222. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +3 -24
  223. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +3 -24
  224. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +3 -24
  225. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +3 -24
  226. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +3 -24
  227. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +3 -24
  228. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +3 -24
  229. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +3 -24
  230. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +3 -24
  231. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +3 -24
  232. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +3 -24
  233. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +3 -24
  234. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +3 -24
  235. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +3 -24
  236. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +3 -24
  237. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +3 -24
  238. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +3 -24
  239. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +3 -24
  240. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +11 -259
  241. nautobot/project-static/docs/user-guide/core-data-model/dcim/{controllermanageddevicegroup.html → controllerdevicegroup.html} +17 -107
  242. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +3 -24
  243. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +3 -24
  244. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +3 -24
  245. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +3 -24
  246. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +3 -24
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +3 -24
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +3 -24
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +3 -24
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +3 -24
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +3 -24
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +3 -24
  253. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +3 -24
  254. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +3 -24
  255. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +3 -24
  256. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +3 -24
  257. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +3 -24
  258. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +3 -24
  259. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +3 -24
  260. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +3 -24
  261. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +3 -24
  262. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +3 -24
  263. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +3 -24
  264. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +3 -24
  265. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +3 -24
  266. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +3 -24
  267. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +3 -24
  268. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +3 -24
  269. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +3 -24
  270. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +3 -24
  271. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +3 -24
  272. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +6 -27
  273. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +3 -24
  274. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +3 -24
  275. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +3 -24
  276. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +3 -24
  277. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +3 -24
  278. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +3 -24
  279. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +3 -24
  280. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +3 -24
  281. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +3 -24
  282. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +3 -24
  283. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +3 -24
  284. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +3 -24
  285. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +3 -24
  286. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +3 -24
  287. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +3 -24
  288. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +3 -24
  289. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +3 -24
  290. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +3 -24
  291. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +3 -24
  292. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +3 -24
  293. nautobot/project-static/docs/user-guide/feature-guides/{contacts-and-teams.html → contact-and-team.html} +4 -25
  294. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +5 -26
  295. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +3 -24
  296. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +3 -24
  297. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +3 -24
  298. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +3 -24
  299. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +3 -24
  300. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +3 -24
  301. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +5 -26
  302. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +3 -24
  303. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +3 -24
  304. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +3 -24
  305. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +3 -24
  306. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +3 -24
  307. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +3 -24
  308. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +3 -24
  309. nautobot/project-static/docs/user-guide/index.html +3 -24
  310. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +3 -24
  311. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +3 -24
  312. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +3 -24
  313. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +3 -24
  314. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +3 -24
  315. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +3 -24
  316. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +3 -24
  317. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +3 -24
  318. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +3 -24
  319. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +3 -24
  320. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +3 -24
  321. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +3 -24
  322. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +3 -24
  323. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +3 -24
  324. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +3 -24
  325. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +3 -24
  326. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +3 -24
  327. nautobot/project-static/docs/user-guide/platform-functionality/note.html +3 -24
  328. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +3 -24
  329. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +3 -24
  330. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +3 -24
  331. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +3 -24
  332. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +3 -24
  333. nautobot/project-static/docs/user-guide/platform-functionality/role.html +3 -24
  334. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +3 -24
  335. nautobot/project-static/docs/user-guide/platform-functionality/status.html +3 -24
  336. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +3 -24
  337. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +3 -24
  338. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +3 -24
  339. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +3 -24
  340. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +3 -24
  341. nautobot/tenancy/api/urls.py +2 -1
  342. nautobot/tenancy/api/views.py +12 -0
  343. nautobot/tenancy/tables.py +1 -1
  344. nautobot/tenancy/tests/test_views.py +0 -1
  345. nautobot/users/api/urls.py +2 -1
  346. nautobot/users/api/views.py +65 -2
  347. nautobot/users/views.py +8 -8
  348. nautobot/virtualization/api/urls.py +2 -1
  349. nautobot/virtualization/api/views.py +12 -0
  350. {nautobot-2.2.0.dist-info → nautobot-2.2.0b1.dist-info}/METADATA +3 -3
  351. {nautobot-2.2.0.dist-info → nautobot-2.2.0b1.dist-info}/RECORD +356 -361
  352. nautobot/core/tests/integration/test_view_authentication.py +0 -67
  353. nautobot/dcim/management/commands/migrate_location_contacts.py +0 -218
  354. nautobot/dcim/templates/dcim/controller_create.html +0 -70
  355. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +0 -88
  356. nautobot/ipam/tests/test_tables.py +0 -42
  357. nautobot/project-static/docs/user-guide/administration/installation/health-checks.html +0 -8581
  358. /nautobot/dcim/templates/dcim/{controllermanageddevicegroup_retrieve.html → controllerdevicegroup_retrieve.html} +0 -0
  359. {nautobot-2.2.0.dist-info → nautobot-2.2.0b1.dist-info}/LICENSE.txt +0 -0
  360. {nautobot-2.2.0.dist-info → nautobot-2.2.0b1.dist-info}/NOTICE +0 -0
  361. {nautobot-2.2.0.dist-info → nautobot-2.2.0b1.dist-info}/WHEEL +0 -0
  362. {nautobot-2.2.0.dist-info → nautobot-2.2.0b1.dist-info}/entry_points.txt +0 -0
@@ -688,27 +688,6 @@
688
688
 
689
689
 
690
690
 
691
- <li class="md-nav__item">
692
- <a href="../administration/installation/health-checks.html" class="md-nav__link">
693
-
694
-
695
- <span class="md-ellipsis">
696
- Health Checks
697
- </span>
698
-
699
-
700
- </a>
701
- </li>
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
691
  <li class="md-nav__item">
713
692
  <a href="../administration/installation/selinux-troubleshooting.html" class="md-nav__link">
714
693
 
@@ -1914,7 +1893,7 @@
1914
1893
 
1915
1894
 
1916
1895
  <li class="md-nav__item">
1917
- <a href="../feature-guides/contacts-and-teams.html" class="md-nav__link">
1896
+ <a href="../feature-guides/contact-and-team.html" class="md-nav__link">
1918
1897
 
1919
1898
 
1920
1899
  <span class="md-ellipsis">
@@ -3179,11 +3158,11 @@
3179
3158
 
3180
3159
 
3181
3160
  <li class="md-nav__item">
3182
- <a href="../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3161
+ <a href="../core-data-model/dcim/controllerdevicegroup.html" class="md-nav__link">
3183
3162
 
3184
3163
 
3185
3164
  <span class="md-ellipsis">
3186
- Controller Managed Device Group
3165
+ Controller Device Group
3187
3166
  </span>
3188
3167
 
3189
3168
 
@@ -688,27 +688,6 @@
688
688
 
689
689
 
690
690
 
691
- <li class="md-nav__item">
692
- <a href="../administration/installation/health-checks.html" class="md-nav__link">
693
-
694
-
695
- <span class="md-ellipsis">
696
- Health Checks
697
- </span>
698
-
699
-
700
- </a>
701
- </li>
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
691
  <li class="md-nav__item">
713
692
  <a href="../administration/installation/selinux-troubleshooting.html" class="md-nav__link">
714
693
 
@@ -1914,7 +1893,7 @@
1914
1893
 
1915
1894
 
1916
1895
  <li class="md-nav__item">
1917
- <a href="../feature-guides/contacts-and-teams.html" class="md-nav__link">
1896
+ <a href="../feature-guides/contact-and-team.html" class="md-nav__link">
1918
1897
 
1919
1898
 
1920
1899
  <span class="md-ellipsis">
@@ -3179,11 +3158,11 @@
3179
3158
 
3180
3159
 
3181
3160
  <li class="md-nav__item">
3182
- <a href="../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3161
+ <a href="../core-data-model/dcim/controllerdevicegroup.html" class="md-nav__link">
3183
3162
 
3184
3163
 
3185
3164
  <span class="md-ellipsis">
3186
- Controller Managed Device Group
3165
+ Controller Device Group
3187
3166
  </span>
3188
3167
 
3189
3168
 
@@ -688,27 +688,6 @@
688
688
 
689
689
 
690
690
 
691
- <li class="md-nav__item">
692
- <a href="../administration/installation/health-checks.html" class="md-nav__link">
693
-
694
-
695
- <span class="md-ellipsis">
696
- Health Checks
697
- </span>
698
-
699
-
700
- </a>
701
- </li>
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
691
  <li class="md-nav__item">
713
692
  <a href="../administration/installation/selinux-troubleshooting.html" class="md-nav__link">
714
693
 
@@ -1914,7 +1893,7 @@
1914
1893
 
1915
1894
 
1916
1895
  <li class="md-nav__item">
1917
- <a href="../feature-guides/contacts-and-teams.html" class="md-nav__link">
1896
+ <a href="../feature-guides/contact-and-team.html" class="md-nav__link">
1918
1897
 
1919
1898
 
1920
1899
  <span class="md-ellipsis">
@@ -3179,11 +3158,11 @@
3179
3158
 
3180
3159
 
3181
3160
  <li class="md-nav__item">
3182
- <a href="../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3161
+ <a href="../core-data-model/dcim/controllerdevicegroup.html" class="md-nav__link">
3183
3162
 
3184
3163
 
3185
3164
  <span class="md-ellipsis">
3186
- Controller Managed Device Group
3165
+ Controller Device Group
3187
3166
  </span>
3188
3167
 
3189
3168
 
@@ -688,27 +688,6 @@
688
688
 
689
689
 
690
690
 
691
- <li class="md-nav__item">
692
- <a href="../../administration/installation/health-checks.html" class="md-nav__link">
693
-
694
-
695
- <span class="md-ellipsis">
696
- Health Checks
697
- </span>
698
-
699
-
700
- </a>
701
- </li>
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
691
  <li class="md-nav__item">
713
692
  <a href="../../administration/installation/selinux-troubleshooting.html" class="md-nav__link">
714
693
 
@@ -1914,7 +1893,7 @@
1914
1893
 
1915
1894
 
1916
1895
  <li class="md-nav__item">
1917
- <a href="../../feature-guides/contacts-and-teams.html" class="md-nav__link">
1896
+ <a href="../../feature-guides/contact-and-team.html" class="md-nav__link">
1918
1897
 
1919
1898
 
1920
1899
  <span class="md-ellipsis">
@@ -3179,11 +3158,11 @@
3179
3158
 
3180
3159
 
3181
3160
  <li class="md-nav__item">
3182
- <a href="../../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3161
+ <a href="../../core-data-model/dcim/controllerdevicegroup.html" class="md-nav__link">
3183
3162
 
3184
3163
 
3185
3164
  <span class="md-ellipsis">
3186
- Controller Managed Device Group
3165
+ Controller Device Group
3187
3166
  </span>
3188
3167
 
3189
3168
 
@@ -688,27 +688,6 @@
688
688
 
689
689
 
690
690
 
691
- <li class="md-nav__item">
692
- <a href="../../administration/installation/health-checks.html" class="md-nav__link">
693
-
694
-
695
- <span class="md-ellipsis">
696
- Health Checks
697
- </span>
698
-
699
-
700
- </a>
701
- </li>
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
691
  <li class="md-nav__item">
713
692
  <a href="../../administration/installation/selinux-troubleshooting.html" class="md-nav__link">
714
693
 
@@ -1914,7 +1893,7 @@
1914
1893
 
1915
1894
 
1916
1895
  <li class="md-nav__item">
1917
- <a href="../../feature-guides/contacts-and-teams.html" class="md-nav__link">
1896
+ <a href="../../feature-guides/contact-and-team.html" class="md-nav__link">
1918
1897
 
1919
1898
 
1920
1899
  <span class="md-ellipsis">
@@ -3179,11 +3158,11 @@
3179
3158
 
3180
3159
 
3181
3160
  <li class="md-nav__item">
3182
- <a href="../../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3161
+ <a href="../../core-data-model/dcim/controllerdevicegroup.html" class="md-nav__link">
3183
3162
 
3184
3163
 
3185
3164
  <span class="md-ellipsis">
3186
- Controller Managed Device Group
3165
+ Controller Device Group
3187
3166
  </span>
3188
3167
 
3189
3168
 
@@ -688,27 +688,6 @@
688
688
 
689
689
 
690
690
 
691
- <li class="md-nav__item">
692
- <a href="../administration/installation/health-checks.html" class="md-nav__link">
693
-
694
-
695
- <span class="md-ellipsis">
696
- Health Checks
697
- </span>
698
-
699
-
700
- </a>
701
- </li>
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
691
  <li class="md-nav__item">
713
692
  <a href="../administration/installation/selinux-troubleshooting.html" class="md-nav__link">
714
693
 
@@ -1914,7 +1893,7 @@
1914
1893
 
1915
1894
 
1916
1895
  <li class="md-nav__item">
1917
- <a href="../feature-guides/contacts-and-teams.html" class="md-nav__link">
1896
+ <a href="../feature-guides/contact-and-team.html" class="md-nav__link">
1918
1897
 
1919
1898
 
1920
1899
  <span class="md-ellipsis">
@@ -3179,11 +3158,11 @@
3179
3158
 
3180
3159
 
3181
3160
  <li class="md-nav__item">
3182
- <a href="../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3161
+ <a href="../core-data-model/dcim/controllerdevicegroup.html" class="md-nav__link">
3183
3162
 
3184
3163
 
3185
3164
  <span class="md-ellipsis">
3186
- Controller Managed Device Group
3165
+ Controller Device Group
3187
3166
  </span>
3188
3167
 
3189
3168
 
@@ -2,7 +2,8 @@ from nautobot.core.api.routers import OrderedDefaultRouter
2
2
 
3
3
  from . import views
4
4
 
5
- router = OrderedDefaultRouter(view_name="Tenancy")
5
+ router = OrderedDefaultRouter()
6
+ router.APIRootView = views.TenancyRootView
6
7
 
7
8
  # Tenants
8
9
  router.register("tenant-groups", views.TenantGroupViewSet)
@@ -1,3 +1,5 @@
1
+ from rest_framework.routers import APIRootView
2
+
1
3
  from nautobot.circuits.models import Circuit
2
4
  from nautobot.core.models.querysets import count_related
3
5
  from nautobot.dcim.models import Device, Rack
@@ -9,6 +11,16 @@ from nautobot.virtualization.models import VirtualMachine
9
11
 
10
12
  from . import serializers
11
13
 
14
+
15
+ class TenancyRootView(APIRootView):
16
+ """
17
+ Tenancy API root view
18
+ """
19
+
20
+ def get_view_name(self):
21
+ return "Tenancy"
22
+
23
+
12
24
  #
13
25
  # Tenant Groups
14
26
  #
@@ -12,7 +12,7 @@ from .models import Tenant, TenantGroup
12
12
 
13
13
  TREE_LINK = """
14
14
  {% load helpers %}
15
- {% tree_hierarchy_ui_representation record.tree_depth|as_range table.hide_hierarchy_ui %}
15
+ {% tree_hierarchy_ui_representation record.tree_depth|as_range table.order_by %}
16
16
  <a href="{{ record.get_absolute_url }}">{{ record.name }}</a>
17
17
  """
18
18
 
@@ -5,7 +5,6 @@ from nautobot.tenancy.models import Tenant, TenantGroup
5
5
 
6
6
  class TenantGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
7
7
  model = TenantGroup
8
- sort_on_field = "name"
9
8
 
10
9
  @classmethod
11
10
  def setUpTestData(cls):
@@ -2,7 +2,8 @@ from nautobot.core.api.routers import OrderedDefaultRouter
2
2
 
3
3
  from . import views
4
4
 
5
- router = OrderedDefaultRouter(view_name="Users")
5
+ router = OrderedDefaultRouter()
6
+ router.APIRootView = views.UsersRootView
6
7
 
7
8
  # Users and groups
8
9
  router.register("users", views.UserViewSet)
@@ -1,10 +1,14 @@
1
- from django.contrib.auth import get_user_model
1
+ from django.contrib.auth import get_user_model, login, logout
2
2
  from django.contrib.auth.models import Group
3
3
  from django.db.models import Count
4
+ from django.utils.decorators import method_decorator
5
+ from django.views.decorators.csrf import ensure_csrf_cookie
4
6
  from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiTypes
5
7
  from rest_framework.authentication import BasicAuthentication
6
- from rest_framework.permissions import IsAuthenticated
8
+ from rest_framework.decorators import action
9
+ from rest_framework.permissions import AllowAny, IsAuthenticated
7
10
  from rest_framework.response import Response
11
+ from rest_framework.routers import APIRootView
8
12
  from rest_framework.viewsets import ViewSet
9
13
 
10
14
  from nautobot.core.api.serializers import BulkOperationIntegerIDSerializer
@@ -16,6 +20,16 @@ from nautobot.users.models import ObjectPermission, Token
16
20
 
17
21
  from . import serializers
18
22
 
23
+
24
+ class UsersRootView(APIRootView):
25
+ """
26
+ Users API root view
27
+ """
28
+
29
+ def get_view_name(self):
30
+ return "Users"
31
+
32
+
19
33
  #
20
34
  # Users and groups
21
35
  #
@@ -26,6 +40,40 @@ class UserViewSet(ModelViewSet):
26
40
  serializer_class = serializers.UserSerializer
27
41
  filterset_class = filters.UserFilterSet
28
42
 
43
+ @action(methods=["GET"], detail=False, url_path="my-profile")
44
+ def my_profile(self, request):
45
+ serializer = self.serializer_class(instance=request.user, context={"request": request})
46
+ return Response(serializer.data)
47
+
48
+ @method_decorator(ensure_csrf_cookie)
49
+ @action(methods=["GET"], detail=False, permission_classes=[AllowAny])
50
+ def session(self, request):
51
+ from django.conf import settings as django_settings
52
+ from django.urls import reverse
53
+ from social_django.context_processors import backends
54
+
55
+ from nautobot.core.settings_funcs import sso_auth_enabled
56
+
57
+ serializer = self.serializer_class(instance=request.user, context={"request": request})
58
+
59
+ _backends = []
60
+ sso_enabled = sso_auth_enabled(django_settings.AUTHENTICATION_BACKENDS)
61
+
62
+ social_auth_backends = backends(request)["backends"]
63
+ if sso_enabled:
64
+ for backend in social_auth_backends["backends"]:
65
+ _backends.append(reverse("social:begin", kwargs={"backend": backend}))
66
+
67
+ resp = {
68
+ "user": serializer.data,
69
+ "logged_in": request.user.is_authenticated,
70
+ "sso_enabled": sso_enabled,
71
+ "sso_user": (len(social_auth_backends["associated"]) > 0),
72
+ "backends": _backends,
73
+ }
74
+
75
+ return Response(resp)
76
+
29
77
 
30
78
  @extend_schema_view(
31
79
  bulk_destroy=extend_schema(request=BulkOperationIntegerIDSerializer(many=True)),
@@ -53,6 +101,21 @@ class TokenViewSet(ModelViewSet):
53
101
  classes = super().authentication_classes
54
102
  return [*classes, BasicAuthentication]
55
103
 
104
+ # TODO(timizuo): Move authenticate and logout to its own view;
105
+ # as it is not proper to be on this.
106
+ @action(methods=["POST"], detail=False, permission_classes=[AllowAny])
107
+ def authenticate(self, request):
108
+ serializer = serializers.UserLoginSerializer(data=request.data, context=self.get_serializer_context())
109
+ serializer.is_valid(raise_exception=True)
110
+ user = serializer.validated_data["user"]
111
+ login(request, user=user)
112
+ return Response(status=200)
113
+
114
+ @action(methods=["GET"], detail=False)
115
+ def logout(self, request):
116
+ logout(request)
117
+ return Response(status=200)
118
+
56
119
  def get_queryset(self):
57
120
  """
58
121
  Limit users to their own Tokens.
nautobot/users/views.py CHANGED
@@ -7,6 +7,7 @@ from django.contrib.auth import (
7
7
  logout as auth_logout,
8
8
  update_session_auth_hash,
9
9
  )
10
+ from django.contrib.auth.mixins import LoginRequiredMixin
10
11
  from django.http import HttpResponseForbidden, HttpResponseRedirect
11
12
  from django.shortcuts import get_object_or_404, redirect, render
12
13
  from django.urls import reverse
@@ -17,7 +18,6 @@ from django.views.decorators.debug import sensitive_post_parameters
17
18
  from django.views.generic import View
18
19
 
19
20
  from nautobot.core.forms import ConfirmationForm
20
- from nautobot.core.views.generic import GenericView
21
21
 
22
22
  from .forms import AdvancedProfileSettingsForm, LoginForm, PasswordChangeForm, TokenForm
23
23
  from .models import Token
@@ -118,7 +118,7 @@ def is_django_auth_user(request):
118
118
  return request.session.get(BACKEND_SESSION_KEY, None) == "nautobot.core.authentication.ObjectPermissionBackend"
119
119
 
120
120
 
121
- class ProfileView(GenericView):
121
+ class ProfileView(LoginRequiredMixin, View):
122
122
  template_name = "users/profile.html"
123
123
 
124
124
  def get(self, request):
@@ -132,7 +132,7 @@ class ProfileView(GenericView):
132
132
  )
133
133
 
134
134
 
135
- class UserConfigView(GenericView):
135
+ class UserConfigView(LoginRequiredMixin, View):
136
136
  template_name = "users/preferences.html"
137
137
 
138
138
  def get(self, request):
@@ -160,7 +160,7 @@ class UserConfigView(GenericView):
160
160
  return redirect("user:preferences")
161
161
 
162
162
 
163
- class ChangePasswordView(GenericView):
163
+ class ChangePasswordView(LoginRequiredMixin, View):
164
164
  template_name = "users/change_password.html"
165
165
 
166
166
  RESTRICTED_NOTICE = "Remotely authenticated user credentials cannot be changed within Nautobot."
@@ -218,7 +218,7 @@ class ChangePasswordView(GenericView):
218
218
  #
219
219
 
220
220
 
221
- class TokenListView(GenericView):
221
+ class TokenListView(LoginRequiredMixin, View):
222
222
  def get(self, request):
223
223
  tokens = Token.objects.filter(user=request.user)
224
224
 
@@ -233,7 +233,7 @@ class TokenListView(GenericView):
233
233
  )
234
234
 
235
235
 
236
- class TokenEditView(GenericView):
236
+ class TokenEditView(LoginRequiredMixin, View):
237
237
  def get(self, request, pk=None):
238
238
  if pk is not None:
239
239
  if not request.user.has_perm("users.change_token"):
@@ -292,7 +292,7 @@ class TokenEditView(GenericView):
292
292
  )
293
293
 
294
294
 
295
- class TokenDeleteView(GenericView):
295
+ class TokenDeleteView(LoginRequiredMixin, View):
296
296
  def get(self, request, pk):
297
297
  token = get_object_or_404(Token.objects.filter(user=request.user), pk=pk)
298
298
  initial_data = {
@@ -336,7 +336,7 @@ class TokenDeleteView(GenericView):
336
336
  #
337
337
 
338
338
 
339
- class AdvancedProfileSettingsEditView(GenericView):
339
+ class AdvancedProfileSettingsEditView(LoginRequiredMixin, View):
340
340
  template_name = "users/advanced_settings_edit.html"
341
341
 
342
342
  def get(self, request):
@@ -2,7 +2,8 @@ from nautobot.core.api.routers import OrderedDefaultRouter
2
2
 
3
3
  from . import views
4
4
 
5
- router = OrderedDefaultRouter(view_name="Virtualization")
5
+ router = OrderedDefaultRouter()
6
+ router.APIRootView = views.VirtualizationRootView
6
7
 
7
8
  # Clusters
8
9
  router.register("cluster-types", views.ClusterTypeViewSet)
@@ -1,3 +1,5 @@
1
+ from rest_framework.routers import APIRootView
2
+
1
3
  from nautobot.core.models.querysets import count_related
2
4
  from nautobot.dcim.models import Device
3
5
  from nautobot.extras.api.views import (
@@ -17,6 +19,16 @@ from nautobot.virtualization.models import (
17
19
 
18
20
  from . import serializers
19
21
 
22
+
23
+ class VirtualizationRootView(APIRootView):
24
+ """
25
+ Virtualization API root view
26
+ """
27
+
28
+ def get_view_name(self):
29
+ return "Virtualization"
30
+
31
+
20
32
  #
21
33
  # Clusters
22
34
  #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nautobot
3
- Version: 2.2.0
3
+ Version: 2.2.0b1
4
4
  Summary: Source of truth and network automation platform.
5
5
  Home-page: https://nautobot.com
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ Provides-Extra: mysql
22
22
  Provides-Extra: napalm
23
23
  Provides-Extra: remote-storage
24
24
  Provides-Extra: sso
25
- Requires-Dist: Django (>=3.2.25,<3.3.0)
25
+ Requires-Dist: Django (>=3.2.24,<3.3.0)
26
26
  Requires-Dist: GitPython (>=3.1.41,<3.2.0)
27
27
  Requires-Dist: Jinja2 (>=3.1.3,<3.2.0)
28
28
  Requires-Dist: Markdown (>=3.3.7,<3.6.0)
@@ -68,7 +68,7 @@ Requires-Dist: psycopg2-binary (>=2.9.9,<2.10.0)
68
68
  Requires-Dist: python-slugify (>=8.0.3,<8.1.0)
69
69
  Requires-Dist: pyuwsgi (>=2.0.23,<2.1.0)
70
70
  Requires-Dist: social-auth-app-django (>=5.2.0,<5.3.0)
71
- Requires-Dist: social-auth-core[openidconnect,saml] (>=4.5.3,<4.6.0) ; extra == "all" or extra == "sso"
71
+ Requires-Dist: social-auth-core[openidconnect,saml] (>=4.4.2,<4.5.0) ; extra == "all" or extra == "sso"
72
72
  Requires-Dist: svgwrite (>=1.4.2,<1.5.0)
73
73
  Project-URL: Documentation, https://docs.nautobot.com
74
74
  Project-URL: Repository, https://github.com/nautobot/nautobot