nautobot 2.0.4__py3-none-any.whl → 2.1.0b1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (812) hide show
  1. nautobot/circuits/navigation.py +0 -25
  2. nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -9
  3. nautobot/circuits/templates/circuits/providernetwork_retrieve.html +0 -2
  4. nautobot/circuits/tests/test_api.py +79 -2
  5. nautobot/circuits/tests/test_filters.py +1 -0
  6. nautobot/core/api/serializers.py +15 -5
  7. nautobot/core/api/views.py +18 -19
  8. nautobot/core/choices.py +1 -1
  9. nautobot/core/filters.py +12 -4
  10. nautobot/core/jobs/__init__.py +125 -3
  11. nautobot/core/management/commands/generate_test_data.py +6 -1
  12. nautobot/core/middleware.py +12 -4
  13. nautobot/core/models/fields.py +12 -2
  14. nautobot/core/settings.py +9 -8
  15. nautobot/core/tables.py +26 -31
  16. nautobot/core/templates/base_django.html +2 -2
  17. nautobot/core/templates/buttons/export.html +57 -30
  18. nautobot/core/templates/generic/object_list.html +2 -2
  19. nautobot/core/templates/generic/object_retrieve.html +8 -1
  20. nautobot/core/templates/home.html +5 -5
  21. nautobot/core/templates/inc/created_updated.html +2 -2
  22. nautobot/core/templates/inc/footer.html +2 -2
  23. nautobot/core/templates/inc/javascript.html +0 -10
  24. nautobot/core/templates/inc/media.html +2 -0
  25. nautobot/core/templates/inc/nav_menu.html +66 -68
  26. nautobot/core/templates/inc/object_details_advanced_panel.html +19 -0
  27. nautobot/core/templates/nautobot_config.py.j2 +10 -4
  28. nautobot/core/templates/panel_table.html +1 -1
  29. nautobot/core/templates/template.css +89 -0
  30. nautobot/core/templates/utilities/templatetags/table_config_form.html +1 -0
  31. nautobot/core/templatetags/buttons.py +7 -2
  32. nautobot/core/templatetags/helpers.py +9 -9
  33. nautobot/core/testing/views.py +34 -4
  34. nautobot/core/tests/integration/test_home.py +1 -43
  35. nautobot/core/tests/integration/test_navbar.py +10 -64
  36. nautobot/core/tests/integration/test_plugin_home.py +4 -5
  37. nautobot/core/tests/integration/test_plugin_navbar.py +20 -16
  38. nautobot/core/tests/integration/test_theme.py +4 -0
  39. nautobot/core/tests/test_api.py +14 -66
  40. nautobot/core/tests/test_filters.py +127 -0
  41. nautobot/core/tests/test_forms.py +4 -4
  42. nautobot/core/tests/test_graphql.py +165 -2
  43. nautobot/core/tests/test_jobs.py +112 -0
  44. nautobot/core/tests/test_openapi.py +6 -0
  45. nautobot/core/tests/test_utils.py +23 -20
  46. nautobot/core/tests/test_views.py +11 -85
  47. nautobot/core/urls.py +6 -1
  48. nautobot/core/utils/data.py +5 -1
  49. nautobot/core/utils/filtering.py +6 -4
  50. nautobot/core/utils/lookup.py +28 -0
  51. nautobot/core/utils/requests.py +2 -3
  52. nautobot/core/views/__init__.py +3 -4
  53. nautobot/core/views/generic.py +15 -11
  54. nautobot/core/views/mixins.py +9 -8
  55. nautobot/core/views/renderers.py +5 -0
  56. nautobot/core/views/utils.py +23 -24
  57. nautobot/dcim/api/serializers.py +8 -4
  58. nautobot/dcim/models/device_components.py +1 -0
  59. nautobot/dcim/models/devices.py +7 -6
  60. nautobot/dcim/navigation.py +10 -165
  61. nautobot/dcim/templates/dcim/location.html +1 -1
  62. nautobot/dcim/tests/features/locations.feature +143 -0
  63. nautobot/dcim/tests/test_api.py +8 -1
  64. nautobot/dcim/tests/test_filters.py +11 -3
  65. nautobot/dcim/views.py +5 -6
  66. nautobot/extras/admin.py +1 -1
  67. nautobot/extras/api/serializers.py +33 -0
  68. nautobot/extras/api/urls.py +6 -0
  69. nautobot/extras/api/views.py +45 -6
  70. nautobot/extras/context_managers.py +34 -8
  71. nautobot/extras/factory.py +28 -2
  72. nautobot/extras/filters/__init__.py +52 -0
  73. nautobot/extras/filters/mixins.py +4 -29
  74. nautobot/extras/forms/forms.py +43 -0
  75. nautobot/extras/jobs.py +39 -17
  76. nautobot/extras/migrations/0100_fileproxy_job_result.py +32 -0
  77. nautobot/extras/migrations/0101_externalintegration.py +61 -0
  78. nautobot/extras/migrations/0102_set_null_objectchange_contenttype.py +32 -0
  79. nautobot/extras/models/__init__.py +2 -0
  80. nautobot/extras/models/change_logging.py +2 -2
  81. nautobot/extras/models/customfields.py +2 -2
  82. nautobot/extras/models/models.py +101 -18
  83. nautobot/extras/models/relationships.py +13 -8
  84. nautobot/extras/navigation.py +17 -29
  85. nautobot/extras/signals.py +80 -59
  86. nautobot/extras/tables.py +28 -2
  87. nautobot/extras/templates/extras/externalintegration_retrieve.html +37 -0
  88. nautobot/extras/templates/extras/inc/jobresult.html +24 -0
  89. nautobot/extras/templates/extras/jobresult.html +24 -0
  90. nautobot/extras/templatetags/computed_fields.py +6 -13
  91. nautobot/extras/templatetags/custom_links.py +19 -12
  92. nautobot/extras/templatetags/job_buttons.py +34 -19
  93. nautobot/extras/templatetags/plugins.py +1 -1
  94. nautobot/extras/test_jobs/file_output.py +16 -0
  95. nautobot/extras/tests/test_api.py +92 -0
  96. nautobot/extras/tests/test_context_managers.py +94 -4
  97. nautobot/extras/tests/test_customfields.py +1 -1
  98. nautobot/extras/tests/test_filters.py +64 -2
  99. nautobot/extras/tests/test_jobs.py +75 -22
  100. nautobot/extras/tests/test_models.py +34 -0
  101. nautobot/extras/tests/test_relationships.py +2 -2
  102. nautobot/extras/tests/test_views.py +204 -4
  103. nautobot/extras/tests/test_webhooks.py +61 -25
  104. nautobot/extras/urls.py +1 -0
  105. nautobot/extras/views.py +27 -13
  106. nautobot/extras/webhooks.py +16 -25
  107. nautobot/ipam/fields.py +5 -0
  108. nautobot/ipam/forms.py +16 -0
  109. nautobot/ipam/models.py +13 -2
  110. nautobot/ipam/navigation.py +2 -59
  111. nautobot/ipam/tables.py +1 -1
  112. nautobot/ipam/templates/ipam/ipaddress.html +0 -9
  113. nautobot/ipam/templates/ipam/prefix.html +0 -9
  114. nautobot/ipam/tests/features/prefixes.feature +134 -0
  115. nautobot/ipam/tests/test_filters.py +5 -10
  116. nautobot/ipam/tests/test_models.py +7 -0
  117. nautobot/ipam/tests/test_views.py +8 -1
  118. nautobot/ipam/views.py +99 -58
  119. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css +191 -191
  120. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
  121. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css +1 -1
  122. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
  123. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +874 -881
  124. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
  125. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
  126. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
  127. nautobot/project-static/css/base.css +138 -99
  128. nautobot/project-static/css/dark.css +65 -6
  129. nautobot/project-static/docs/404.html +45 -17
  130. nautobot/project-static/docs/apps/index.html +45 -17
  131. nautobot/project-static/docs/apps/nautobot-apps.html +45 -17
  132. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +45 -17
  133. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +45 -17
  134. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1598 -1458
  135. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +229 -152
  136. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +46 -18
  137. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +45 -17
  138. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +45 -17
  139. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +45 -17
  140. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +45 -17
  141. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +354 -433
  142. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +67 -39
  143. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +45 -17
  144. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2083 -2234
  145. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +1389 -1247
  146. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +45 -17
  147. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +45 -17
  148. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +129 -111
  149. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +3601 -3457
  150. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +45 -17
  151. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +45 -17
  152. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +320 -284
  153. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +3863 -3801
  154. nautobot/project-static/docs/development/apps/api/configuration-view.html +45 -17
  155. nautobot/project-static/docs/development/apps/api/database-backend-config.html +45 -17
  156. nautobot/project-static/docs/development/apps/api/models/django-admin.html +45 -17
  157. nautobot/project-static/docs/development/apps/api/models/global-search.html +45 -17
  158. nautobot/project-static/docs/development/apps/api/models/graphql.html +45 -17
  159. nautobot/project-static/docs/development/apps/api/models/index.html +45 -17
  160. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +45 -17
  161. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +45 -17
  162. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +45 -17
  163. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +45 -17
  164. nautobot/project-static/docs/development/apps/api/platform-features/index.html +45 -17
  165. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +45 -17
  166. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +45 -17
  167. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +45 -17
  168. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +45 -17
  169. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +45 -17
  170. nautobot/project-static/docs/development/apps/api/prometheus.html +45 -17
  171. nautobot/project-static/docs/development/apps/api/setup.html +45 -17
  172. nautobot/project-static/docs/development/apps/api/testing.html +45 -17
  173. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +45 -17
  174. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +45 -17
  175. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +45 -17
  176. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +45 -17
  177. nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +45 -17
  178. nautobot/project-static/docs/development/apps/api/ui-extensions/tabs.html +45 -17
  179. nautobot/project-static/docs/development/apps/api/views/base-template.html +45 -17
  180. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +45 -17
  181. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +45 -17
  182. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +45 -17
  183. nautobot/project-static/docs/development/apps/api/views/index.html +45 -17
  184. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +45 -17
  185. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +45 -17
  186. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +45 -17
  187. nautobot/project-static/docs/development/apps/api/views/notes.html +45 -17
  188. nautobot/project-static/docs/development/apps/api/views/rest-api.html +45 -17
  189. nautobot/project-static/docs/development/apps/api/views/urls.html +45 -17
  190. nautobot/project-static/docs/development/apps/api/views/view-overrides.html +45 -17
  191. nautobot/project-static/docs/development/apps/index.html +45 -17
  192. nautobot/project-static/docs/development/apps/migration/code-updates.html +45 -17
  193. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +45 -17
  194. nautobot/project-static/docs/development/apps/migration/from-v1.html +45 -17
  195. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +45 -17
  196. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +45 -17
  197. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +45 -17
  198. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +45 -17
  199. nautobot/project-static/docs/development/apps/porting-from-netbox.html +45 -17
  200. nautobot/project-static/docs/development/core/application-registry.html +45 -17
  201. nautobot/project-static/docs/development/core/best-practices.html +45 -17
  202. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +45 -17
  203. nautobot/project-static/docs/development/core/extending-models.html +45 -17
  204. nautobot/project-static/docs/development/core/generic-views.html +45 -17
  205. nautobot/project-static/docs/development/core/getting-started.html +45 -17
  206. nautobot/project-static/docs/development/core/homepage.html +45 -17
  207. nautobot/project-static/docs/development/core/index.html +45 -17
  208. nautobot/project-static/docs/development/core/model-features.html +45 -17
  209. nautobot/project-static/docs/development/core/natural-keys.html +45 -17
  210. nautobot/project-static/docs/development/core/navigation-menu.html +45 -22
  211. nautobot/project-static/docs/development/core/react-ui.html +45 -17
  212. nautobot/project-static/docs/development/core/release-checklist.html +46 -18
  213. nautobot/project-static/docs/development/core/role-internals.html +45 -17
  214. nautobot/project-static/docs/development/core/style-guide.html +45 -17
  215. nautobot/project-static/docs/development/core/templates.html +45 -17
  216. nautobot/project-static/docs/development/core/testing.html +45 -17
  217. nautobot/project-static/docs/development/core/user-preferences.html +45 -17
  218. nautobot/project-static/docs/development/index.html +45 -17
  219. nautobot/project-static/docs/development/jobs/index.html +281 -235
  220. nautobot/project-static/docs/development/jobs/migration/from-v1.html +45 -17
  221. nautobot/project-static/docs/index.html +45 -17
  222. nautobot/project-static/docs/media/nautobot_application_stack_low_level.png +0 -0
  223. nautobot/project-static/docs/media/nautobot_application_stack_low_level.txt +1 -0
  224. nautobot/project-static/docs/objects.inv +0 -0
  225. nautobot/project-static/docs/release-notes/index.html +48 -20
  226. nautobot/project-static/docs/release-notes/version-1.0.html +45 -17
  227. nautobot/project-static/docs/release-notes/version-1.1.html +45 -17
  228. nautobot/project-static/docs/release-notes/version-1.2.html +45 -17
  229. nautobot/project-static/docs/release-notes/version-1.3.html +45 -17
  230. nautobot/project-static/docs/release-notes/version-1.4.html +45 -17
  231. nautobot/project-static/docs/release-notes/version-1.5.html +45 -17
  232. nautobot/project-static/docs/release-notes/version-1.6.html +46 -18
  233. nautobot/project-static/docs/release-notes/version-2.0.html +372 -199
  234. nautobot/project-static/docs/release-notes/version-2.1.html +5724 -0
  235. nautobot/project-static/docs/requirements.txt +1 -1
  236. nautobot/project-static/docs/search/search_index.json +1 -1
  237. nautobot/project-static/docs/sitemap.xml +247 -237
  238. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  239. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +45 -17
  240. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +45 -17
  241. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +45 -17
  242. nautobot/project-static/docs/user-guide/administration/configuration/index.html +45 -17
  243. nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +45 -17
  244. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +110 -44
  245. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +45 -17
  246. nautobot/project-static/docs/user-guide/administration/guides/caching.html +48 -20
  247. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +45 -17
  248. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +45 -17
  249. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +45 -17
  250. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +45 -17
  251. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +45 -17
  252. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +49 -20
  253. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +45 -17
  254. nautobot/project-static/docs/user-guide/administration/installation/docker.html +45 -17
  255. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +45 -17
  256. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +45 -17
  257. nautobot/project-static/docs/user-guide/administration/installation/index.html +45 -17
  258. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +45 -17
  259. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +45 -17
  260. nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +45 -17
  261. nautobot/project-static/docs/user-guide/administration/installation/services.html +45 -17
  262. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +45 -17
  263. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +45 -17
  264. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +45 -17
  265. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +45 -17
  266. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +45 -17
  267. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +45 -17
  268. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +45 -17
  269. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +45 -17
  270. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +45 -17
  271. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +45 -17
  272. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +45 -17
  273. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +45 -17
  274. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +45 -17
  275. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +45 -17
  276. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +45 -17
  277. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +45 -17
  278. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +45 -17
  279. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +45 -17
  280. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +45 -17
  281. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +45 -17
  282. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +45 -17
  283. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +45 -17
  284. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +45 -17
  285. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +45 -17
  286. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +45 -17
  287. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +45 -17
  288. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +45 -17
  289. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +45 -17
  290. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +45 -17
  291. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +45 -17
  292. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +45 -17
  293. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +45 -17
  294. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +45 -17
  295. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +45 -17
  296. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +45 -17
  297. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +45 -17
  298. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +45 -17
  299. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +45 -17
  300. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +45 -17
  301. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +45 -17
  302. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +45 -17
  303. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +45 -17
  304. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +45 -17
  305. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +45 -17
  306. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +45 -17
  307. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +45 -17
  308. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +45 -17
  309. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +45 -17
  310. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +45 -17
  311. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +45 -17
  312. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +45 -17
  313. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +45 -17
  314. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +45 -17
  315. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +45 -17
  316. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +45 -17
  317. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +45 -17
  318. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +45 -17
  319. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +45 -17
  320. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +45 -17
  321. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +45 -17
  322. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +45 -17
  323. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +45 -17
  324. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +45 -17
  325. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +45 -17
  326. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +45 -17
  327. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +45 -17
  328. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +45 -17
  329. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +45 -17
  330. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +45 -17
  331. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +45 -17
  332. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +45 -17
  333. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +45 -17
  334. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +45 -17
  335. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +45 -17
  336. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +45 -17
  337. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +45 -17
  338. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +45 -17
  339. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +45 -17
  340. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +45 -17
  341. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +45 -17
  342. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +45 -17
  343. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +45 -17
  344. nautobot/project-static/docs/user-guide/index.html +45 -17
  345. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +111 -17
  346. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +45 -17
  347. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +45 -17
  348. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +45 -17
  349. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +45 -17
  350. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +48 -20
  351. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +5359 -0
  352. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +48 -20
  353. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +45 -17
  354. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +45 -17
  355. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +45 -17
  356. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +45 -17
  357. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +45 -17
  358. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +45 -17
  359. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +45 -17
  360. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +45 -17
  361. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +45 -17
  362. nautobot/project-static/docs/user-guide/platform-functionality/note.html +45 -17
  363. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +45 -17
  364. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +45 -17
  365. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +114 -45
  366. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +45 -17
  367. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +45 -17
  368. nautobot/project-static/docs/user-guide/platform-functionality/role.html +45 -17
  369. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +45 -17
  370. nautobot/project-static/docs/user-guide/platform-functionality/status.html +45 -17
  371. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +45 -17
  372. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +45 -17
  373. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +45 -17
  374. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +45 -17
  375. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +45 -17
  376. nautobot/project-static/fonts/UFL.txt +96 -0
  377. nautobot/project-static/fonts/Ubuntu-Bold.woff2 +0 -0
  378. nautobot/project-static/fonts/Ubuntu-BoldItalic.woff2 +0 -0
  379. nautobot/project-static/fonts/Ubuntu-Italic.woff2 +0 -0
  380. nautobot/project-static/fonts/Ubuntu-Medium.woff2 +0 -0
  381. nautobot/project-static/fonts/Ubuntu-MediumItalic.woff2 +0 -0
  382. nautobot/project-static/fonts/Ubuntu-Regular.woff2 +0 -0
  383. nautobot/project-static/fonts/UbuntuMono-Bold.woff2 +0 -0
  384. nautobot/project-static/fonts/UbuntuMono-BoldItalic.woff2 +0 -0
  385. nautobot/project-static/fonts/UbuntuMono-Italic.woff2 +0 -0
  386. nautobot/project-static/fonts/UbuntuMono-Regular.woff2 +0 -0
  387. nautobot/project-static/img/dark-theme.png +0 -0
  388. nautobot/project-static/img/light-theme.png +0 -0
  389. nautobot/project-static/img/nautobot_chevron.svg +5 -0
  390. nautobot/project-static/img/nautobot_chevron_header.svg +5 -0
  391. nautobot/project-static/img/system-theme.png +0 -0
  392. nautobot/tenancy/navigation.py +0 -13
  393. nautobot/ui/package-lock.json +2 -2
  394. nautobot/ui/package.json +1 -1
  395. nautobot/users/admin.py +44 -0
  396. nautobot/users/migrations/0007_alter_objectpermission_object_types.py +33 -0
  397. nautobot/users/models.py +3 -2
  398. nautobot/virtualization/navigation.py +1 -33
  399. nautobot/virtualization/tests/test_api.py +1 -1
  400. nautobot/virtualization/tests/test_filters.py +1 -1
  401. {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/METADATA +2 -2
  402. {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/RECORD +405 -786
  403. CHANGELOG.md +0 -3
  404. CONTRIBUTING.md +0 -3
  405. NOTICE +0 -8
  406. nautobot/docs/apps/index.md +0 -22
  407. nautobot/docs/apps/nautobot-apps.md +0 -10
  408. nautobot/docs/assets/app-icons/icon-ChatOps.png +0 -0
  409. nautobot/docs/assets/app-icons/icon-DataValidationEngine.png +0 -0
  410. nautobot/docs/assets/app-icons/icon-DeviceLifecycle.png +0 -0
  411. nautobot/docs/assets/app-icons/icon-DeviceOnboarding.png +0 -0
  412. nautobot/docs/assets/app-icons/icon-FirewallModels.png +0 -0
  413. nautobot/docs/assets/app-icons/icon-GoldenConfiguration.png +0 -0
  414. nautobot/docs/assets/app-icons/icon-NautobotPluginNornir.png +0 -0
  415. nautobot/docs/assets/app-icons/icon-SSoT.png +0 -0
  416. nautobot/docs/assets/extra.css +0 -139
  417. nautobot/docs/assets/favicon.ico +0 -0
  418. nautobot/docs/assets/nautobot_logo.png +0 -0
  419. nautobot/docs/assets/nautobot_logo.svg +0 -131
  420. nautobot/docs/assets/networktocode_bw.png +0 -0
  421. nautobot/docs/assets/overrides/partials/copyright.html +0 -20
  422. nautobot/docs/development/apps/api/configuration-view.md +0 -35
  423. nautobot/docs/development/apps/api/database-backend-config.md +0 -26
  424. nautobot/docs/development/apps/api/models/django-admin.md +0 -20
  425. nautobot/docs/development/apps/api/models/global-search.md +0 -11
  426. nautobot/docs/development/apps/api/models/graphql.md +0 -97
  427. nautobot/docs/development/apps/api/models/index.md +0 -81
  428. nautobot/docs/development/apps/api/nautobot-app-config.md +0 -84
  429. nautobot/docs/development/apps/api/platform-features/custom-validators.md +0 -30
  430. nautobot/docs/development/apps/api/platform-features/filter-extensions.md +0 -49
  431. nautobot/docs/development/apps/api/platform-features/git-repository-content.md +0 -62
  432. nautobot/docs/development/apps/api/platform-features/index.md +0 -1
  433. nautobot/docs/development/apps/api/platform-features/jinja2-filters.md +0 -28
  434. nautobot/docs/development/apps/api/platform-features/jobs.md +0 -29
  435. nautobot/docs/development/apps/api/platform-features/populating-extensibility-features.md +0 -58
  436. nautobot/docs/development/apps/api/platform-features/secrets-providers.md +0 -64
  437. nautobot/docs/development/apps/api/platform-features/uniquely-identify-objects.md +0 -63
  438. nautobot/docs/development/apps/api/prometheus.md +0 -25
  439. nautobot/docs/development/apps/api/setup.md +0 -132
  440. nautobot/docs/development/apps/api/testing.md +0 -55
  441. nautobot/docs/development/apps/api/ui-extensions/banners.md +0 -26
  442. nautobot/docs/development/apps/api/ui-extensions/home-page.md +0 -9
  443. nautobot/docs/development/apps/api/ui-extensions/index.md +0 -1
  444. nautobot/docs/development/apps/api/ui-extensions/navigation.md +0 -15
  445. nautobot/docs/development/apps/api/ui-extensions/object-detail-views.md +0 -74
  446. nautobot/docs/development/apps/api/ui-extensions/tabs.md +0 -52
  447. nautobot/docs/development/apps/api/views/base-template.md +0 -38
  448. nautobot/docs/development/apps/api/views/core-view-overrides.md +0 -26
  449. nautobot/docs/development/apps/api/views/django-generic-views.md +0 -23
  450. nautobot/docs/development/apps/api/views/help-documentation.md +0 -16
  451. nautobot/docs/development/apps/api/views/index.md +0 -3
  452. nautobot/docs/development/apps/api/views/nautobot-generic-views.md +0 -35
  453. nautobot/docs/development/apps/api/views/nautobotuiviewset.md +0 -147
  454. nautobot/docs/development/apps/api/views/nautobotuiviewsetrouter.md +0 -41
  455. nautobot/docs/development/apps/api/views/notes.md +0 -25
  456. nautobot/docs/development/apps/api/views/rest-api.md +0 -64
  457. nautobot/docs/development/apps/api/views/urls.md +0 -26
  458. nautobot/docs/development/apps/api/views/view-overrides.md +0 -50
  459. nautobot/docs/development/apps/index.md +0 -75
  460. nautobot/docs/development/apps/migration/code-updates.md +0 -160
  461. nautobot/docs/development/apps/migration/dependency-updates.md +0 -13
  462. nautobot/docs/development/apps/migration/from-v1.md +0 -56
  463. nautobot/docs/development/apps/migration/model-updates/dcim.md +0 -285
  464. nautobot/docs/development/apps/migration/model-updates/extras.md +0 -30
  465. nautobot/docs/development/apps/migration/model-updates/global.md +0 -5
  466. nautobot/docs/development/apps/migration/model-updates/ipam.md +0 -22
  467. nautobot/docs/development/apps/porting-from-netbox.md +0 -23
  468. nautobot/docs/development/core/application-registry.md +0 -216
  469. nautobot/docs/development/core/best-practices.md +0 -469
  470. nautobot/docs/development/core/docker-compose-advanced-use-cases.md +0 -228
  471. nautobot/docs/development/core/extending-models.md +0 -93
  472. nautobot/docs/development/core/generic-views.md +0 -65
  473. nautobot/docs/development/core/getting-started.md +0 -859
  474. nautobot/docs/development/core/homepage.md +0 -63
  475. nautobot/docs/development/core/index.md +0 -334
  476. nautobot/docs/development/core/model-features.md +0 -44
  477. nautobot/docs/development/core/natural-keys.md +0 -121
  478. nautobot/docs/development/core/navigation-menu.md +0 -142
  479. nautobot/docs/development/core/react-ui.md +0 -137
  480. nautobot/docs/development/core/release-checklist.md +0 -312
  481. nautobot/docs/development/core/role-internals.md +0 -28
  482. nautobot/docs/development/core/style-guide.md +0 -200
  483. nautobot/docs/development/core/templates.md +0 -101
  484. nautobot/docs/development/core/testing.md +0 -238
  485. nautobot/docs/development/core/user-preferences.md +0 -11
  486. nautobot/docs/development/index.md +0 -1
  487. nautobot/docs/development/jobs/index.md +0 -835
  488. nautobot/docs/development/jobs/migration/from-v1.md +0 -160
  489. nautobot/docs/generate_code_reference_pages.py +0 -20
  490. nautobot/docs/img/edge_dev_circuit_relationship.png +0 -0
  491. nautobot/docs/img/leaf_dev_no_circuit_relationship.png +0 -0
  492. nautobot/docs/img/relationship_w_json_filter.png +0 -0
  493. nautobot/docs/index.md +0 -105
  494. nautobot/docs/media/admin_ui_run_permission.png +0 -0
  495. nautobot/docs/media/development/homepage_changelog_panel.png +0 -0
  496. nautobot/docs/media/development/homepage_dcim_panel.png +0 -0
  497. nautobot/docs/media/development/index_bug_wf.jpg +0 -0
  498. nautobot/docs/media/development/index_feature_request_wf.jpg +0 -0
  499. nautobot/docs/media/development/index_release_cadence.drawio +0 -90
  500. nautobot/docs/media/development/index_release_cadence.jpg +0 -0
  501. nautobot/docs/media/installation/nautobot_ui_admin.png +0 -0
  502. nautobot/docs/media/installation/nautobot_ui_guest.png +0 -0
  503. nautobot/docs/media/models/dcim_cable_trace.png +0 -0
  504. nautobot/docs/media/models/dcim_cable_trace_circuit.png +0 -0
  505. nautobot/docs/media/models/dynamicgroup_filtering_01.png +0 -0
  506. nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_01.png +0 -0
  507. nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_02.png +0 -0
  508. nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_03.png +0 -0
  509. nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_04.png +0 -0
  510. nautobot/docs/media/models/dynamicgroup_workflow_advanced_1_05.png +0 -0
  511. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_01.png +0 -0
  512. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_02.png +0 -0
  513. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_03.png +0 -0
  514. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_04.png +0 -0
  515. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_05.png +0 -0
  516. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_06.png +0 -0
  517. nautobot/docs/media/models/dynamicgroup_workflow_advanced_2_07.png +0 -0
  518. nautobot/docs/media/models/dynamicgroup_workflow_basic_01.png +0 -0
  519. nautobot/docs/media/models/dynamicgroup_workflow_basic_02.png +0 -0
  520. nautobot/docs/media/models/dynamicgroup_workflow_basic_03.png +0 -0
  521. nautobot/docs/media/models/jobbutton_form.png +0 -0
  522. nautobot/docs/media/models/site_jobbuttons.png +0 -0
  523. nautobot/docs/media/nautobot_application_stack_high_level.drawio +0 -1
  524. nautobot/docs/media/nautobot_application_stack_high_level.png +0 -0
  525. nautobot/docs/media/nautobot_application_stack_low_level.drawio +0 -1
  526. nautobot/docs/media/nautobot_application_stack_low_level.png +0 -0
  527. nautobot/docs/media/nautobot_chatops.gif +0 -0
  528. nautobot/docs/media/nautobot_config_context.gif +0 -0
  529. nautobot/docs/media/nautobot_golden_config.gif +0 -0
  530. nautobot/docs/media/nautobot_graphql.gif +0 -0
  531. nautobot/docs/media/nautobot_mainpage.gif +0 -0
  532. nautobot/docs/media/nautobot_prefix_hierarchy.gif +0 -0
  533. nautobot/docs/media/plugins/plugin_admin_config.png +0 -0
  534. nautobot/docs/media/plugins/plugin_admin_ui.png +0 -0
  535. nautobot/docs/media/plugins/plugin_rest_api_endpoint.png +0 -0
  536. nautobot/docs/media/power_distribution.png +0 -0
  537. nautobot/docs/media/ss_config_contexts.png +0 -0
  538. nautobot/docs/media/ss_graphiql.png +0 -0
  539. nautobot/docs/media/ss_main_page.png +0 -0
  540. nautobot/docs/media/ss_plugin_chatops.png +0 -0
  541. nautobot/docs/media/ss_plugin_golden_config.png +0 -0
  542. nautobot/docs/media/ss_prefix_hierarchy.png +0 -0
  543. nautobot/docs/media/user-guide/administration/guides/s3-django-storage/user-guide-s3-1.png +0 -0
  544. nautobot/docs/media/user-guide/administration/guides/s3-django-storage/user-guide-s3-2.png +0 -0
  545. nautobot/docs/media/user-guide/administration/upgrading/from-v1/ipam/tenant-affinity.png +0 -0
  546. nautobot/docs/nautobot_logo.png +0 -0
  547. nautobot/docs/nautobot_logo.svg +0 -131
  548. nautobot/docs/release-notes/index.md +0 -3
  549. nautobot/docs/release-notes/version-1.0.md +0 -530
  550. nautobot/docs/release-notes/version-1.1.md +0 -337
  551. nautobot/docs/release-notes/version-1.2.md +0 -509
  552. nautobot/docs/release-notes/version-1.3.md +0 -554
  553. nautobot/docs/release-notes/version-1.4.md +0 -677
  554. nautobot/docs/release-notes/version-1.5.md +0 -840
  555. nautobot/docs/release-notes/version-1.6.md +0 -290
  556. nautobot/docs/release-notes/version-2.0.md +0 -1359
  557. nautobot/docs/requirements.txt +0 -12
  558. nautobot/docs/user-guide/administration/configuration/authentication/ldap.md +0 -286
  559. nautobot/docs/user-guide/administration/configuration/authentication/remote.md +0 -46
  560. nautobot/docs/user-guide/administration/configuration/authentication/sso.md +0 -528
  561. nautobot/docs/user-guide/administration/configuration/index.md +0 -190
  562. nautobot/docs/user-guide/administration/configuration/node-configuration.md +0 -31
  563. nautobot/docs/user-guide/administration/configuration/optional-settings.md +0 -1302
  564. nautobot/docs/user-guide/administration/configuration/required-settings.md +0 -244
  565. nautobot/docs/user-guide/administration/guides/caching.md +0 -108
  566. nautobot/docs/user-guide/administration/guides/celery-queues.md +0 -42
  567. nautobot/docs/user-guide/administration/guides/healthcheck.md +0 -11
  568. nautobot/docs/user-guide/administration/guides/permissions.md +0 -98
  569. nautobot/docs/user-guide/administration/guides/prometheus-metrics.md +0 -55
  570. nautobot/docs/user-guide/administration/guides/replicating-nautobot.md +0 -70
  571. nautobot/docs/user-guide/administration/guides/s3-django-storage.md +0 -145
  572. nautobot/docs/user-guide/administration/installation/app-install.md +0 -94
  573. nautobot/docs/user-guide/administration/installation/docker.md +0 -286
  574. nautobot/docs/user-guide/administration/installation/external-authentication.md +0 -9
  575. nautobot/docs/user-guide/administration/installation/http-server.md +0 -279
  576. nautobot/docs/user-guide/administration/installation/index.md +0 -101
  577. nautobot/docs/user-guide/administration/installation/install_system.md +0 -493
  578. nautobot/docs/user-guide/administration/installation/nautobot.md +0 -367
  579. nautobot/docs/user-guide/administration/installation/selinux-troubleshooting.md +0 -194
  580. nautobot/docs/user-guide/administration/installation/services.md +0 -340
  581. nautobot/docs/user-guide/administration/migration/migrating-from-netbox.md +0 -336
  582. nautobot/docs/user-guide/administration/migration/migrating-from-postgresql.md +0 -122
  583. nautobot/docs/user-guide/administration/tools/nautobot-server.md +0 -858
  584. nautobot/docs/user-guide/administration/tools/nautobot-shell.md +0 -263
  585. nautobot/docs/user-guide/administration/upgrading/database-backup.md +0 -11
  586. nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.md +0 -55
  587. nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.md +0 -73
  588. nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.md +0 -211
  589. nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/index.md +0 -16
  590. nautobot/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.md +0 -157
  591. nautobot/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.md +0 -153
  592. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-api-behavior-changes.yaml +0 -82
  593. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-api-removed-fields.yaml +0 -175
  594. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-api-renamed-fields.yaml +0 -124
  595. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-location-changes.yaml +0 -241
  596. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-removals.yaml +0 -57
  597. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-renames.yaml +0 -5
  598. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-database-behavior-changes.yaml +0 -76
  599. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-database-removed-fields.yaml +0 -202
  600. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-database-renamed-fields.yaml +0 -343
  601. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-corrected-fields.yaml +0 -31
  602. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-enhanced-fields.yaml +0 -244
  603. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-removed-fields.yaml +0 -595
  604. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-filters-renamed-fields.yaml +0 -253
  605. nautobot/docs/user-guide/administration/upgrading/from-v1/tables/v2-logging-renamed-loggers.yaml +0 -23
  606. nautobot/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.md +0 -574
  607. nautobot/docs/user-guide/administration/upgrading/upgrading.md +0 -127
  608. nautobot/docs/user-guide/core-data-model/circuits/circuit.md +0 -19
  609. nautobot/docs/user-guide/core-data-model/circuits/circuittermination.md +0 -10
  610. nautobot/docs/user-guide/core-data-model/circuits/circuittype.md +0 -8
  611. nautobot/docs/user-guide/core-data-model/circuits/provider.md +0 -5
  612. nautobot/docs/user-guide/core-data-model/circuits/providernetwork.md +0 -7
  613. nautobot/docs/user-guide/core-data-model/dcim/cable.md +0 -43
  614. nautobot/docs/user-guide/core-data-model/dcim/consoleport.md +0 -8
  615. nautobot/docs/user-guide/core-data-model/dcim/consoleporttemplate.md +0 -6
  616. nautobot/docs/user-guide/core-data-model/dcim/consoleserverport.md +0 -8
  617. nautobot/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.md +0 -6
  618. nautobot/docs/user-guide/core-data-model/dcim/device.md +0 -29
  619. nautobot/docs/user-guide/core-data-model/dcim/devicebay.md +0 -11
  620. nautobot/docs/user-guide/core-data-model/dcim/devicebaytemplate.md +0 -6
  621. nautobot/docs/user-guide/core-data-model/dcim/deviceredundancygroup.md +0 -279
  622. nautobot/docs/user-guide/core-data-model/dcim/devicetype.md +0 -44
  623. nautobot/docs/user-guide/core-data-model/dcim/frontport.md +0 -6
  624. nautobot/docs/user-guide/core-data-model/dcim/frontporttemplate.md +0 -6
  625. nautobot/docs/user-guide/core-data-model/dcim/interface.md +0 -34
  626. nautobot/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.md +0 -24
  627. nautobot/docs/user-guide/core-data-model/dcim/interfacetemplate.md +0 -6
  628. nautobot/docs/user-guide/core-data-model/dcim/inventoryitem.md +0 -10
  629. nautobot/docs/user-guide/core-data-model/dcim/location.md +0 -15
  630. nautobot/docs/user-guide/core-data-model/dcim/locationtype.md +0 -43
  631. nautobot/docs/user-guide/core-data-model/dcim/manufacturer.md +0 -3
  632. nautobot/docs/user-guide/core-data-model/dcim/platform.md +0 -19
  633. nautobot/docs/user-guide/core-data-model/dcim/powerfeed.md +0 -25
  634. nautobot/docs/user-guide/core-data-model/dcim/poweroutlet.md +0 -14
  635. nautobot/docs/user-guide/core-data-model/dcim/poweroutlettemplate.md +0 -6
  636. nautobot/docs/user-guide/core-data-model/dcim/powerpanel.md +0 -12
  637. nautobot/docs/user-guide/core-data-model/dcim/powerport.md +0 -15
  638. nautobot/docs/user-guide/core-data-model/dcim/powerporttemplate.md +0 -6
  639. nautobot/docs/user-guide/core-data-model/dcim/rack.md +0 -41
  640. nautobot/docs/user-guide/core-data-model/dcim/rackgroup.md +0 -7
  641. nautobot/docs/user-guide/core-data-model/dcim/rackreservation.md +0 -3
  642. nautobot/docs/user-guide/core-data-model/dcim/rearport.md +0 -9
  643. nautobot/docs/user-guide/core-data-model/dcim/rearporttemplate.md +0 -6
  644. nautobot/docs/user-guide/core-data-model/dcim/virtualchassis.md +0 -8
  645. nautobot/docs/user-guide/core-data-model/extras/configcontext.md +0 -78
  646. nautobot/docs/user-guide/core-data-model/extras/configcontextschema.md +0 -73
  647. nautobot/docs/user-guide/core-data-model/ipam/ipaddress.md +0 -69
  648. nautobot/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio +0 -1
  649. nautobot/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio.svg +0 -4
  650. nautobot/docs/user-guide/core-data-model/ipam/namespace.md +0 -18
  651. nautobot/docs/user-guide/core-data-model/ipam/prefix.md +0 -65
  652. nautobot/docs/user-guide/core-data-model/ipam/rir.md +0 -10
  653. nautobot/docs/user-guide/core-data-model/ipam/routetarget.md +0 -5
  654. nautobot/docs/user-guide/core-data-model/ipam/service.md +0 -8
  655. nautobot/docs/user-guide/core-data-model/ipam/vlan.md +0 -17
  656. nautobot/docs/user-guide/core-data-model/ipam/vlangroup.md +0 -5
  657. nautobot/docs/user-guide/core-data-model/ipam/vrf.md +0 -15
  658. nautobot/docs/user-guide/core-data-model/tenancy/tenant.md +0 -20
  659. nautobot/docs/user-guide/core-data-model/tenancy/tenantgroup.md +0 -5
  660. nautobot/docs/user-guide/core-data-model/virtualization/cluster.md +0 -5
  661. nautobot/docs/user-guide/core-data-model/virtualization/clustergroup.md +0 -3
  662. nautobot/docs/user-guide/core-data-model/virtualization/clustertype.md +0 -3
  663. nautobot/docs/user-guide/core-data-model/virtualization/virtualmachine.md +0 -17
  664. nautobot/docs/user-guide/core-data-model/virtualization/vminterface.md +0 -19
  665. nautobot/docs/user-guide/feature-guides/custom-fields.md +0 -350
  666. nautobot/docs/user-guide/feature-guides/getting-started/creating-devices.md +0 -130
  667. nautobot/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.md +0 -113
  668. nautobot/docs/user-guide/feature-guides/getting-started/index.md +0 -29
  669. nautobot/docs/user-guide/feature-guides/getting-started/interfaces.md +0 -100
  670. nautobot/docs/user-guide/feature-guides/getting-started/ipam.md +0 -104
  671. nautobot/docs/user-guide/feature-guides/getting-started/platforms.md +0 -78
  672. nautobot/docs/user-guide/feature-guides/getting-started/search-bar.md +0 -40
  673. nautobot/docs/user-guide/feature-guides/getting-started/tenants.md +0 -40
  674. nautobot/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.md +0 -87
  675. nautobot/docs/user-guide/feature-guides/git-data-source.md +0 -307
  676. nautobot/docs/user-guide/feature-guides/graphql.md +0 -342
  677. nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_choices.png +0 -0
  678. nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_detail_grouped.png +0 -0
  679. nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_detail_label.png +0 -0
  680. nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_edit.png +0 -0
  681. nautobot/docs/user-guide/feature-guides/images/custom-fields/custom_field_select.png +0 -0
  682. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/1-create-location-type.png +0 -0
  683. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/10-add-platform.png +0 -0
  684. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/11-platforms-page.png +0 -0
  685. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/12-add-tenant.png +0 -0
  686. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/13-assign-tenant-to-device.png +0 -0
  687. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/14-assign-tenant-to-device-2.png +0 -0
  688. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/15-create-device-type.png +0 -0
  689. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/16-interface-templates.png +0 -0
  690. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/17-templated-interfaces.png +0 -0
  691. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/18-assign-device-type.png +0 -0
  692. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/19-edit-ints-for-lag.png +0 -0
  693. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/2-create-manufacturer.png +0 -0
  694. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/20-ints-int-lag.png +0 -0
  695. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/21-device-type.png +0 -0
  696. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/22-create-vlans.png +0 -0
  697. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/23-create-vlans-2.png +0 -0
  698. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/24-vlan-main-page.png +0 -0
  699. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/25-add-vlan-to-interface.png +0 -0
  700. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/26-add-vlan-to-interface-2.png +0 -0
  701. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/27-add-rir.png +0 -0
  702. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/3-create-role.png +0 -0
  703. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/30-add-prefix.png +0 -0
  704. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/32-add-ip-addr.png +0 -0
  705. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/33-assign-address.png +0 -0
  706. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/34-assign-address-2.png +0 -0
  707. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/35-assign-address-3.png +0 -0
  708. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/36-verify-address.png +0 -0
  709. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/37-verify-prefix.png +0 -0
  710. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/38-verify-prefix2.png +0 -0
  711. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/39-address-search.png +0 -0
  712. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/4-create-device-type.png +0 -0
  713. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/40-addr-main-page.png +0 -0
  714. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/41-device-search-results.png +0 -0
  715. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/42-address-search-v2.png +0 -0
  716. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/43-get-to-device-main-page.png +0 -0
  717. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/44-add-platform.png +0 -0
  718. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/5-create-device.png +0 -0
  719. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/6-create-location.png +0 -0
  720. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/7-location-type-page.png +0 -0
  721. nautobot/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/8-location-page.png +0 -0
  722. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/01-git-data-source.png +0 -0
  723. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/02-git-data-source.png +0 -0
  724. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/03-git-data-source.png +0 -0
  725. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/04-git-data-source.png +0 -0
  726. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/05-git-data-source.png +0 -0
  727. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/06-git-data-source.png +0 -0
  728. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/07-git-data-source.png +0 -0
  729. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/08-git-data-source.png +0 -0
  730. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/09-git-data-source.png +0 -0
  731. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/10-git-data-source.png +0 -0
  732. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/11-git-data-source.png +0 -0
  733. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/12-git-data-source.png +0 -0
  734. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/13-git-data-source.png +0 -0
  735. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/14-git-data-source.png +0 -0
  736. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/15-git-data-source.png +0 -0
  737. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/16-git-data-source.png +0 -0
  738. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/17-git-data-source.png +0 -0
  739. nautobot/docs/user-guide/feature-guides/images/git-as-data-source/18-git-data-source.png +0 -0
  740. nautobot/docs/user-guide/feature-guides/images/graphql/00-graphiql.png +0 -0
  741. nautobot/docs/user-guide/feature-guides/images/graphql/01-graphiql-explorer.png +0 -0
  742. nautobot/docs/user-guide/feature-guides/images/graphql/02-graphiql-explorer-device-query.png +0 -0
  743. nautobot/docs/user-guide/feature-guides/images/graphql/03-graphiql-explorer-device-attributes.png +0 -0
  744. nautobot/docs/user-guide/feature-guides/images/graphql/04-graphql-query-01.png +0 -0
  745. nautobot/docs/user-guide/feature-guides/images/graphql/05-graphiql-autocomplete.png +0 -0
  746. nautobot/docs/user-guide/feature-guides/images/graphql/06-graphql-query-02.png +0 -0
  747. nautobot/docs/user-guide/feature-guides/images/graphql/07-graphql-query-03.png +0 -0
  748. nautobot/docs/user-guide/feature-guides/images/graphql/08-graphql-query-04.png +0 -0
  749. nautobot/docs/user-guide/feature-guides/images/graphql/09-graphql-query-05.png +0 -0
  750. nautobot/docs/user-guide/feature-guides/images/graphql/10-graphql-swagger.png +0 -0
  751. nautobot/docs/user-guide/feature-guides/images/graphql/11-graphql-query-06.png +0 -0
  752. nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/ip_merge_button.png +0 -0
  753. nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/merge_button.png +0 -0
  754. nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/merge_view.png +0 -0
  755. nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/no_more_dup_ips.png +0 -0
  756. nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/skip_button.png +0 -0
  757. nautobot/docs/user-guide/feature-guides/images/ip-address-merge-tool/unselect_ips.png +0 -0
  758. nautobot/docs/user-guide/feature-guides/images/relationships/01-relationships.png +0 -0
  759. nautobot/docs/user-guide/feature-guides/images/relationships/02-relationships.png +0 -0
  760. nautobot/docs/user-guide/feature-guides/images/relationships/03-relationships.png +0 -0
  761. nautobot/docs/user-guide/feature-guides/images/relationships/04-relationships.png +0 -0
  762. nautobot/docs/user-guide/feature-guides/images/relationships/05-relationships.png +0 -0
  763. nautobot/docs/user-guide/feature-guides/images/relationships/06-relationships.png +0 -0
  764. nautobot/docs/user-guide/feature-guides/images/relationships/07-relationships.png +0 -0
  765. nautobot/docs/user-guide/feature-guides/images/relationships/08-relationships.png +0 -0
  766. nautobot/docs/user-guide/feature-guides/images/relationships/09-relationships.png +0 -0
  767. nautobot/docs/user-guide/feature-guides/images/relationships/10-relationships.png +0 -0
  768. nautobot/docs/user-guide/feature-guides/images/relationships/11-relationships.png +0 -0
  769. nautobot/docs/user-guide/feature-guides/ip-address-merge-tool.md +0 -63
  770. nautobot/docs/user-guide/feature-guides/relationships.md +0 -125
  771. nautobot/docs/user-guide/index.md +0 -1
  772. nautobot/docs/user-guide/platform-functionality/change-logging.md +0 -21
  773. nautobot/docs/user-guide/platform-functionality/computedfield.md +0 -89
  774. nautobot/docs/user-guide/platform-functionality/customfield.md +0 -123
  775. nautobot/docs/user-guide/platform-functionality/customlink.md +0 -59
  776. nautobot/docs/user-guide/platform-functionality/dynamicgroup.md +0 -660
  777. nautobot/docs/user-guide/platform-functionality/exporttemplate.md +0 -55
  778. nautobot/docs/user-guide/platform-functionality/gitrepository.md +0 -353
  779. nautobot/docs/user-guide/platform-functionality/graphql.md +0 -259
  780. nautobot/docs/user-guide/platform-functionality/graphqlquery.md +0 -28
  781. nautobot/docs/user-guide/platform-functionality/imageattachment.md +0 -10
  782. nautobot/docs/user-guide/platform-functionality/jobs/index.md +0 -193
  783. nautobot/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.md +0 -78
  784. nautobot/docs/user-guide/platform-functionality/jobs/jobbutton.md +0 -79
  785. nautobot/docs/user-guide/platform-functionality/jobs/jobhook.md +0 -15
  786. nautobot/docs/user-guide/platform-functionality/jobs/models.md +0 -65
  787. nautobot/docs/user-guide/platform-functionality/napalm.md +0 -85
  788. nautobot/docs/user-guide/platform-functionality/note.md +0 -7
  789. nautobot/docs/user-guide/platform-functionality/relationship.md +0 -158
  790. nautobot/docs/user-guide/platform-functionality/rest-api/authentication.md +0 -67
  791. nautobot/docs/user-guide/platform-functionality/rest-api/filtering.md +0 -142
  792. nautobot/docs/user-guide/platform-functionality/rest-api/overview.md +0 -1045
  793. nautobot/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.md +0 -9
  794. nautobot/docs/user-guide/platform-functionality/role.md +0 -17
  795. nautobot/docs/user-guide/platform-functionality/secret.md +0 -136
  796. nautobot/docs/user-guide/platform-functionality/status.md +0 -92
  797. nautobot/docs/user-guide/platform-functionality/tag.md +0 -62
  798. nautobot/docs/user-guide/platform-functionality/template-filters.md +0 -306
  799. nautobot/docs/user-guide/platform-functionality/users/objectpermission.md +0 -56
  800. nautobot/docs/user-guide/platform-functionality/users/token.md +0 -21
  801. nautobot/docs/user-guide/platform-functionality/webhook.md +0 -137
  802. nautobot/project-static/docs/media/nautobot_application_stack_low_level.drawio +0 -1
  803. nautobot/project-static/docs/media/nautobot_chatops.gif +0 -0
  804. nautobot/project-static/docs/media/nautobot_config_context.gif +0 -0
  805. nautobot/project-static/docs/media/nautobot_golden_config.gif +0 -0
  806. nautobot/project-static/docs/media/nautobot_graphql.gif +0 -0
  807. nautobot/project-static/docs/media/nautobot_mainpage.gif +0 -0
  808. nautobot/project-static/docs/media/nautobot_prefix_hierarchy.gif +0 -0
  809. nautobot-2.0.4.dist-info/LICENSE.txt +0 -177
  810. /LICENSE.txt → /nautobot-2.1.0b1.dist-info/LICENSE.txt +0 -0
  811. {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/WHEEL +0 -0
  812. {nautobot-2.0.4.dist-info → nautobot-2.1.0b1.dist-info}/entry_points.txt +0 -0
@@ -17,7 +17,7 @@
17
17
  <link rel="next" href="choices.html">
18
18
 
19
19
  <link rel="icon" href="../../../assets/favicon.ico">
20
- <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.20">
20
+ <meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.1.21">
21
21
 
22
22
 
23
23
 
@@ -2659,6 +2659,20 @@
2659
2659
 
2660
2660
 
2661
2661
 
2662
+ <li class="md-nav__item">
2663
+ <a href="../../../user-guide/platform-functionality/externalintegration.html" class="md-nav__link">
2664
+ External Integrations
2665
+ </a>
2666
+ </li>
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2675
+
2662
2676
  <li class="md-nav__item">
2663
2677
  <a href="../../../user-guide/platform-functionality/gitrepository.html" class="md-nav__link">
2664
2678
  Git Repositories
@@ -2679,7 +2693,7 @@
2679
2693
 
2680
2694
 
2681
2695
 
2682
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_8" >
2696
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_9" >
2683
2697
 
2684
2698
 
2685
2699
 
@@ -2688,14 +2702,14 @@
2688
2702
  <div class="md-nav__link md-nav__link--index ">
2689
2703
  <a href="../../../user-guide/platform-functionality/graphql.html">GraphQL</a>
2690
2704
 
2691
- <label for="__nav_2_4_8">
2705
+ <label for="__nav_2_4_9">
2692
2706
  <span class="md-nav__icon md-icon"></span>
2693
2707
  </label>
2694
2708
 
2695
2709
  </div>
2696
2710
 
2697
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_8_label" aria-expanded="false">
2698
- <label class="md-nav__title" for="__nav_2_4_8">
2711
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_9_label" aria-expanded="false">
2712
+ <label class="md-nav__title" for="__nav_2_4_9">
2699
2713
  <span class="md-nav__icon md-icon"></span>
2700
2714
  GraphQL
2701
2715
  </label>
@@ -2747,7 +2761,7 @@
2747
2761
 
2748
2762
 
2749
2763
 
2750
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_10" >
2764
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_11" >
2751
2765
 
2752
2766
 
2753
2767
 
@@ -2756,14 +2770,14 @@
2756
2770
  <div class="md-nav__link md-nav__link--index ">
2757
2771
  <a href="../../../user-guide/platform-functionality/jobs/index.html">Jobs</a>
2758
2772
 
2759
- <label for="__nav_2_4_10">
2773
+ <label for="__nav_2_4_11">
2760
2774
  <span class="md-nav__icon md-icon"></span>
2761
2775
  </label>
2762
2776
 
2763
2777
  </div>
2764
2778
 
2765
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_10_label" aria-expanded="false">
2766
- <label class="md-nav__title" for="__nav_2_4_10">
2779
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_11_label" aria-expanded="false">
2780
+ <label class="md-nav__title" for="__nav_2_4_11">
2767
2781
  <span class="md-nav__icon md-icon"></span>
2768
2782
  Jobs
2769
2783
  </label>
@@ -2885,7 +2899,7 @@
2885
2899
 
2886
2900
 
2887
2901
 
2888
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_14" >
2902
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_15" >
2889
2903
 
2890
2904
 
2891
2905
 
@@ -2894,14 +2908,14 @@
2894
2908
  <div class="md-nav__link md-nav__link--index ">
2895
2909
  <a href="../../../user-guide/platform-functionality/rest-api/overview.html">REST API</a>
2896
2910
 
2897
- <label for="__nav_2_4_14">
2911
+ <label for="__nav_2_4_15">
2898
2912
  <span class="md-nav__icon md-icon"></span>
2899
2913
  </label>
2900
2914
 
2901
2915
  </div>
2902
2916
 
2903
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_14_label" aria-expanded="false">
2904
- <label class="md-nav__title" for="__nav_2_4_14">
2917
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_15_label" aria-expanded="false">
2918
+ <label class="md-nav__title" for="__nav_2_4_15">
2905
2919
  <span class="md-nav__icon md-icon"></span>
2906
2920
  REST API
2907
2921
  </label>
@@ -3037,17 +3051,17 @@
3037
3051
 
3038
3052
 
3039
3053
 
3040
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_20" >
3054
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_21" >
3041
3055
 
3042
3056
 
3043
3057
 
3044
- <label class="md-nav__link" for="__nav_2_4_20" id="__nav_2_4_20_label" tabindex="0">
3058
+ <label class="md-nav__link" for="__nav_2_4_21" id="__nav_2_4_21_label" tabindex="0">
3045
3059
  Users
3046
3060
  <span class="md-nav__icon md-icon"></span>
3047
3061
  </label>
3048
3062
 
3049
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_20_label" aria-expanded="false">
3050
- <label class="md-nav__title" for="__nav_2_4_20">
3063
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_21_label" aria-expanded="false">
3064
+ <label class="md-nav__title" for="__nav_2_4_21">
3051
3065
  <span class="md-nav__icon md-icon"></span>
3052
3066
  Users
3053
3067
  </label>
@@ -4882,6 +4896,20 @@
4882
4896
 
4883
4897
 
4884
4898
 
4899
+ <li class="md-nav__item">
4900
+ <a href="../../../release-notes/version-2.1.html" class="md-nav__link">
4901
+ Version 2.1
4902
+ </a>
4903
+ </li>
4904
+
4905
+
4906
+
4907
+
4908
+
4909
+
4910
+
4911
+
4912
+
4885
4913
  <li class="md-nav__item">
4886
4914
  <a href="../../../release-notes/version-2.0.html" class="md-nav__link">
4887
4915
  Version 2.0
@@ -5382,10 +5410,7 @@ classes are provided for each context.</p>
5382
5410
 
5383
5411
  <details class="quote">
5384
5412
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5385
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-11">11</a></span>
5386
- <span class="normal"><a href="#__codelineno-0-12">12</a></span>
5387
- <span class="normal"><a href="#__codelineno-0-13">13</a></span>
5388
- <span class="normal"><a href="#__codelineno-0-14">14</a></span>
5413
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-14">14</a></span>
5389
5414
  <span class="normal"><a href="#__codelineno-0-15">15</a></span>
5390
5415
  <span class="normal"><a href="#__codelineno-0-16">16</a></span>
5391
5416
  <span class="normal"><a href="#__codelineno-0-17">17</a></span>
@@ -5421,46 +5446,49 @@ classes are provided for each context.</p>
5421
5446
  <span class="normal"><a href="#__codelineno-0-47">47</a></span>
5422
5447
  <span class="normal"><a href="#__codelineno-0-48">48</a></span>
5423
5448
  <span class="normal"><a href="#__codelineno-0-49">49</a></span>
5424
- <span class="normal"><a href="#__codelineno-0-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="k">class</span> <span class="nc">ChangeContext</span><span class="p">:</span>
5425
- <a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5426
- <a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> ChangeContext is used to describe a single transaction that may be related</span>
5427
- <a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> to one or more object changes. A unique id can be provided, otherwise</span>
5428
- <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> one will be generated to relate any changes to this transaction. Convenience</span>
5429
- <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> classes are provided for each context.</span>
5430
- <a id="__codelineno-0-17" name="__codelineno-0-17"></a>
5431
- <a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> :param user: User object</span>
5432
- <a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> :param request: WSGIRequest object to retrieve user from django rest framework after authentication is performed</span>
5433
- <a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> :param context: Context of the transaction, must match a choice in nautobot.extras.choices.ObjectChangeEventContextChoices</span>
5434
- <a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> :param context_detail: Optional extra details about the transaction (ex: the plugin name that initiated the change)</span>
5435
- <a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> :param change_id: Optional uuid object to uniquely identify the transaction. One will be generated if not supplied</span>
5436
- <a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> &quot;&quot;&quot;</span>
5437
- <a id="__codelineno-0-24" name="__codelineno-0-24"></a>
5438
- <a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
5439
- <a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="n">request</span>
5440
- <a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="o">=</span> <span class="n">user</span>
5441
- <a id="__codelineno-0-28" name="__codelineno-0-28"></a>
5442
- <a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
5443
- <a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Either user or request must be provided&quot;</span><span class="p">)</span>
5449
+ <span class="normal"><a href="#__codelineno-0-50">50</a></span>
5450
+ <span class="normal"><a href="#__codelineno-0-51">51</a></span>
5451
+ <span class="normal"><a href="#__codelineno-0-52">52</a></span>
5452
+ <span class="normal"><a href="#__codelineno-0-53">53</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">ChangeContext</span><span class="p">:</span>
5453
+ <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5454
+ <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> ChangeContext is used to describe a single transaction that may be related</span>
5455
+ <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> to one or more object changes. A unique id can be provided, otherwise</span>
5456
+ <a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> one will be generated to relate any changes to this transaction. Convenience</span>
5457
+ <a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> classes are provided for each context.</span>
5458
+ <a id="__codelineno-0-20" name="__codelineno-0-20"></a>
5459
+ <a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> :param user: User object</span>
5460
+ <a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> :param request: WSGIRequest object to retrieve user from django rest framework after authentication is performed</span>
5461
+ <a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> :param context: Context of the transaction, must match a choice in nautobot.extras.choices.ObjectChangeEventContextChoices</span>
5462
+ <a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> :param context_detail: Optional extra details about the transaction (ex: the plugin name that initiated the change)</span>
5463
+ <a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> :param change_id: Optional uuid object to uniquely identify the transaction. One will be generated if not supplied</span>
5464
+ <a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> &quot;&quot;&quot;</span>
5465
+ <a id="__codelineno-0-27" name="__codelineno-0-27"></a>
5466
+ <a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
5467
+ <a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="o">=</span> <span class="n">request</span>
5468
+ <a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="o">=</span> <span class="n">user</span>
5444
5469
  <a id="__codelineno-0-31" name="__codelineno-0-31"></a>
5445
- <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5446
- <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Request and user cannot be used together&quot;</span><span class="p">)</span>
5470
+ <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
5471
+ <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Either user or request must be provided&quot;</span><span class="p">)</span>
5447
5472
  <a id="__codelineno-0-34" name="__codelineno-0-34"></a>
5448
- <a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5449
- <a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="n">context</span>
5450
- <a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
5451
- <a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Context must be a choice within ObjectChangeEventContextChoices&quot;</span><span class="p">)</span>
5452
- <a id="__codelineno-0-39" name="__codelineno-0-39"></a>
5453
- <a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="bp">self</span><span class="o">.</span><span class="n">context_detail</span> <span class="o">=</span> <span class="n">context_detail</span>
5454
- <a id="__codelineno-0-41" name="__codelineno-0-41"></a>
5455
- <a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="bp">self</span><span class="o">.</span><span class="n">change_id</span> <span class="o">=</span> <span class="n">change_id</span>
5456
- <a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">change_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
5457
- <a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="bp">self</span><span class="o">.</span><span class="n">change_id</span> <span class="o">=</span> <span class="n">uuid</span><span class="o">.</span><span class="n">uuid4</span><span class="p">()</span>
5458
- <a id="__codelineno-0-45" name="__codelineno-0-45"></a>
5459
- <a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">def</span> <span class="nf">get_user</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
5460
- <a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return self.user if set, otherwise return self.request.user&quot;&quot;&quot;</span>
5461
- <a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5462
- <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span>
5463
- <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">user</span>
5473
+ <a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5474
+ <a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Request and user cannot be used together&quot;</span><span class="p">)</span>
5475
+ <a id="__codelineno-0-37" name="__codelineno-0-37"></a>
5476
+ <a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5477
+ <a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="n">context</span>
5478
+ <a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
5479
+ <a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Context must be a choice within ObjectChangeEventContextChoices&quot;</span><span class="p">)</span>
5480
+ <a id="__codelineno-0-42" name="__codelineno-0-42"></a>
5481
+ <a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="bp">self</span><span class="o">.</span><span class="n">context_detail</span> <span class="o">=</span> <span class="n">context_detail</span>
5482
+ <a id="__codelineno-0-44" name="__codelineno-0-44"></a>
5483
+ <a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="bp">self</span><span class="o">.</span><span class="n">change_id</span> <span class="o">=</span> <span class="n">change_id</span>
5484
+ <a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">change_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
5485
+ <a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="bp">self</span><span class="o">.</span><span class="n">change_id</span> <span class="o">=</span> <span class="n">uuid</span><span class="o">.</span><span class="n">uuid4</span><span class="p">()</span>
5486
+ <a id="__codelineno-0-48" name="__codelineno-0-48"></a>
5487
+ <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">def</span> <span class="nf">get_user</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
5488
+ <a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return self.user if set, otherwise return self.request.user&quot;&quot;&quot;</span>
5489
+ <a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5490
+ <a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span>
5491
+ <a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">user</span>
5464
5492
  </code></pre></div></td></tr></table></div>
5465
5493
  </details>
5466
5494
 
@@ -5493,15 +5521,15 @@ classes are provided for each context.</p>
5493
5521
 
5494
5522
  <details class="quote">
5495
5523
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5496
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-46">46</a></span>
5497
- <span class="normal"><a href="#__codelineno-0-47">47</a></span>
5498
- <span class="normal"><a href="#__codelineno-0-48">48</a></span>
5499
- <span class="normal"><a href="#__codelineno-0-49">49</a></span>
5500
- <span class="normal"><a href="#__codelineno-0-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="k">def</span> <span class="nf">get_user</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
5501
- <a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return self.user if set, otherwise return self.request.user&quot;&quot;&quot;</span>
5502
- <a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5503
- <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span>
5504
- <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">user</span>
5524
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-49">49</a></span>
5525
+ <span class="normal"><a href="#__codelineno-0-50">50</a></span>
5526
+ <span class="normal"><a href="#__codelineno-0-51">51</a></span>
5527
+ <span class="normal"><a href="#__codelineno-0-52">52</a></span>
5528
+ <span class="normal"><a href="#__codelineno-0-53">53</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="k">def</span> <span class="nf">get_user</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
5529
+ <a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return self.user if set, otherwise return self.request.user&quot;&quot;&quot;</span>
5530
+ <a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5531
+ <a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span>
5532
+ <a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">user</span>
5505
5533
  </code></pre></div></td></tr></table></div>
5506
5534
  </details>
5507
5535
  </div>
@@ -5536,13 +5564,13 @@ classes are provided for each context.</p>
5536
5564
 
5537
5565
  <details class="quote">
5538
5566
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5539
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-53">53</a></span>
5540
- <span class="normal"><a href="#__codelineno-0-54">54</a></span>
5541
- <span class="normal"><a href="#__codelineno-0-55">55</a></span>
5542
- <span class="normal"><a href="#__codelineno-0-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="k">class</span> <span class="nc">JobChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5543
- <a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made by jobs&quot;&quot;&quot;</span>
5544
- <a id="__codelineno-0-55" name="__codelineno-0-55"></a>
5545
- <a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_JOB</span>
5567
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-56">56</a></span>
5568
+ <span class="normal"><a href="#__codelineno-0-57">57</a></span>
5569
+ <span class="normal"><a href="#__codelineno-0-58">58</a></span>
5570
+ <span class="normal"><a href="#__codelineno-0-59">59</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="k">class</span> <span class="nc">JobChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5571
+ <a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made by jobs&quot;&quot;&quot;</span>
5572
+ <a id="__codelineno-0-58" name="__codelineno-0-58"></a>
5573
+ <a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_JOB</span>
5546
5574
  </code></pre></div></td></tr></table></div>
5547
5575
  </details>
5548
5576
 
@@ -5586,13 +5614,13 @@ classes are provided for each context.</p>
5586
5614
 
5587
5615
  <details class="quote">
5588
5616
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5589
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-59">59</a></span>
5590
- <span class="normal"><a href="#__codelineno-0-60">60</a></span>
5591
- <span class="normal"><a href="#__codelineno-0-61">61</a></span>
5592
- <span class="normal"><a href="#__codelineno-0-62">62</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">class</span> <span class="nc">JobHookChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5593
- <a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made by job hooks&quot;&quot;&quot;</span>
5594
- <a id="__codelineno-0-61" name="__codelineno-0-61"></a>
5595
- <a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_JOB_HOOK</span>
5617
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-62">62</a></span>
5618
+ <span class="normal"><a href="#__codelineno-0-63">63</a></span>
5619
+ <span class="normal"><a href="#__codelineno-0-64">64</a></span>
5620
+ <span class="normal"><a href="#__codelineno-0-65">65</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="k">class</span> <span class="nc">JobHookChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5621
+ <a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made by job hooks&quot;&quot;&quot;</span>
5622
+ <a id="__codelineno-0-64" name="__codelineno-0-64"></a>
5623
+ <a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_JOB_HOOK</span>
5596
5624
  </code></pre></div></td></tr></table></div>
5597
5625
  </details>
5598
5626
 
@@ -5636,13 +5664,13 @@ classes are provided for each context.</p>
5636
5664
 
5637
5665
  <details class="quote">
5638
5666
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5639
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-65">65</a></span>
5640
- <span class="normal"><a href="#__codelineno-0-66">66</a></span>
5641
- <span class="normal"><a href="#__codelineno-0-67">67</a></span>
5642
- <span class="normal"><a href="#__codelineno-0-68">68</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="k">class</span> <span class="nc">ORMChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5643
- <a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made with web_request_context context manager&quot;&quot;&quot;</span>
5644
- <a id="__codelineno-0-67" name="__codelineno-0-67"></a>
5645
- <a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_ORM</span>
5667
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-68">68</a></span>
5668
+ <span class="normal"><a href="#__codelineno-0-69">69</a></span>
5669
+ <span class="normal"><a href="#__codelineno-0-70">70</a></span>
5670
+ <span class="normal"><a href="#__codelineno-0-71">71</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="k">class</span> <span class="nc">ORMChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5671
+ <a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made with web_request_context context manager&quot;&quot;&quot;</span>
5672
+ <a id="__codelineno-0-70" name="__codelineno-0-70"></a>
5673
+ <a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_ORM</span>
5646
5674
  </code></pre></div></td></tr></table></div>
5647
5675
  </details>
5648
5676
 
@@ -5686,13 +5714,13 @@ classes are provided for each context.</p>
5686
5714
 
5687
5715
  <details class="quote">
5688
5716
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5689
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-71">71</a></span>
5690
- <span class="normal"><a href="#__codelineno-0-72">72</a></span>
5691
- <span class="normal"><a href="#__codelineno-0-73">73</a></span>
5692
- <span class="normal"><a href="#__codelineno-0-74">74</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="k">class</span> <span class="nc">WebChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5693
- <a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made through the web interface&quot;&quot;&quot;</span>
5694
- <a id="__codelineno-0-73" name="__codelineno-0-73"></a>
5695
- <a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_WEB</span>
5717
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-74">74</a></span>
5718
+ <span class="normal"><a href="#__codelineno-0-75">75</a></span>
5719
+ <span class="normal"><a href="#__codelineno-0-76">76</a></span>
5720
+ <span class="normal"><a href="#__codelineno-0-77">77</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="k">class</span> <span class="nc">WebChangeContext</span><span class="p">(</span><span class="n">ChangeContext</span><span class="p">):</span>
5721
+ <a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;ChangeContext for changes made through the web interface&quot;&quot;&quot;</span>
5722
+ <a id="__codelineno-0-76" name="__codelineno-0-76"></a>
5723
+ <a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_WEB</span>
5696
5724
  </code></pre></div></td></tr></table></div>
5697
5725
  </details>
5698
5726
 
@@ -5736,10 +5764,7 @@ disconnecting them afterward.</p>
5736
5764
 
5737
5765
  <details class="quote">
5738
5766
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5739
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-77">77</a></span>
5740
- <span class="normal"><a href="#__codelineno-0-78">78</a></span>
5741
- <span class="normal"><a href="#__codelineno-0-79">79</a></span>
5742
- <span class="normal"><a href="#__codelineno-0-80">80</a></span>
5767
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-80">80</a></span>
5743
5768
  <span class="normal"><a href="#__codelineno-0-81">81</a></span>
5744
5769
  <span class="normal"><a href="#__codelineno-0-82">82</a></span>
5745
5770
  <span class="normal"><a href="#__codelineno-0-83">83</a></span>
@@ -5753,24 +5778,27 @@ disconnecting them afterward.</p>
5753
5778
  <span class="normal"><a href="#__codelineno-0-91">91</a></span>
5754
5779
  <span class="normal"><a href="#__codelineno-0-92">92</a></span>
5755
5780
  <span class="normal"><a href="#__codelineno-0-93">93</a></span>
5756
- <span class="normal"><a href="#__codelineno-0-94">94</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="nd">@contextmanager</span>
5757
- <a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="k">def</span> <span class="nf">change_logging</span><span class="p">(</span><span class="n">change_context</span><span class="p">):</span>
5758
- <a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5759
- <a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Enable change logging by connecting the appropriate signals to their receivers before code is run, and</span>
5760
- <a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> disconnecting them afterward.</span>
5761
- <a id="__codelineno-0-82" name="__codelineno-0-82"></a>
5762
- <a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> :param change_context: ChangeContext instance</span>
5763
- <a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> &quot;&quot;&quot;</span>
5781
+ <span class="normal"><a href="#__codelineno-0-94">94</a></span>
5782
+ <span class="normal"><a href="#__codelineno-0-95">95</a></span>
5783
+ <span class="normal"><a href="#__codelineno-0-96">96</a></span>
5784
+ <span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="nd">@contextmanager</span>
5785
+ <a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="k">def</span> <span class="nf">change_logging</span><span class="p">(</span><span class="n">change_context</span><span class="p">):</span>
5786
+ <a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5787
+ <a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> Enable change logging by connecting the appropriate signals to their receivers before code is run, and</span>
5788
+ <a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> disconnecting them afterward.</span>
5764
5789
  <a id="__codelineno-0-85" name="__codelineno-0-85"></a>
5765
- <a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="c1"># Set change logging state</span>
5766
- <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">prev_state</span> <span class="o">=</span> <span class="n">change_context_state</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">change_context</span><span class="p">)</span>
5790
+ <a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> :param change_context: ChangeContext instance</span>
5791
+ <a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> &quot;&quot;&quot;</span>
5767
5792
  <a id="__codelineno-0-88" name="__codelineno-0-88"></a>
5768
- <a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">try</span><span class="p">:</span>
5769
- <a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">yield</span>
5770
- <a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">finally</span><span class="p">:</span>
5771
- <a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="c1"># Reset change logging state. This is necessary to avoid recording any errant</span>
5772
- <a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="c1"># changes during test cleanup.</span>
5773
- <a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">change_context_state</span><span class="o">.</span><span class="n">reset</span><span class="p">(</span><span class="n">prev_state</span><span class="p">)</span>
5793
+ <a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="c1"># Set change logging state</span>
5794
+ <a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">prev_state</span> <span class="o">=</span> <span class="n">change_context_state</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">change_context</span><span class="p">)</span>
5795
+ <a id="__codelineno-0-91" name="__codelineno-0-91"></a>
5796
+ <a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">try</span><span class="p">:</span>
5797
+ <a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">yield</span>
5798
+ <a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">finally</span><span class="p">:</span>
5799
+ <a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="c1"># Reset change logging state. This is necessary to avoid recording any errant</span>
5800
+ <a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="c1"># changes during test cleanup.</span>
5801
+ <a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="n">change_context_state</span><span class="o">.</span><span class="n">reset</span><span class="p">(</span><span class="n">prev_state</span><span class="p">)</span>
5774
5802
  </code></pre></div></td></tr></table></div>
5775
5803
  </details>
5776
5804
  </div>
@@ -5783,7 +5811,7 @@ disconnecting them afterward.</p>
5783
5811
 
5784
5812
 
5785
5813
  <h2 id="nautobot.apps.change_logging.web_request_context" class="doc doc-heading">
5786
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">change_logging</span><span class="o">.</span><span class="n">web_request_context</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
5814
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">change_logging</span><span class="o">.</span><span class="n">web_request_context</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_ORM</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
5787
5815
 
5788
5816
  <a href="#nautobot.apps.change_logging.web_request_context" class="headerlink" title="Permanent link">&para;</a></h2>
5789
5817
 
@@ -5810,14 +5838,14 @@ with web_request_context(user, context_detail="manual-fix"):
5810
5838
  </blockquote>
5811
5839
  <p>:param user: User object
5812
5840
  :param context_detail: Optional extra details about the transaction (ex: the plugin name that initiated the change)
5813
- :param change_id: Optional uuid object to uniquely identify the transaction. One will be generated if not supplied</p>
5841
+ :param change_id: Optional uuid object to uniquely identify the transaction. One will be generated if not supplied
5842
+ :param context: Optional string value of the generated change log entries' "change_context" field, defaults to ObjectChangeEventContextChoices.CONTEXT_ORM.
5843
+ Valid choices are in nautobot.extras.choices.ObjectChangeEventContextChoices
5844
+ :param request: Optional web request instance, one will be generated if not supplied</p>
5814
5845
 
5815
5846
  <details class="quote">
5816
5847
  <summary>Source code in <code>nautobot/extras/context_managers.py</code></summary>
5817
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
5818
- <span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
5819
- <span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
5820
- <span class="normal"><a href="#__codelineno-0-100">100</a></span>
5848
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-100">100</a></span>
5821
5849
  <span class="normal"><a href="#__codelineno-0-101">101</a></span>
5822
5850
  <span class="normal"><a href="#__codelineno-0-102">102</a></span>
5823
5851
  <span class="normal"><a href="#__codelineno-0-103">103</a></span>
@@ -5845,38 +5873,87 @@ with web_request_context(user, context_detail="manual-fix"):
5845
5873
  <span class="normal"><a href="#__codelineno-0-125">125</a></span>
5846
5874
  <span class="normal"><a href="#__codelineno-0-126">126</a></span>
5847
5875
  <span class="normal"><a href="#__codelineno-0-127">127</a></span>
5848
- <span class="normal"><a href="#__codelineno-0-128">128</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="nd">@contextmanager</span>
5849
- <a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="k">def</span> <span class="nf">web_request_context</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
5850
- <a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5851
- <a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> Emulate the context of an HTTP request, which provides functions like change logging and webhook processing</span>
5852
- <a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="sd"> in response to data changes. This context manager is for use with low level utility tooling, such as the</span>
5853
- <a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> &#39;nautobot-server nbshell&#39; management command.</span>
5854
- <a id="__codelineno-0-103" name="__codelineno-0-103"></a>
5855
- <a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> By default, when working with the Django ORM, neither change logging nor webhook processing occur</span>
5856
- <a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> unless manually invoked and this context manager handles those functions. A valid User object must be provided.</span>
5857
- <a id="__codelineno-0-106" name="__codelineno-0-106"></a>
5858
- <a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> Example usage:</span>
5876
+ <span class="normal"><a href="#__codelineno-0-128">128</a></span>
5877
+ <span class="normal"><a href="#__codelineno-0-129">129</a></span>
5878
+ <span class="normal"><a href="#__codelineno-0-130">130</a></span>
5879
+ <span class="normal"><a href="#__codelineno-0-131">131</a></span>
5880
+ <span class="normal"><a href="#__codelineno-0-132">132</a></span>
5881
+ <span class="normal"><a href="#__codelineno-0-133">133</a></span>
5882
+ <span class="normal"><a href="#__codelineno-0-134">134</a></span>
5883
+ <span class="normal"><a href="#__codelineno-0-135">135</a></span>
5884
+ <span class="normal"><a href="#__codelineno-0-136">136</a></span>
5885
+ <span class="normal"><a href="#__codelineno-0-137">137</a></span>
5886
+ <span class="normal"><a href="#__codelineno-0-138">138</a></span>
5887
+ <span class="normal"><a href="#__codelineno-0-139">139</a></span>
5888
+ <span class="normal"><a href="#__codelineno-0-140">140</a></span>
5889
+ <span class="normal"><a href="#__codelineno-0-141">141</a></span>
5890
+ <span class="normal"><a href="#__codelineno-0-142">142</a></span>
5891
+ <span class="normal"><a href="#__codelineno-0-143">143</a></span>
5892
+ <span class="normal"><a href="#__codelineno-0-144">144</a></span>
5893
+ <span class="normal"><a href="#__codelineno-0-145">145</a></span>
5894
+ <span class="normal"><a href="#__codelineno-0-146">146</a></span>
5895
+ <span class="normal"><a href="#__codelineno-0-147">147</a></span>
5896
+ <span class="normal"><a href="#__codelineno-0-148">148</a></span>
5897
+ <span class="normal"><a href="#__codelineno-0-149">149</a></span>
5898
+ <span class="normal"><a href="#__codelineno-0-150">150</a></span>
5899
+ <span class="normal"><a href="#__codelineno-0-151">151</a></span>
5900
+ <span class="normal"><a href="#__codelineno-0-152">152</a></span>
5901
+ <span class="normal"><a href="#__codelineno-0-153">153</a></span>
5902
+ <span class="normal"><a href="#__codelineno-0-154">154</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="nd">@contextmanager</span>
5903
+ <a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="k">def</span> <span class="nf">web_request_context</span><span class="p">(</span>
5904
+ <a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">user</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_ORM</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="kc">None</span>
5905
+ <a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="p">):</span>
5906
+ <a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5907
+ <a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> Emulate the context of an HTTP request, which provides functions like change logging and webhook processing</span>
5908
+ <a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> in response to data changes. This context manager is for use with low level utility tooling, such as the</span>
5909
+ <a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> &#39;nautobot-server nbshell&#39; management command.</span>
5859
5910
  <a id="__codelineno-0-108" name="__codelineno-0-108"></a>
5860
- <a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> &gt;&gt;&gt; from nautobot.extras.context_managers import web_request_context</span>
5861
- <a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> &gt;&gt;&gt; user = User.objects.get(username=&quot;admin&quot;)</span>
5862
- <a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> &gt;&gt;&gt; with web_request_context(user, context_detail=&quot;manual-fix&quot;):</span>
5863
- <a id="__codelineno-0-112" name="__codelineno-0-112"></a><span class="sd"> ... lt = Location.objects.get(name=&quot;Root&quot;)</span>
5864
- <a id="__codelineno-0-113" name="__codelineno-0-113"></a><span class="sd"> ... lax = Location(name=&quot;LAX&quot;, location_type=lt)</span>
5865
- <a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> ... lax.validated_save()</span>
5866
- <a id="__codelineno-0-115" name="__codelineno-0-115"></a>
5867
- <a id="__codelineno-0-116" name="__codelineno-0-116"></a><span class="sd"> :param user: User object</span>
5868
- <a id="__codelineno-0-117" name="__codelineno-0-117"></a><span class="sd"> :param context_detail: Optional extra details about the transaction (ex: the plugin name that initiated the change)</span>
5869
- <a id="__codelineno-0-118" name="__codelineno-0-118"></a><span class="sd"> :param change_id: Optional uuid object to uniquely identify the transaction. One will be generated if not supplied</span>
5870
- <a id="__codelineno-0-119" name="__codelineno-0-119"></a><span class="sd"> &quot;&quot;&quot;</span>
5911
+ <a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> By default, when working with the Django ORM, neither change logging nor webhook processing occur</span>
5912
+ <a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> unless manually invoked and this context manager handles those functions. A valid User object must be provided.</span>
5913
+ <a id="__codelineno-0-111" name="__codelineno-0-111"></a>
5914
+ <a id="__codelineno-0-112" name="__codelineno-0-112"></a><span class="sd"> Example usage:</span>
5915
+ <a id="__codelineno-0-113" name="__codelineno-0-113"></a>
5916
+ <a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> &gt;&gt;&gt; from nautobot.extras.context_managers import web_request_context</span>
5917
+ <a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="sd"> &gt;&gt;&gt; user = User.objects.get(username=&quot;admin&quot;)</span>
5918
+ <a id="__codelineno-0-116" name="__codelineno-0-116"></a><span class="sd"> &gt;&gt;&gt; with web_request_context(user, context_detail=&quot;manual-fix&quot;):</span>
5919
+ <a id="__codelineno-0-117" name="__codelineno-0-117"></a><span class="sd"> ... lt = Location.objects.get(name=&quot;Root&quot;)</span>
5920
+ <a id="__codelineno-0-118" name="__codelineno-0-118"></a><span class="sd"> ... lax = Location(name=&quot;LAX&quot;, location_type=lt)</span>
5921
+ <a id="__codelineno-0-119" name="__codelineno-0-119"></a><span class="sd"> ... lax.validated_save()</span>
5871
5922
  <a id="__codelineno-0-120" name="__codelineno-0-120"></a>
5872
- <a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">get_user_model</span><span class="p">()):</span>
5873
- <a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;The user object must be an instance of nautobot.users.models.User&quot;</span><span class="p">)</span>
5874
- <a id="__codelineno-0-123" name="__codelineno-0-123"></a>
5875
- <a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">request</span> <span class="o">=</span> <span class="n">RequestFactory</span><span class="p">()</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="n">SERVER_NAME</span><span class="o">=</span><span class="s2">&quot;web_request_context&quot;</span><span class="p">)</span>
5876
- <a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">request</span><span class="o">.</span><span class="n">user</span> <span class="o">=</span> <span class="n">user</span>
5877
- <a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">change_context</span> <span class="o">=</span> <span class="n">ORMChangeContext</span><span class="p">(</span><span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="n">context_detail</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="n">change_id</span><span class="p">)</span>
5878
- <a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="k">with</span> <span class="n">change_logging</span><span class="p">(</span><span class="n">change_context</span><span class="p">):</span>
5879
- <a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="k">yield</span> <span class="n">request</span>
5923
+ <a id="__codelineno-0-121" name="__codelineno-0-121"></a><span class="sd"> :param user: User object</span>
5924
+ <a id="__codelineno-0-122" name="__codelineno-0-122"></a><span class="sd"> :param context_detail: Optional extra details about the transaction (ex: the plugin name that initiated the change)</span>
5925
+ <a id="__codelineno-0-123" name="__codelineno-0-123"></a><span class="sd"> :param change_id: Optional uuid object to uniquely identify the transaction. One will be generated if not supplied</span>
5926
+ <a id="__codelineno-0-124" name="__codelineno-0-124"></a><span class="sd"> :param context: Optional string value of the generated change log entries&#39; &quot;change_context&quot; field, defaults to ObjectChangeEventContextChoices.CONTEXT_ORM.</span>
5927
+ <a id="__codelineno-0-125" name="__codelineno-0-125"></a><span class="sd"> Valid choices are in nautobot.extras.choices.ObjectChangeEventContextChoices</span>
5928
+ <a id="__codelineno-0-126" name="__codelineno-0-126"></a><span class="sd"> :param request: Optional web request instance, one will be generated if not supplied</span>
5929
+ <a id="__codelineno-0-127" name="__codelineno-0-127"></a><span class="sd"> &quot;&quot;&quot;</span>
5930
+ <a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="kn">from</span> <span class="nn">nautobot.extras.jobs</span> <span class="kn">import</span> <span class="n">enqueue_job_hooks</span> <span class="c1"># prevent circular import</span>
5931
+ <a id="__codelineno-0-129" name="__codelineno-0-129"></a>
5932
+ <a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">valid_contexts</span> <span class="o">=</span> <span class="p">{</span>
5933
+ <a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_JOB</span><span class="p">:</span> <span class="n">JobChangeContext</span><span class="p">,</span>
5934
+ <a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_JOB_HOOK</span><span class="p">:</span> <span class="n">JobHookChangeContext</span><span class="p">,</span>
5935
+ <a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_ORM</span><span class="p">:</span> <span class="n">ORMChangeContext</span><span class="p">,</span>
5936
+ <a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">ObjectChangeEventContextChoices</span><span class="o">.</span><span class="n">CONTEXT_WEB</span><span class="p">:</span> <span class="n">WebChangeContext</span><span class="p">,</span>
5937
+ <a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="p">}</span>
5938
+ <a id="__codelineno-0-136" name="__codelineno-0-136"></a>
5939
+ <a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="k">if</span> <span class="n">context</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">valid_contexts</span><span class="p">:</span>
5940
+ <a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">context</span><span class="si">}</span><span class="s2"> is not a valid context&quot;</span><span class="p">)</span>
5941
+ <a id="__codelineno-0-139" name="__codelineno-0-139"></a>
5942
+ <a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="p">(</span><span class="n">get_user_model</span><span class="p">(),</span> <span class="n">AnonymousUser</span><span class="p">)):</span>
5943
+ <a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2"> is not a valid user object&quot;</span><span class="p">)</span>
5944
+ <a id="__codelineno-0-142" name="__codelineno-0-142"></a>
5945
+ <a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="k">if</span> <span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
5946
+ <a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="n">request</span> <span class="o">=</span> <span class="n">RequestFactory</span><span class="p">()</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="n">SERVER_NAME</span><span class="o">=</span><span class="s2">&quot;web_request_context&quot;</span><span class="p">)</span>
5947
+ <a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="n">request</span><span class="o">.</span><span class="n">user</span> <span class="o">=</span> <span class="n">user</span>
5948
+ <a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="n">change_context</span> <span class="o">=</span> <span class="n">valid_contexts</span><span class="p">[</span><span class="n">context</span><span class="p">](</span><span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span> <span class="n">context_detail</span><span class="o">=</span><span class="n">context_detail</span><span class="p">,</span> <span class="n">change_id</span><span class="o">=</span><span class="n">change_id</span><span class="p">)</span>
5949
+ <a id="__codelineno-0-147" name="__codelineno-0-147"></a> <span class="k">try</span><span class="p">:</span>
5950
+ <a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="k">with</span> <span class="n">change_logging</span><span class="p">(</span><span class="n">change_context</span><span class="p">):</span>
5951
+ <a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="k">yield</span> <span class="n">request</span>
5952
+ <a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="k">finally</span><span class="p">:</span>
5953
+ <a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="c1"># enqueue jobhooks and webhooks, use change_context.change_id in case change_id was not supplied</span>
5954
+ <a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="k">for</span> <span class="n">object_change</span> <span class="ow">in</span> <span class="n">ObjectChange</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">request_id</span><span class="o">=</span><span class="n">change_context</span><span class="o">.</span><span class="n">change_id</span><span class="p">)</span><span class="o">.</span><span class="n">iterator</span><span class="p">():</span>
5955
+ <a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="n">enqueue_job_hooks</span><span class="p">(</span><span class="n">object_change</span><span class="p">)</span>
5956
+ <a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="n">enqueue_webhooks</span><span class="p">(</span><span class="n">object_change</span><span class="p">)</span>
5880
5957
  </code></pre></div></td></tr></table></div>
5881
5958
  </details>
5882
5959
  </div>