nautobot 2.3.15b1__py3-none-any.whl → 2.4.0__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 (785) hide show
  1. nautobot/__init__.py +15 -0
  2. nautobot/apps/__init__.py +1 -1
  3. nautobot/apps/api.py +8 -10
  4. nautobot/apps/change_logging.py +2 -2
  5. nautobot/apps/choices.py +4 -4
  6. nautobot/apps/config.py +32 -3
  7. nautobot/apps/events.py +19 -0
  8. nautobot/apps/exceptions.py +0 -2
  9. nautobot/apps/factory.py +2 -2
  10. nautobot/apps/filters.py +1 -1
  11. nautobot/apps/forms.py +20 -20
  12. nautobot/apps/graphql.py +2 -2
  13. nautobot/apps/jobs.py +8 -8
  14. nautobot/apps/models.py +19 -19
  15. nautobot/apps/tables.py +1 -1
  16. nautobot/apps/testing.py +10 -10
  17. nautobot/apps/ui.py +44 -9
  18. nautobot/apps/utils.py +7 -15
  19. nautobot/apps/views.py +8 -6
  20. nautobot/circuits/api/serializers.py +1 -0
  21. nautobot/circuits/api/views.py +4 -8
  22. nautobot/circuits/navigation.py +0 -57
  23. nautobot/circuits/templates/circuits/circuit_create.html +1 -7
  24. nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -71
  25. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -64
  26. nautobot/circuits/templates/circuits/inc/circuit_termination_cable_fragment.html +40 -0
  27. nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +26 -0
  28. nautobot/circuits/templates/circuits/provider_retrieve.html +0 -76
  29. nautobot/circuits/tests/integration/test_relationships.py +33 -24
  30. nautobot/circuits/tests/test_filters.py +4 -8
  31. nautobot/circuits/views.py +143 -26
  32. nautobot/cloud/api/views.py +6 -10
  33. nautobot/cloud/factory.py +4 -1
  34. nautobot/cloud/models.py +1 -1
  35. nautobot/cloud/tests/test_filters.py +5 -4
  36. nautobot/cloud/views.py +0 -16
  37. nautobot/core/api/constants.py +11 -0
  38. nautobot/core/api/fields.py +5 -5
  39. nautobot/core/api/filter_backends.py +3 -9
  40. nautobot/core/api/metadata.py +28 -256
  41. nautobot/core/api/pagination.py +3 -2
  42. nautobot/core/api/renderers.py +3 -0
  43. nautobot/core/api/schema.py +13 -2
  44. nautobot/core/api/serializers.py +54 -268
  45. nautobot/core/api/urls.py +3 -4
  46. nautobot/core/api/utils.py +0 -62
  47. nautobot/core/api/views.py +102 -159
  48. nautobot/core/apps/__init__.py +22 -575
  49. nautobot/core/celery/__init__.py +13 -0
  50. nautobot/core/celery/schedulers.py +48 -3
  51. nautobot/core/choices.py +2 -2
  52. nautobot/core/cli/__init__.py +8 -0
  53. nautobot/core/constants.py +7 -0
  54. nautobot/core/events/__init__.py +116 -0
  55. nautobot/core/events/base.py +27 -0
  56. nautobot/core/events/exceptions.py +10 -0
  57. nautobot/core/events/redis_broker.py +48 -0
  58. nautobot/core/events/syslog_broker.py +19 -0
  59. nautobot/core/exceptions.py +0 -6
  60. nautobot/core/filters.py +19 -16
  61. nautobot/core/forms/__init__.py +19 -19
  62. nautobot/core/forms/fields.py +62 -14
  63. nautobot/core/forms/forms.py +33 -2
  64. nautobot/core/forms/utils.py +2 -1
  65. nautobot/core/graphql/schema.py +3 -1
  66. nautobot/core/graphql/types.py +1 -1
  67. nautobot/core/jobs/__init__.py +28 -7
  68. nautobot/core/jobs/bulk_actions.py +248 -0
  69. nautobot/core/jobs/cleanup.py +2 -2
  70. nautobot/core/jobs/groups.py +1 -1
  71. nautobot/core/management/commands/generate_test_data.py +21 -0
  72. nautobot/core/management/commands/validate_models.py +1 -1
  73. nautobot/core/middleware.py +16 -0
  74. nautobot/core/models/__init__.py +1 -1
  75. nautobot/core/models/fields.py +11 -7
  76. nautobot/core/models/query_functions.py +2 -2
  77. nautobot/core/models/tree_queries.py +2 -2
  78. nautobot/core/settings.py +71 -4
  79. nautobot/core/settings.yaml +107 -0
  80. nautobot/core/tables.py +15 -51
  81. nautobot/core/tasks.py +1 -1
  82. nautobot/core/templates/about.html +67 -0
  83. nautobot/core/templates/components/button/default.html +7 -0
  84. nautobot/core/templates/components/button/dropdown.html +20 -0
  85. nautobot/core/templates/components/layout/one_over_two.html +19 -0
  86. nautobot/core/templates/components/layout/two_over_one.html +19 -0
  87. nautobot/core/templates/components/panel/body_content_data_table.html +27 -0
  88. nautobot/core/templates/components/panel/body_content_objects_table.html +4 -0
  89. nautobot/core/templates/components/panel/body_content_tags.html +6 -0
  90. nautobot/core/templates/components/panel/body_content_text.html +12 -0
  91. nautobot/core/templates/components/panel/body_wrapper_generic.html +3 -0
  92. nautobot/core/templates/components/panel/body_wrapper_key_value_table.html +3 -0
  93. nautobot/core/templates/components/panel/body_wrapper_table.html +3 -0
  94. nautobot/core/templates/components/panel/footer_contacts_table.html +20 -0
  95. nautobot/core/templates/components/panel/footer_content_table.html +14 -0
  96. nautobot/core/templates/components/panel/grouping_toggle.html +14 -0
  97. nautobot/core/templates/components/panel/header_extra_content_table.html +3 -0
  98. nautobot/core/templates/components/panel/panel.html +16 -0
  99. nautobot/core/templates/components/panel/stats_panel_body.html +8 -0
  100. nautobot/core/templates/components/tab/content_wrapper.html +3 -0
  101. nautobot/core/templates/components/tab/label_wrapper.html +5 -0
  102. nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +3 -0
  103. nautobot/core/templates/generic/object_retrieve.html +28 -17
  104. nautobot/core/templates/inc/computed_fields/panel_data.html +4 -7
  105. nautobot/core/templates/inc/custom_fields/panel.html +2 -2
  106. nautobot/core/templates/inc/custom_fields/panel_data.html +4 -7
  107. nautobot/core/templates/inc/footer.html +1 -0
  108. nautobot/core/templates/inc/media.html +3 -0
  109. nautobot/core/templates/inc/nav_menu.html +2 -1
  110. nautobot/core/templates/inc/relationships_panel.html +1 -1
  111. nautobot/core/templates/inc/tenancy_form_panel.html +9 -0
  112. nautobot/core/templates/inc/tenant_table_row.html +11 -0
  113. nautobot/core/templates/nautobot_config.py.j2 +16 -0
  114. nautobot/core/templates/panel_table.html +12 -0
  115. nautobot/core/templates/utilities/render_jinja2.html +117 -0
  116. nautobot/core/templates/utilities/templatetags/tag.html +1 -1
  117. nautobot/core/templates/utilities/theme_preview.html +7 -0
  118. nautobot/core/templatetags/helpers.py +104 -6
  119. nautobot/core/templatetags/ui_framework.py +40 -0
  120. nautobot/core/testing/__init__.py +8 -8
  121. nautobot/core/testing/api.py +187 -137
  122. nautobot/core/testing/context.py +18 -0
  123. nautobot/core/testing/filters.py +44 -34
  124. nautobot/core/testing/forms.py +2 -0
  125. nautobot/core/testing/views.py +68 -146
  126. nautobot/core/tests/integration/test_app_home.py +0 -1
  127. nautobot/core/tests/integration/test_app_navbar.py +0 -1
  128. nautobot/core/tests/integration/test_filters.py +0 -2
  129. nautobot/core/tests/integration/test_home.py +0 -1
  130. nautobot/core/tests/integration/test_navbar.py +0 -1
  131. nautobot/core/tests/integration/test_view_authentication.py +2 -1
  132. nautobot/core/tests/nautobot_config.py +198 -0
  133. nautobot/core/tests/runner.py +3 -3
  134. nautobot/core/tests/test_api.py +154 -176
  135. nautobot/core/tests/test_events.py +214 -0
  136. nautobot/core/tests/test_forms.py +1 -0
  137. nautobot/core/tests/test_jinja_filters.py +1 -0
  138. nautobot/core/tests/test_jobs.py +387 -14
  139. nautobot/core/tests/test_navigations.py +7 -241
  140. nautobot/core/tests/test_settings_schema.py +7 -0
  141. nautobot/core/tests/test_tables.py +100 -0
  142. nautobot/core/tests/test_templatetags_helpers.py +16 -0
  143. nautobot/core/tests/test_ui.py +150 -0
  144. nautobot/core/tests/test_utils.py +55 -18
  145. nautobot/core/tests/test_views.py +153 -5
  146. nautobot/core/ui/__init__.py +0 -0
  147. nautobot/core/ui/base.py +11 -0
  148. nautobot/core/ui/choices.py +44 -0
  149. nautobot/core/ui/homepage.py +167 -0
  150. nautobot/core/ui/nav.py +280 -0
  151. nautobot/core/ui/object_detail.py +1855 -0
  152. nautobot/core/ui/utils.py +36 -0
  153. nautobot/core/urls.py +15 -0
  154. nautobot/core/utils/config.py +30 -3
  155. nautobot/core/utils/lookup.py +12 -2
  156. nautobot/core/utils/querysets.py +64 -0
  157. nautobot/core/utils/requests.py +24 -9
  158. nautobot/core/views/__init__.py +48 -1
  159. nautobot/core/views/generic.py +82 -177
  160. nautobot/core/views/mixins.py +98 -38
  161. nautobot/core/views/paginator.py +8 -5
  162. nautobot/core/views/renderers.py +9 -9
  163. nautobot/core/views/utils.py +11 -0
  164. nautobot/core/wsgi.py +3 -3
  165. nautobot/dcim/api/serializers.py +82 -189
  166. nautobot/dcim/api/urls.py +5 -0
  167. nautobot/dcim/api/views.py +57 -110
  168. nautobot/dcim/apps.py +1 -0
  169. nautobot/dcim/choices.py +28 -0
  170. nautobot/dcim/factory.py +58 -0
  171. nautobot/dcim/filters/__init__.py +204 -2
  172. nautobot/dcim/forms.py +221 -9
  173. nautobot/dcim/graphql/types.py +2 -2
  174. nautobot/dcim/migrations/0063_interfacevdcassignment_virtualdevicecontext_and_more.py +165 -0
  175. nautobot/dcim/migrations/0064_virtualdevicecontext_status_data_migration.py +28 -0
  176. nautobot/dcim/migrations/0065_controller_capabilities_and_more.py +29 -0
  177. nautobot/dcim/migrations/0066_controllermanageddevicegroup_radio_profiles_and_more.py +33 -0
  178. nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +25 -0
  179. nautobot/dcim/models/__init__.py +5 -1
  180. nautobot/dcim/models/device_component_templates.py +2 -2
  181. nautobot/dcim/models/device_components.py +22 -20
  182. nautobot/dcim/models/devices.py +181 -3
  183. nautobot/dcim/models/locations.py +3 -3
  184. nautobot/dcim/models/power.py +6 -5
  185. nautobot/dcim/models/racks.py +6 -6
  186. nautobot/dcim/navigation.py +25 -224
  187. nautobot/dcim/signals.py +44 -0
  188. nautobot/dcim/tables/__init__.py +5 -3
  189. nautobot/dcim/tables/devices.py +103 -7
  190. nautobot/dcim/tables/devicetypes.py +2 -2
  191. nautobot/dcim/tables/racks.py +1 -1
  192. nautobot/dcim/templates/dcim/controller/base.html +10 -0
  193. nautobot/dcim/templates/dcim/controller_create.html +2 -7
  194. nautobot/dcim/templates/dcim/controller_retrieve.html +6 -10
  195. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +25 -0
  196. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +68 -0
  197. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +51 -0
  198. nautobot/dcim/templates/dcim/device/base.html +6 -42
  199. nautobot/dcim/templates/dcim/device/wireless.html +73 -0
  200. nautobot/dcim/templates/dcim/device.html +4 -10
  201. nautobot/dcim/templates/dcim/device_edit.html +36 -37
  202. nautobot/dcim/templates/dcim/interface.html +1 -0
  203. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  204. nautobot/dcim/templates/dcim/location.html +1 -9
  205. nautobot/dcim/templates/dcim/location_edit.html +1 -7
  206. nautobot/dcim/templates/dcim/locationtype.html +0 -107
  207. nautobot/dcim/templates/dcim/locationtype_retrieve.html +8 -0
  208. nautobot/dcim/templates/dcim/rack.html +1 -9
  209. nautobot/dcim/templates/dcim/rack_edit.html +1 -7
  210. nautobot/dcim/templates/dcim/rackreservation.html +1 -9
  211. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +68 -0
  212. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +28 -0
  213. nautobot/dcim/tests/integration/test_controller.py +62 -0
  214. nautobot/dcim/tests/integration/test_controller_managed_device_group.py +71 -0
  215. nautobot/dcim/tests/test_api.py +188 -64
  216. nautobot/dcim/tests/test_filters.py +172 -76
  217. nautobot/dcim/tests/test_graphql.py +52 -0
  218. nautobot/dcim/tests/test_jobs.py +118 -0
  219. nautobot/dcim/tests/test_models.py +159 -5
  220. nautobot/dcim/tests/test_signals.py +1 -0
  221. nautobot/dcim/tests/test_views.py +118 -88
  222. nautobot/dcim/urls.py +72 -27
  223. nautobot/dcim/utils.py +2 -2
  224. nautobot/dcim/views.py +357 -62
  225. nautobot/extras/api/customfields.py +2 -2
  226. nautobot/extras/api/serializers.py +111 -87
  227. nautobot/extras/api/urls.py +4 -0
  228. nautobot/extras/api/views.py +93 -35
  229. nautobot/extras/choices.py +13 -0
  230. nautobot/extras/constants.py +2 -1
  231. nautobot/extras/context_managers.py +23 -6
  232. nautobot/extras/datasources/git.py +4 -1
  233. nautobot/extras/factory.py +27 -0
  234. nautobot/extras/filters/__init__.py +66 -5
  235. nautobot/extras/forms/base.py +2 -2
  236. nautobot/extras/forms/forms.py +262 -59
  237. nautobot/extras/forms/mixins.py +3 -3
  238. nautobot/extras/graphql/types.py +25 -1
  239. nautobot/extras/health_checks.py +1 -2
  240. nautobot/extras/jobs.py +114 -20
  241. nautobot/extras/management/__init__.py +1 -0
  242. nautobot/extras/management/commands/runjob.py +7 -79
  243. nautobot/extras/management/commands/runjob_with_job_result.py +46 -0
  244. nautobot/extras/management/utils.py +87 -0
  245. nautobot/extras/managers.py +3 -1
  246. nautobot/extras/migrations/0018_joblog_data_migration.py +7 -9
  247. nautobot/extras/migrations/0117_create_job_queue_model.py +129 -0
  248. nautobot/extras/migrations/0118_task_queue_to_job_queue_migration.py +78 -0
  249. nautobot/extras/migrations/0119_remove_task_queues_from_job_and_queue_from_scheduled_job.py +28 -0
  250. nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +22 -0
  251. nautobot/extras/migrations/0121_alter_team_contacts.py +17 -0
  252. nautobot/extras/models/__init__.py +5 -1
  253. nautobot/extras/models/change_logging.py +7 -3
  254. nautobot/extras/models/contacts.py +1 -1
  255. nautobot/extras/models/customfields.py +12 -11
  256. nautobot/extras/models/groups.py +11 -9
  257. nautobot/extras/models/jobs.py +237 -37
  258. nautobot/extras/models/models.py +2 -2
  259. nautobot/extras/models/relationships.py +69 -1
  260. nautobot/extras/models/secrets.py +5 -0
  261. nautobot/extras/navigation.py +20 -262
  262. nautobot/extras/plugins/__init__.py +54 -19
  263. nautobot/extras/plugins/marketplace_manifest.yml +455 -0
  264. nautobot/extras/plugins/tables.py +16 -14
  265. nautobot/extras/plugins/urls.py +1 -0
  266. nautobot/extras/plugins/views.py +104 -61
  267. nautobot/extras/registry.py +1 -1
  268. nautobot/extras/secrets/__init__.py +2 -2
  269. nautobot/extras/signals.py +39 -1
  270. nautobot/extras/tables.py +42 -6
  271. nautobot/extras/templates/extras/dynamicgroup.html +1 -9
  272. nautobot/extras/templates/extras/externalintegration_retrieve.html +0 -47
  273. nautobot/extras/templates/extras/inc/tags_panel.html +1 -5
  274. nautobot/extras/templates/extras/job_bulk_edit.html +2 -1
  275. nautobot/extras/templates/extras/job_detail.html +52 -6
  276. nautobot/extras/templates/extras/job_edit.html +6 -2
  277. nautobot/extras/templates/extras/job_list.html +2 -7
  278. nautobot/extras/templates/extras/jobqueue_retrieve.html +36 -0
  279. nautobot/extras/templates/extras/marketplace.html +296 -0
  280. nautobot/extras/templates/extras/plugin_detail.html +32 -15
  281. nautobot/extras/templates/extras/plugins_list.html +35 -1
  282. nautobot/extras/templates/extras/plugins_tiles.html +90 -0
  283. nautobot/extras/templates/extras/role_retrieve.html +16 -0
  284. nautobot/extras/templates/extras/secret.html +0 -65
  285. nautobot/extras/templates/extras/secret_check.js +16 -0
  286. nautobot/extras/templates/extras/secret_create.html +114 -0
  287. nautobot/extras/templates/extras/secret_edit.html +1 -114
  288. nautobot/extras/templates/extras/secretsgroup_edit.html +1 -1
  289. nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +2 -0
  290. nautobot/extras/templatetags/job_buttons.py +5 -4
  291. nautobot/extras/templatetags/plugins.py +69 -6
  292. nautobot/extras/test_jobs/api_test_job.py +1 -1
  293. nautobot/extras/test_jobs/atomic_transaction.py +2 -2
  294. nautobot/extras/test_jobs/dry_run.py +1 -1
  295. nautobot/extras/test_jobs/fail.py +5 -5
  296. nautobot/extras/test_jobs/file_output.py +1 -1
  297. nautobot/extras/test_jobs/file_upload_fail.py +1 -1
  298. nautobot/extras/test_jobs/file_upload_pass.py +1 -1
  299. nautobot/extras/test_jobs/ipaddress_vars.py +3 -1
  300. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
  301. nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
  302. nautobot/extras/test_jobs/log_redaction.py +1 -1
  303. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
  304. nautobot/extras/test_jobs/modify_db.py +1 -1
  305. nautobot/extras/test_jobs/object_var_optional.py +1 -1
  306. nautobot/extras/test_jobs/object_var_required.py +1 -1
  307. nautobot/extras/test_jobs/object_vars.py +1 -1
  308. nautobot/extras/test_jobs/pass.py +3 -3
  309. nautobot/extras/test_jobs/profiling.py +1 -1
  310. nautobot/extras/test_jobs/relative_import.py +3 -3
  311. nautobot/extras/test_jobs/singleton.py +16 -0
  312. nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
  313. nautobot/extras/test_jobs/task_queues.py +1 -1
  314. nautobot/extras/tests/integration/test_plugin_banner.py +0 -2
  315. nautobot/extras/tests/test_api.py +157 -55
  316. nautobot/extras/tests/test_context_managers.py +4 -1
  317. nautobot/extras/tests/test_customfields.py +1 -1
  318. nautobot/extras/tests/test_datasources.py +2 -1
  319. nautobot/extras/tests/test_dynamicgroups.py +1 -1
  320. nautobot/extras/tests/test_filters.py +219 -535
  321. nautobot/extras/tests/test_forms.py +20 -1
  322. nautobot/extras/tests/test_job_variables.py +73 -152
  323. nautobot/extras/tests/test_jobs.py +192 -62
  324. nautobot/extras/tests/test_models.py +71 -16
  325. nautobot/extras/tests/test_plugins.py +62 -9
  326. nautobot/extras/tests/test_relationships.py +124 -10
  327. nautobot/extras/tests/test_utils.py +23 -2
  328. nautobot/extras/tests/test_views.py +162 -161
  329. nautobot/extras/tests/test_webhooks.py +2 -1
  330. nautobot/extras/urls.py +2 -20
  331. nautobot/extras/utils.py +119 -4
  332. nautobot/extras/views.py +188 -141
  333. nautobot/extras/webhooks.py +5 -2
  334. nautobot/ipam/api/fields.py +3 -3
  335. nautobot/ipam/api/serializers.py +44 -137
  336. nautobot/ipam/api/views.py +68 -110
  337. nautobot/ipam/factory.py +1 -1
  338. nautobot/ipam/filters.py +3 -2
  339. nautobot/ipam/models.py +10 -12
  340. nautobot/ipam/navigation.py +0 -90
  341. nautobot/ipam/querysets.py +2 -2
  342. nautobot/ipam/tables.py +3 -1
  343. nautobot/ipam/templates/ipam/ipaddress.html +1 -9
  344. nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +1 -7
  345. nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -7
  346. nautobot/ipam/templates/ipam/prefix.html +1 -9
  347. nautobot/ipam/templates/ipam/prefix_edit.html +1 -7
  348. nautobot/ipam/templates/ipam/routetarget.html +0 -28
  349. nautobot/ipam/templates/ipam/vlan.html +1 -9
  350. nautobot/ipam/templates/ipam/vlan_edit.html +1 -7
  351. nautobot/ipam/templates/ipam/vrf.html +0 -47
  352. nautobot/ipam/templates/ipam/vrf_edit.html +1 -7
  353. nautobot/ipam/tests/test_api.py +19 -6
  354. nautobot/ipam/tests/test_filters.py +39 -119
  355. nautobot/ipam/tests/test_forms.py +49 -47
  356. nautobot/ipam/tests/test_migrations.py +30 -30
  357. nautobot/ipam/tests/test_models.py +56 -36
  358. nautobot/ipam/tests/test_querysets.py +14 -0
  359. nautobot/ipam/tests/test_views.py +3 -0
  360. nautobot/ipam/urls.py +3 -69
  361. nautobot/ipam/utils/__init__.py +16 -10
  362. nautobot/ipam/views.py +91 -162
  363. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
  364. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
  365. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +40 -2
  366. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
  367. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
  368. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
  369. nautobot/project-static/css/base.css +38 -3
  370. nautobot/project-static/docs/404.html +463 -19
  371. nautobot/project-static/docs/apps/index.html +463 -19
  372. nautobot/project-static/docs/apps/nautobot-apps.html +464 -21
  373. nautobot/project-static/docs/assets/_mkdocstrings.css +25 -1
  374. nautobot/project-static/docs/assets/extra.css +5 -1
  375. nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js → bundle.88dd0f4e.min.js} +2 -2
  376. nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js.map → bundle.88dd0f4e.min.js.map} +2 -2
  377. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +479 -25
  378. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +476 -22
  379. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +792 -291
  380. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +507 -33
  381. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +512 -36
  382. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +473 -22
  383. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +469 -20
  384. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +499 -35
  385. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9883 -0
  386. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +525 -77
  387. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +548 -53
  388. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +672 -96
  389. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1033 -180
  390. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +526 -51
  391. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +876 -190
  392. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +957 -237
  393. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +477 -23
  394. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +488 -30
  395. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +663 -101
  396. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +949 -481
  397. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +6427 -1236
  398. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +476 -22
  399. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +879 -346
  400. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +830 -173
  401. nautobot/project-static/docs/development/apps/api/configuration-view.html +463 -19
  402. nautobot/project-static/docs/development/apps/api/database-backend-config.html +463 -19
  403. nautobot/project-static/docs/development/apps/api/models/django-admin.html +463 -19
  404. nautobot/project-static/docs/development/apps/api/models/global-search.html +463 -19
  405. nautobot/project-static/docs/development/apps/api/models/graphql.html +463 -19
  406. nautobot/project-static/docs/development/apps/api/models/index.html +463 -19
  407. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +463 -19
  408. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +463 -19
  409. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +463 -19
  410. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +463 -19
  411. nautobot/project-static/docs/development/apps/api/platform-features/index.html +463 -19
  412. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +463 -19
  413. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +463 -19
  414. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +463 -19
  415. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +463 -19
  416. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +463 -19
  417. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +463 -19
  418. nautobot/project-static/docs/development/apps/api/prometheus.html +463 -19
  419. nautobot/project-static/docs/development/apps/api/setup.html +467 -155
  420. nautobot/project-static/docs/development/apps/api/testing.html +463 -19
  421. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +463 -19
  422. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +463 -19
  423. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +463 -19
  424. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +463 -19
  425. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +743 -130
  426. nautobot/project-static/docs/development/apps/api/views/base-template.html +463 -19
  427. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +463 -19
  428. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +463 -19
  429. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +463 -19
  430. nautobot/project-static/docs/development/apps/api/views/index.html +465 -20
  431. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +467 -19
  432. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +493 -19
  433. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +463 -19
  434. nautobot/project-static/docs/development/apps/api/views/notes.html +463 -19
  435. nautobot/project-static/docs/development/apps/api/views/rest-api.html +469 -21
  436. nautobot/project-static/docs/development/apps/api/views/urls.html +463 -19
  437. nautobot/project-static/docs/development/apps/index.html +463 -19
  438. nautobot/project-static/docs/development/apps/migration/code-updates.html +464 -52
  439. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +464 -20
  440. nautobot/project-static/docs/development/apps/migration/from-v1.html +463 -19
  441. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +463 -19
  442. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +463 -19
  443. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +463 -19
  444. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +466 -22
  445. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9261 -0
  446. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +9375 -0
  447. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +9671 -0
  448. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +9559 -0
  449. nautobot/project-static/docs/development/apps/porting-from-netbox.html +466 -22
  450. nautobot/project-static/docs/development/core/application-registry.html +463 -19
  451. nautobot/project-static/docs/development/core/best-practices.html +463 -19
  452. nautobot/project-static/docs/development/core/bootstrap-ui.html +463 -19
  453. nautobot/project-static/docs/development/core/caching.html +463 -19
  454. nautobot/project-static/docs/development/core/controllers.html +465 -19
  455. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +491 -90
  456. nautobot/project-static/docs/development/core/generic-views.html +463 -19
  457. nautobot/project-static/docs/development/core/getting-started.html +541 -129
  458. nautobot/project-static/docs/development/core/homepage.html +474 -30
  459. nautobot/project-static/docs/development/core/index.html +463 -19
  460. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9754 -0
  461. nautobot/project-static/docs/development/core/model-checklist.html +473 -27
  462. nautobot/project-static/docs/development/core/model-features.html +463 -19
  463. nautobot/project-static/docs/development/core/natural-keys.html +463 -19
  464. nautobot/project-static/docs/development/core/navigation-menu.html +480 -26
  465. nautobot/project-static/docs/development/core/release-checklist.html +480 -48
  466. nautobot/project-static/docs/development/core/role-internals.html +463 -19
  467. nautobot/project-static/docs/development/core/settings.html +463 -19
  468. nautobot/project-static/docs/development/core/style-guide.html +466 -22
  469. nautobot/project-static/docs/development/core/templates.html +473 -22
  470. nautobot/project-static/docs/development/core/testing.html +463 -19
  471. nautobot/project-static/docs/development/core/ui-component-framework.html +11116 -0
  472. nautobot/project-static/docs/development/core/user-preferences.html +466 -22
  473. nautobot/project-static/docs/development/index.html +463 -19
  474. nautobot/project-static/docs/development/jobs/index.html +501 -21
  475. nautobot/project-static/docs/development/jobs/migration/from-v1.html +463 -19
  476. nautobot/project-static/docs/index.html +471 -38
  477. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
  478. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
  479. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
  480. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
  481. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
  482. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
  483. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
  484. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
  485. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
  486. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
  487. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
  488. nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
  489. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
  490. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
  491. nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
  492. nautobot/project-static/docs/media/development/core/ui-component-framework/basic-panel-layout.png +0 -0
  493. nautobot/project-static/docs/media/development/core/ui-component-framework/button-example.png +0 -0
  494. nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
  495. nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
  496. nautobot/project-static/docs/media/development/core/ui-component-framework/dropdown-button-example.png +0 -0
  497. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-1.png +0 -0
  498. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-2.png +0 -0
  499. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example.png +0 -0
  500. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
  501. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
  502. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example.png +0 -0
  503. nautobot/project-static/docs/media/development/core/ui-component-framework/table-panels-family.png +0 -0
  504. nautobot/project-static/docs/media/development/core/ui-component-framework/text-panels-family.png +0 -0
  505. nautobot/project-static/docs/media/development/core/ui-component-framework/ui-framework-example.png +0 -0
  506. nautobot/project-static/docs/media/models/virtual_device_context_overview.drawio +73 -0
  507. nautobot/project-static/docs/media/models/virtual_device_context_overview.png +0 -0
  508. nautobot/project-static/docs/models/dcim/virtualdevicecontext.html +14 -0
  509. nautobot/project-static/docs/models/extras/jobqueue.html +14 -0
  510. nautobot/project-static/docs/models/wireless/radioprofile.html +14 -0
  511. nautobot/project-static/docs/models/wireless/supporteddatarate.html +14 -0
  512. nautobot/project-static/docs/models/wireless/wirelessnetwork.html +14 -0
  513. nautobot/project-static/docs/objects.inv +0 -0
  514. nautobot/project-static/docs/overview/application_stack.html +469 -23
  515. nautobot/project-static/docs/overview/design_philosophy.html +463 -19
  516. nautobot/project-static/docs/release-notes/index.html +485 -22
  517. nautobot/project-static/docs/release-notes/version-1.0.html +651 -208
  518. nautobot/project-static/docs/release-notes/version-1.1.html +648 -205
  519. nautobot/project-static/docs/release-notes/version-1.2.html +723 -280
  520. nautobot/project-static/docs/release-notes/version-1.3.html +749 -306
  521. nautobot/project-static/docs/release-notes/version-1.4.html +834 -392
  522. nautobot/project-static/docs/release-notes/version-1.5.html +1022 -581
  523. nautobot/project-static/docs/release-notes/version-1.6.html +942 -518
  524. nautobot/project-static/docs/release-notes/version-2.0.html +945 -504
  525. nautobot/project-static/docs/release-notes/version-2.1.html +780 -339
  526. nautobot/project-static/docs/release-notes/version-2.2.html +773 -332
  527. nautobot/project-static/docs/release-notes/version-2.3.html +1142 -448
  528. nautobot/project-static/docs/release-notes/version-2.4.html +10323 -0
  529. nautobot/project-static/docs/requirements.txt +2 -2
  530. nautobot/project-static/docs/search/search_index.json +1 -1
  531. nautobot/project-static/docs/sitemap.xml +342 -270
  532. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  533. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +463 -19
  534. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +463 -19
  535. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +463 -19
  536. nautobot/project-static/docs/user-guide/administration/configuration/index.html +475 -32
  537. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +463 -19
  538. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +894 -180
  539. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +463 -19
  540. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +463 -19
  541. nautobot/project-static/docs/user-guide/administration/guides/docker.html +476 -29
  542. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +463 -19
  543. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +463 -19
  544. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +463 -19
  545. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +463 -19
  546. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +463 -19
  547. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +465 -21
  548. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +463 -19
  549. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +463 -19
  550. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +463 -19
  551. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +483 -23
  552. nautobot/project-static/docs/user-guide/administration/installation/index.html +468 -20
  553. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +464 -20
  554. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +463 -19
  555. nautobot/project-static/docs/user-guide/administration/installation/services.html +463 -19
  556. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +463 -19
  557. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +484 -41
  558. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +477 -66
  559. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +477 -66
  560. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +463 -19
  561. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +463 -19
  562. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +463 -19
  563. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +463 -19
  564. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +463 -19
  565. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +466 -23
  566. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +463 -19
  567. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-nautobot-app-location.yaml +0 -16
  568. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +463 -19
  569. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +469 -21
  570. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +463 -19
  571. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +463 -19
  572. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +463 -19
  573. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +463 -19
  574. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +463 -19
  575. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +463 -19
  576. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +463 -19
  577. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +463 -19
  578. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +463 -19
  579. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +463 -19
  580. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +463 -19
  581. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +463 -19
  582. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +463 -19
  583. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +463 -19
  584. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +463 -19
  585. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +463 -19
  586. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +463 -19
  587. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +499 -20
  588. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +489 -22
  589. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +463 -19
  590. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +463 -19
  591. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +463 -19
  592. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +463 -19
  593. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +463 -19
  594. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +463 -19
  595. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +463 -19
  596. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +463 -19
  597. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +463 -19
  598. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +463 -19
  599. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +463 -19
  600. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +463 -19
  601. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +463 -19
  602. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +463 -19
  603. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +463 -19
  604. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +463 -19
  605. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +463 -19
  606. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +463 -19
  607. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +463 -19
  608. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +463 -19
  609. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +463 -19
  610. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +463 -19
  611. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +463 -19
  612. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +463 -19
  613. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +463 -19
  614. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +463 -19
  615. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +463 -19
  616. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +463 -19
  617. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +463 -19
  618. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +463 -19
  619. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +463 -19
  620. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +463 -19
  621. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +463 -19
  622. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +463 -19
  623. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9375 -0
  624. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +470 -30
  625. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +463 -19
  626. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +463 -19
  627. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +463 -19
  628. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +463 -19
  629. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +463 -19
  630. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +463 -19
  631. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +463 -19
  632. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +463 -19
  633. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +463 -19
  634. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +463 -19
  635. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +463 -19
  636. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +463 -19
  637. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +466 -22
  638. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +463 -19
  639. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +463 -19
  640. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +463 -19
  641. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +463 -19
  642. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +463 -19
  643. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +463 -19
  644. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +466 -22
  645. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9313 -0
  646. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9217 -0
  647. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9211 -0
  648. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9277 -0
  649. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +463 -19
  650. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +463 -19
  651. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +463 -19
  652. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +463 -19
  653. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +463 -19
  654. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +463 -19
  655. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +463 -19
  656. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +463 -19
  657. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +463 -19
  658. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +463 -19
  659. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +463 -19
  660. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +468 -22
  661. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +463 -19
  662. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
  663. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
  664. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
  665. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
  666. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
  667. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
  668. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
  669. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
  670. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
  671. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
  672. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
  673. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
  674. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
  675. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +463 -19
  676. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +463 -19
  677. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +466 -22
  678. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +9444 -0
  679. nautobot/project-static/docs/user-guide/index.html +463 -19
  680. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +466 -22
  681. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +467 -23
  682. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +463 -19
  683. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +463 -19
  684. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +463 -19
  685. nautobot/project-static/docs/user-guide/platform-functionality/events.html +9617 -0
  686. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +466 -22
  687. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +463 -19
  688. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +463 -19
  689. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +463 -19
  690. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +463 -19
  691. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +463 -19
  692. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +472 -23
  693. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +466 -22
  694. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +466 -22
  695. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +463 -19
  696. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9224 -0
  697. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9722 -0
  698. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +466 -22
  699. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +463 -19
  700. nautobot/project-static/docs/user-guide/platform-functionality/note.html +463 -19
  701. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +463 -19
  702. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +467 -23
  703. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9292 -0
  704. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +463 -19
  705. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +511 -40
  706. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +494 -23
  707. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +463 -19
  708. nautobot/project-static/docs/user-guide/platform-functionality/role.html +463 -19
  709. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +463 -19
  710. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +463 -19
  711. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +466 -22
  712. nautobot/project-static/docs/user-guide/platform-functionality/status.html +463 -19
  713. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +463 -19
  714. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +531 -56
  715. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +463 -19
  716. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +463 -19
  717. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +463 -19
  718. nautobot/project-static/img/jinja_logo.svg +97 -0
  719. nautobot/project-static/js/forms.js +6 -1
  720. nautobot/project-static/js/nav_menu.js +2 -1
  721. nautobot/tenancy/api/serializers.py +0 -2
  722. nautobot/tenancy/api/views.py +9 -13
  723. nautobot/tenancy/factory.py +1 -1
  724. nautobot/tenancy/navigation.py +0 -29
  725. nautobot/tenancy/templates/tenancy/tenant.html +4 -91
  726. nautobot/tenancy/tests/test_filters.py +29 -134
  727. nautobot/tenancy/views.py +35 -24
  728. nautobot/users/admin.py +3 -1
  729. nautobot/users/api/serializers.py +4 -4
  730. nautobot/users/api/views.py +3 -3
  731. nautobot/users/forms.py +19 -0
  732. nautobot/users/templates/users/preferences.html +22 -0
  733. nautobot/users/tests/test_filters.py +1 -19
  734. nautobot/users/tests/test_views.py +57 -0
  735. nautobot/users/utils.py +8 -0
  736. nautobot/users/views.py +48 -11
  737. nautobot/virtualization/api/serializers.py +4 -4
  738. nautobot/virtualization/api/views.py +5 -24
  739. nautobot/virtualization/filters.py +1 -2
  740. nautobot/virtualization/models.py +1 -1
  741. nautobot/virtualization/navigation.py +0 -48
  742. nautobot/virtualization/tables.py +2 -2
  743. nautobot/virtualization/templates/virtualization/cluster_edit.html +1 -7
  744. nautobot/virtualization/templates/virtualization/clustertype.html +0 -39
  745. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -9
  746. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -8
  747. nautobot/virtualization/tests/test_filters.py +57 -166
  748. nautobot/virtualization/views.py +18 -15
  749. nautobot/wireless/__init__.py +0 -0
  750. nautobot/wireless/api/__init__.py +0 -0
  751. nautobot/wireless/api/serializers.py +44 -0
  752. nautobot/wireless/api/urls.py +20 -0
  753. nautobot/wireless/api/views.py +34 -0
  754. nautobot/wireless/apps.py +8 -0
  755. nautobot/wireless/choices.py +345 -0
  756. nautobot/wireless/factory.py +138 -0
  757. nautobot/wireless/filters.py +167 -0
  758. nautobot/wireless/forms.py +283 -0
  759. nautobot/wireless/homepage.py +19 -0
  760. nautobot/wireless/migrations/0001_initial.py +223 -0
  761. nautobot/wireless/migrations/__init__.py +0 -0
  762. nautobot/wireless/models.py +207 -0
  763. nautobot/wireless/navigation.py +105 -0
  764. nautobot/wireless/tables.py +244 -0
  765. nautobot/wireless/templates/wireless/radioprofile_retrieve.html +81 -0
  766. nautobot/wireless/templates/wireless/supporteddatarate_retrieve.html +26 -0
  767. nautobot/wireless/templates/wireless/wirelessnetwork_create.html +88 -0
  768. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +56 -0
  769. nautobot/wireless/tests/__init__.py +0 -0
  770. nautobot/wireless/tests/integration/__init__.py +0 -0
  771. nautobot/wireless/tests/integration/test_radio_profile.py +42 -0
  772. nautobot/wireless/tests/test_api.py +247 -0
  773. nautobot/wireless/tests/test_filters.py +82 -0
  774. nautobot/wireless/tests/test_models.py +22 -0
  775. nautobot/wireless/tests/test_views.py +378 -0
  776. nautobot/wireless/urls.py +13 -0
  777. nautobot/wireless/views.py +119 -0
  778. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/METADATA +11 -13
  779. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/RECORD +783 -613
  780. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/WHEEL +1 -1
  781. nautobot/core/fixtures/user-data.json +0 -59
  782. nautobot/core/utils/navigation.py +0 -54
  783. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/LICENSE.txt +0 -0
  784. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/NOTICE +0 -0
  785. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.48">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
22
22
 
23
23
 
24
24
 
@@ -2112,6 +2112,27 @@
2112
2112
 
2113
2113
 
2114
2114
 
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+ <li class="md-nav__item">
2122
+ <a href="../../../user-guide/feature-guides/wireless-networks-and-controllers.html" class="md-nav__link">
2123
+
2124
+
2125
+ <span class="md-ellipsis">
2126
+ Wireless Networks and Controllers
2127
+ </span>
2128
+
2129
+
2130
+ </a>
2131
+ </li>
2132
+
2133
+
2134
+
2135
+
2115
2136
  </ul>
2116
2137
  </nav>
2117
2138
 
@@ -3944,6 +3965,27 @@
3944
3965
 
3945
3966
 
3946
3967
 
3968
+
3969
+
3970
+
3971
+
3972
+
3973
+
3974
+ <li class="md-nav__item">
3975
+ <a href="../../../user-guide/core-data-model/dcim/virtualdevicecontext.html" class="md-nav__link">
3976
+
3977
+
3978
+ <span class="md-ellipsis">
3979
+ Virtual Device Context
3980
+ </span>
3981
+
3982
+
3983
+ </a>
3984
+ </li>
3985
+
3986
+
3987
+
3988
+
3947
3989
  </ul>
3948
3990
  </nav>
3949
3991
 
@@ -4556,6 +4598,123 @@
4556
4598
 
4557
4599
 
4558
4600
 
4601
+
4602
+
4603
+
4604
+
4605
+
4606
+
4607
+
4608
+
4609
+
4610
+
4611
+
4612
+
4613
+
4614
+ <li class="md-nav__item md-nav__item--nested">
4615
+
4616
+
4617
+
4618
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_9" >
4619
+
4620
+
4621
+
4622
+ <div class="md-nav__link md-nav__container">
4623
+ <a href="../../../user-guide/core-data-model/wireless/index.html" class="md-nav__link ">
4624
+
4625
+
4626
+ <span class="md-ellipsis">
4627
+ Wireless
4628
+ </span>
4629
+
4630
+
4631
+ </a>
4632
+
4633
+
4634
+ <label class="md-nav__link " for="__nav_2_3_9" id="__nav_2_3_9_label" tabindex="0">
4635
+ <span class="md-nav__icon md-icon"></span>
4636
+ </label>
4637
+
4638
+ </div>
4639
+
4640
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_9_label" aria-expanded="false">
4641
+ <label class="md-nav__title" for="__nav_2_3_9">
4642
+ <span class="md-nav__icon md-icon"></span>
4643
+ Wireless
4644
+ </label>
4645
+ <ul class="md-nav__list" data-md-scrollfix>
4646
+
4647
+
4648
+
4649
+
4650
+
4651
+
4652
+
4653
+ <li class="md-nav__item">
4654
+ <a href="../../../user-guide/core-data-model/wireless/supporteddatarate.html" class="md-nav__link">
4655
+
4656
+
4657
+ <span class="md-ellipsis">
4658
+ Supported Data Rate
4659
+ </span>
4660
+
4661
+
4662
+ </a>
4663
+ </li>
4664
+
4665
+
4666
+
4667
+
4668
+
4669
+
4670
+
4671
+
4672
+
4673
+
4674
+ <li class="md-nav__item">
4675
+ <a href="../../../user-guide/core-data-model/wireless/radioprofile.html" class="md-nav__link">
4676
+
4677
+
4678
+ <span class="md-ellipsis">
4679
+ Radio Profile
4680
+ </span>
4681
+
4682
+
4683
+ </a>
4684
+ </li>
4685
+
4686
+
4687
+
4688
+
4689
+
4690
+
4691
+
4692
+
4693
+
4694
+
4695
+ <li class="md-nav__item">
4696
+ <a href="../../../user-guide/core-data-model/wireless/wirelessnetwork.html" class="md-nav__link">
4697
+
4698
+
4699
+ <span class="md-ellipsis">
4700
+ Wireless Network
4701
+ </span>
4702
+
4703
+
4704
+ </a>
4705
+ </li>
4706
+
4707
+
4708
+
4709
+
4710
+ </ul>
4711
+ </nav>
4712
+
4713
+ </li>
4714
+
4715
+
4716
+
4717
+
4559
4718
  </ul>
4560
4719
  </nav>
4561
4720
 
@@ -4767,6 +4926,27 @@
4767
4926
 
4768
4927
 
4769
4928
 
4929
+ <li class="md-nav__item">
4930
+ <a href="../../../user-guide/platform-functionality/events.html" class="md-nav__link">
4931
+
4932
+
4933
+ <span class="md-ellipsis">
4934
+ Event Notifications
4935
+ </span>
4936
+
4937
+
4938
+ </a>
4939
+ </li>
4940
+
4941
+
4942
+
4943
+
4944
+
4945
+
4946
+
4947
+
4948
+
4949
+
4770
4950
  <li class="md-nav__item">
4771
4951
  <a href="../../../user-guide/platform-functionality/exporttemplate.html" class="md-nav__link">
4772
4952
 
@@ -4841,7 +5021,7 @@
4841
5021
 
4842
5022
 
4843
5023
 
4844
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_9" >
5024
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_10" >
4845
5025
 
4846
5026
 
4847
5027
 
@@ -4857,14 +5037,14 @@
4857
5037
  </a>
4858
5038
 
4859
5039
 
4860
- <label class="md-nav__link " for="__nav_2_4_9" id="__nav_2_4_9_label" tabindex="0">
5040
+ <label class="md-nav__link " for="__nav_2_4_10" id="__nav_2_4_10_label" tabindex="0">
4861
5041
  <span class="md-nav__icon md-icon"></span>
4862
5042
  </label>
4863
5043
 
4864
5044
  </div>
4865
5045
 
4866
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_9_label" aria-expanded="false">
4867
- <label class="md-nav__title" for="__nav_2_4_9">
5046
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_10_label" aria-expanded="false">
5047
+ <label class="md-nav__title" for="__nav_2_4_10">
4868
5048
  <span class="md-nav__icon md-icon"></span>
4869
5049
  GraphQL
4870
5050
  </label>
@@ -4937,7 +5117,7 @@
4937
5117
 
4938
5118
 
4939
5119
 
4940
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_11" >
5120
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_12" >
4941
5121
 
4942
5122
 
4943
5123
 
@@ -4953,14 +5133,14 @@
4953
5133
  </a>
4954
5134
 
4955
5135
 
4956
- <label class="md-nav__link " for="__nav_2_4_11" id="__nav_2_4_11_label" tabindex="0">
5136
+ <label class="md-nav__link " for="__nav_2_4_12" id="__nav_2_4_12_label" tabindex="0">
4957
5137
  <span class="md-nav__icon md-icon"></span>
4958
5138
  </label>
4959
5139
 
4960
5140
  </div>
4961
5141
 
4962
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_11_label" aria-expanded="false">
4963
- <label class="md-nav__title" for="__nav_2_4_11">
5142
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_12_label" aria-expanded="false">
5143
+ <label class="md-nav__title" for="__nav_2_4_12">
4964
5144
  <span class="md-nav__icon md-icon"></span>
4965
5145
  Jobs
4966
5146
  </label>
@@ -4972,6 +5152,27 @@
4972
5152
 
4973
5153
 
4974
5154
 
5155
+ <li class="md-nav__item">
5156
+ <a href="../../../user-guide/platform-functionality/jobs/kubernetes-job-support.html" class="md-nav__link">
5157
+
5158
+
5159
+ <span class="md-ellipsis">
5160
+ Kubernetes Job Support
5161
+ </span>
5162
+
5163
+
5164
+ </a>
5165
+ </li>
5166
+
5167
+
5168
+
5169
+
5170
+
5171
+
5172
+
5173
+
5174
+
5175
+
4975
5176
  <li class="md-nav__item">
4976
5177
  <a href="../../../user-guide/platform-functionality/jobs/jobbutton.html" class="md-nav__link">
4977
5178
 
@@ -5035,6 +5236,27 @@
5035
5236
 
5036
5237
 
5037
5238
 
5239
+ <li class="md-nav__item">
5240
+ <a href="../../../user-guide/platform-functionality/jobs/jobqueue.html" class="md-nav__link">
5241
+
5242
+
5243
+ <span class="md-ellipsis">
5244
+ Job Queues
5245
+ </span>
5246
+
5247
+
5248
+ </a>
5249
+ </li>
5250
+
5251
+
5252
+
5253
+
5254
+
5255
+
5256
+
5257
+
5258
+
5259
+
5038
5260
  <li class="md-nav__item">
5039
5261
  <a href="../../../user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html" class="md-nav__link">
5040
5262
 
@@ -5148,6 +5370,27 @@
5148
5370
 
5149
5371
 
5150
5372
 
5373
+ <li class="md-nav__item">
5374
+ <a href="../../../user-guide/platform-functionality/rendering-jinja-templates.html" class="md-nav__link">
5375
+
5376
+
5377
+ <span class="md-ellipsis">
5378
+ Rendering Jinja Templates
5379
+ </span>
5380
+
5381
+
5382
+ </a>
5383
+ </li>
5384
+
5385
+
5386
+
5387
+
5388
+
5389
+
5390
+
5391
+
5392
+
5393
+
5151
5394
 
5152
5395
 
5153
5396
 
@@ -5159,7 +5402,7 @@
5159
5402
 
5160
5403
 
5161
5404
 
5162
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
5405
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_18" >
5163
5406
 
5164
5407
 
5165
5408
 
@@ -5175,14 +5418,14 @@
5175
5418
  </a>
5176
5419
 
5177
5420
 
5178
- <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
5421
+ <label class="md-nav__link " for="__nav_2_4_18" id="__nav_2_4_18_label" tabindex="0">
5179
5422
  <span class="md-nav__icon md-icon"></span>
5180
5423
  </label>
5181
5424
 
5182
5425
  </div>
5183
5426
 
5184
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
5185
- <label class="md-nav__title" for="__nav_2_4_16">
5427
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_18_label" aria-expanded="false">
5428
+ <label class="md-nav__title" for="__nav_2_4_18">
5186
5429
  <span class="md-nav__icon md-icon"></span>
5187
5430
  REST API
5188
5431
  </label>
@@ -5402,10 +5645,10 @@
5402
5645
 
5403
5646
 
5404
5647
 
5405
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
5648
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_25" >
5406
5649
 
5407
5650
 
5408
- <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
5651
+ <label class="md-nav__link" for="__nav_2_4_25" id="__nav_2_4_25_label" tabindex="0">
5409
5652
 
5410
5653
 
5411
5654
  <span class="md-ellipsis">
@@ -5416,8 +5659,8 @@
5416
5659
  <span class="md-nav__icon md-icon"></span>
5417
5660
  </label>
5418
5661
 
5419
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
5420
- <label class="md-nav__title" for="__nav_2_4_23">
5662
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_25_label" aria-expanded="false">
5663
+ <label class="md-nav__title" for="__nav_2_4_25">
5421
5664
  <span class="md-nav__icon md-icon"></span>
5422
5665
  Users
5423
5666
  </label>
@@ -6831,6 +7074,27 @@
6831
7074
 
6832
7075
 
6833
7076
 
7077
+ <li class="md-nav__item">
7078
+ <a href="events.html" class="md-nav__link">
7079
+
7080
+
7081
+ <span class="md-ellipsis">
7082
+ nautobot.apps.events
7083
+ </span>
7084
+
7085
+
7086
+ </a>
7087
+ </li>
7088
+
7089
+
7090
+
7091
+
7092
+
7093
+
7094
+
7095
+
7096
+
7097
+
6834
7098
  <li class="md-nav__item">
6835
7099
  <a href="exceptions.html" class="md-nav__link">
6836
7100
 
@@ -8054,6 +8318,15 @@
8054
8318
  </span>
8055
8319
  </a>
8056
8320
 
8321
+ </li>
8322
+
8323
+ <li class="md-nav__item">
8324
+ <a href="#nautobot.apps.views.get_obj_from_context" class="md-nav__link">
8325
+ <span class="md-ellipsis">
8326
+ get_obj_from_context
8327
+ </span>
8328
+ </a>
8329
+
8057
8330
  </li>
8058
8331
 
8059
8332
  <li class="md-nav__item">
@@ -8331,14 +8604,6 @@
8331
8604
 
8332
8605
 
8333
8606
 
8334
- </ul>
8335
- </nav>
8336
-
8337
- </li>
8338
-
8339
-
8340
-
8341
-
8342
8607
 
8343
8608
 
8344
8609
 
@@ -8356,12 +8621,137 @@
8356
8621
 
8357
8622
 
8358
8623
 
8359
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_10" >
8624
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_9_5" >
8360
8625
 
8361
8626
 
8362
- <label class="md-nav__link" for="__nav_3_2_10" id="__nav_3_2_10_label" tabindex="0">
8363
-
8364
-
8627
+
8628
+ <div class="md-nav__link md-nav__container">
8629
+ <a href="../../../development/apps/migration/ui-component-framework/index.html" class="md-nav__link ">
8630
+
8631
+
8632
+ <span class="md-ellipsis">
8633
+ UI Component Framework
8634
+ </span>
8635
+
8636
+
8637
+ </a>
8638
+
8639
+
8640
+ <label class="md-nav__link " for="__nav_3_2_9_5" id="__nav_3_2_9_5_label" tabindex="0">
8641
+ <span class="md-nav__icon md-icon"></span>
8642
+ </label>
8643
+
8644
+ </div>
8645
+
8646
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_2_9_5_label" aria-expanded="false">
8647
+ <label class="md-nav__title" for="__nav_3_2_9_5">
8648
+ <span class="md-nav__icon md-icon"></span>
8649
+ UI Component Framework
8650
+ </label>
8651
+ <ul class="md-nav__list" data-md-scrollfix>
8652
+
8653
+
8654
+
8655
+
8656
+
8657
+
8658
+
8659
+ <li class="md-nav__item">
8660
+ <a href="../../../development/apps/migration/ui-component-framework/migration-steps.html" class="md-nav__link">
8661
+
8662
+
8663
+ <span class="md-ellipsis">
8664
+ Migration steps
8665
+ </span>
8666
+
8667
+
8668
+ </a>
8669
+ </li>
8670
+
8671
+
8672
+
8673
+
8674
+
8675
+
8676
+
8677
+
8678
+
8679
+
8680
+ <li class="md-nav__item">
8681
+ <a href="../../../development/apps/migration/ui-component-framework/custom-content.html" class="md-nav__link">
8682
+
8683
+
8684
+ <span class="md-ellipsis">
8685
+ Custom content
8686
+ </span>
8687
+
8688
+
8689
+ </a>
8690
+ </li>
8691
+
8692
+
8693
+
8694
+
8695
+
8696
+
8697
+
8698
+
8699
+
8700
+
8701
+ <li class="md-nav__item">
8702
+ <a href="../../../development/apps/migration/ui-component-framework/best-practices.html" class="md-nav__link">
8703
+
8704
+
8705
+ <span class="md-ellipsis">
8706
+ Best practices
8707
+ </span>
8708
+
8709
+
8710
+ </a>
8711
+ </li>
8712
+
8713
+
8714
+
8715
+
8716
+ </ul>
8717
+ </nav>
8718
+
8719
+ </li>
8720
+
8721
+
8722
+
8723
+
8724
+ </ul>
8725
+ </nav>
8726
+
8727
+ </li>
8728
+
8729
+
8730
+
8731
+
8732
+
8733
+
8734
+
8735
+
8736
+
8737
+
8738
+
8739
+
8740
+
8741
+
8742
+
8743
+
8744
+
8745
+ <li class="md-nav__item md-nav__item--nested">
8746
+
8747
+
8748
+
8749
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_10" >
8750
+
8751
+
8752
+ <label class="md-nav__link" for="__nav_3_2_10" id="__nav_3_2_10_label" tabindex="0">
8753
+
8754
+
8365
8755
  <span class="md-ellipsis">
8366
8756
  Advanced
8367
8757
  </span>
@@ -8676,6 +9066,27 @@
8676
9066
 
8677
9067
 
8678
9068
 
9069
+ <li class="md-nav__item">
9070
+ <a href="../../../development/core/minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
9071
+
9072
+
9073
+ <span class="md-ellipsis">
9074
+ Minikube Dev Environment for K8s Jobs
9075
+ </span>
9076
+
9077
+
9078
+ </a>
9079
+ </li>
9080
+
9081
+
9082
+
9083
+
9084
+
9085
+
9086
+
9087
+
9088
+
9089
+
8679
9090
  <li class="md-nav__item">
8680
9091
  <a href="../../../development/core/model-checklist.html" class="md-nav__link">
8681
9092
 
@@ -8865,6 +9276,27 @@
8865
9276
 
8866
9277
 
8867
9278
 
9279
+ <li class="md-nav__item">
9280
+ <a href="../../../development/core/ui-component-framework.html" class="md-nav__link">
9281
+
9282
+
9283
+ <span class="md-ellipsis">
9284
+ UI Component Framework
9285
+ </span>
9286
+
9287
+
9288
+ </a>
9289
+ </li>
9290
+
9291
+
9292
+
9293
+
9294
+
9295
+
9296
+
9297
+
9298
+
9299
+
8868
9300
  <li class="md-nav__item">
8869
9301
  <a href="../../../development/core/release-checklist.html" class="md-nav__link">
8870
9302
 
@@ -8947,6 +9379,27 @@
8947
9379
 
8948
9380
 
8949
9381
 
9382
+ <li class="md-nav__item">
9383
+ <a href="../../../release-notes/version-2.4.html" class="md-nav__link">
9384
+
9385
+
9386
+ <span class="md-ellipsis">
9387
+ Version 2.4
9388
+ </span>
9389
+
9390
+
9391
+ </a>
9392
+ </li>
9393
+
9394
+
9395
+
9396
+
9397
+
9398
+
9399
+
9400
+
9401
+
9402
+
8950
9403
  <li class="md-nav__item">
8951
9404
  <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
8952
9405
 
@@ -10417,6 +10870,15 @@
10417
10870
  </span>
10418
10871
  </a>
10419
10872
 
10873
+ </li>
10874
+
10875
+ <li class="md-nav__item">
10876
+ <a href="#nautobot.apps.views.get_obj_from_context" class="md-nav__link">
10877
+ <span class="md-ellipsis">
10878
+ get_obj_from_context
10879
+ </span>
10880
+ </a>
10881
+
10420
10882
  </li>
10421
10883
 
10422
10884
  <li class="md-nav__item">
@@ -10476,7 +10938,12 @@
10476
10938
 
10477
10939
  <div class="doc doc-contents first">
10478
10940
 
10479
- <p>Utilities for apps to implement UI views.</p>
10941
+ <p>Utilities for apps to implement UI views.</p>
10942
+
10943
+
10944
+
10945
+
10946
+
10480
10947
 
10481
10948
 
10482
10949
 
@@ -10502,10 +10969,15 @@
10502
10969
 
10503
10970
  <div class="doc doc-contents ">
10504
10971
  <p class="doc doc-class-bases">
10505
- Bases: <code><autoref identifier="django.contrib.auth.mixins.AccessMixin" optional hover>AccessMixin</autoref></code></p>
10972
+ Bases: <code><span title="django.contrib.auth.mixins.AccessMixin">AccessMixin</span></code></p>
10973
+
10974
+
10975
+ <p>Allows access only to admin users.</p>
10976
+
10977
+
10978
+
10506
10979
 
10507
10980
 
10508
- <p>Allows access only to admin users.</p>
10509
10981
 
10510
10982
 
10511
10983
 
@@ -10541,10 +11013,15 @@
10541
11013
 
10542
11014
  <div class="doc doc-contents ">
10543
11015
  <p class="doc doc-class-bases">
10544
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11016
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
11017
+
11018
+
11019
+ <p>Add one or more components (e.g. interfaces, console ports, etc.) to a set of Devices or VirtualMachines.</p>
11020
+
11021
+
11022
+
10545
11023
 
10546
11024
 
10547
- <p>Add one or more components (e.g. interfaces, console ports, etc.) to a set of Devices or VirtualMachines.</p>
10548
11025
 
10549
11026
 
10550
11027
 
@@ -10580,10 +11057,10 @@
10580
11057
 
10581
11058
  <div class="doc doc-contents ">
10582
11059
  <p class="doc doc-class-bases">
10583
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11060
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
10584
11061
 
10585
11062
 
10586
- <p>Create new objects in bulk.</p>
11063
+ <p>Create new objects in bulk.</p>
10587
11064
  <p>queryset: Base queryset for the objects being created
10588
11065
  form: Form class which provides the <code>pattern</code> field
10589
11066
  model_form: The ModelForm used to create individual objects
@@ -10593,6 +11070,11 @@ template_name: The name of the template</p>
10593
11070
 
10594
11071
 
10595
11072
 
11073
+
11074
+
11075
+
11076
+
11077
+
10596
11078
  <div class="doc doc-children">
10597
11079
 
10598
11080
 
@@ -10624,10 +11106,10 @@ template_name: The name of the template</p>
10624
11106
 
10625
11107
  <div class="doc doc-contents ">
10626
11108
  <p class="doc doc-class-bases">
10627
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.EditAndDeleteAllModelMixin" optional hover>EditAndDeleteAllModelMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11109
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="nautobot.core.views.mixins.BulkEditAndBulkDeleteModelMixin">BulkEditAndBulkDeleteModelMixin</span></code>, <code><span title="django.views.generic.View">View</span></code></p>
10628
11110
 
10629
11111
 
10630
- <p>Delete objects in bulk.</p>
11112
+ <p>Delete objects in bulk.</p>
10631
11113
  <p>queryset: Custom queryset to use when retrieving objects (e.g. to select related objects)
10632
11114
  filterset: FilterSet to apply when deleting by QuerySet
10633
11115
  table: The table used to display devices being deleted
@@ -10637,6 +11119,11 @@ template_name: The name of the template</p>
10637
11119
 
10638
11120
 
10639
11121
 
11122
+
11123
+
11124
+
11125
+
11126
+
10640
11127
  <div class="doc doc-children">
10641
11128
 
10642
11129
 
@@ -10658,7 +11145,7 @@ template_name: The name of the template</p>
10658
11145
 
10659
11146
  <div class="doc doc-contents ">
10660
11147
 
10661
- <p>Provide a standard bulk delete form if none has been specified for the view</p>
11148
+ <p>Provide a standard bulk delete form if none has been specified for the view</p>
10662
11149
 
10663
11150
  </div>
10664
11151
 
@@ -10685,10 +11172,10 @@ template_name: The name of the template</p>
10685
11172
 
10686
11173
  <div class="doc doc-contents ">
10687
11174
  <p class="doc doc-class-bases">
10688
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.EditAndDeleteAllModelMixin" optional hover>EditAndDeleteAllModelMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11175
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="nautobot.core.views.mixins.BulkEditAndBulkDeleteModelMixin">BulkEditAndBulkDeleteModelMixin</span></code>, <code><span title="django.views.generic.View">View</span></code></p>
10689
11176
 
10690
11177
 
10691
- <p>Edit objects in bulk.</p>
11178
+ <p>Edit objects in bulk.</p>
10692
11179
  <p>queryset: Custom queryset to use when retrieving objects (e.g. to select related objects)
10693
11180
  filter: FilterSet to apply when deleting by QuerySet
10694
11181
  table: The table used to display devices being edited
@@ -10698,6 +11185,11 @@ template_name: The name of the template</p>
10698
11185
 
10699
11186
 
10700
11187
 
11188
+
11189
+
11190
+
11191
+
11192
+
10701
11193
  <div class="doc doc-children">
10702
11194
 
10703
11195
 
@@ -10719,7 +11211,7 @@ template_name: The name of the template</p>
10719
11211
 
10720
11212
  <div class="doc doc-contents ">
10721
11213
 
10722
- <p>Extra actions after a form is saved</p>
11214
+ <p>Extra actions after a form is saved</p>
10723
11215
 
10724
11216
  </div>
10725
11217
 
@@ -10746,10 +11238,10 @@ template_name: The name of the template</p>
10746
11238
 
10747
11239
  <div class="doc doc-contents ">
10748
11240
  <p class="doc doc-class-bases">
10749
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11241
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
10750
11242
 
10751
11243
 
10752
- <p>Import objects in bulk (CSV format).</p>
11244
+ <p>Import objects in bulk (CSV format).</p>
10753
11245
  <p>Deprecated - replaced by ImportObjects system Job.</p>
10754
11246
  <p>queryset: Base queryset for the model
10755
11247
  table: The django-tables2 Table used to render the list of imported objects
@@ -10758,6 +11250,11 @@ template_name: The name of the template</p>
10758
11250
 
10759
11251
 
10760
11252
 
11253
+
11254
+
11255
+
11256
+
11257
+
10761
11258
  <div class="doc doc-children">
10762
11259
 
10763
11260
 
@@ -10789,10 +11286,15 @@ template_name: The name of the template</p>
10789
11286
 
10790
11287
  <div class="doc doc-contents ">
10791
11288
  <p class="doc doc-class-bases">
10792
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11289
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
11290
+
11291
+
11292
+ <p>An extendable view for renaming objects in bulk.</p>
11293
+
11294
+
11295
+
10793
11296
 
10794
11297
 
10795
- <p>An extendable view for renaming objects in bulk.</p>
10796
11298
 
10797
11299
 
10798
11300
 
@@ -10818,7 +11320,7 @@ template_name: The name of the template</p>
10818
11320
 
10819
11321
  <div class="doc doc-contents ">
10820
11322
 
10821
- <p>Return selected_objects parent name.</p>
11323
+ <p>Return selected_objects parent name.</p>
10822
11324
  <p>This method is intended to be overridden by child classes to return the parent name of the selected objects.</p>
10823
11325
 
10824
11326
 
@@ -10834,9 +11336,11 @@ template_name: The name of the template</p>
10834
11336
  </thead>
10835
11337
  <tbody>
10836
11338
  <tr class="doc-section-item">
10837
- <td><code>selected_objects</code></td>
10838
11339
  <td>
10839
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="BaseModel" optional>BaseModel</autoref>]</code>
11340
+ <code>selected_objects</code>
11341
+ </td>
11342
+ <td>
11343
+ <code>list[BaseModel]</code>
10840
11344
  </td>
10841
11345
  <td>
10842
11346
  <div class="doc-md-description">
@@ -10862,7 +11366,7 @@ template_name: The name of the template</p>
10862
11366
  <tbody>
10863
11367
  <tr class="doc-section-item">
10864
11368
  <td>
10865
- <code><autoref identifier="str" optional>str</autoref></code>
11369
+ <code>str</code>
10866
11370
  </td>
10867
11371
  <td>
10868
11372
  <div class="doc-md-description">
@@ -10898,10 +11402,15 @@ template_name: The name of the template</p>
10898
11402
 
10899
11403
  <div class="doc doc-contents ">
10900
11404
  <p class="doc doc-class-bases">
10901
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11405
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
11406
+
11407
+
11408
+ <p>Add one or more components (e.g. interfaces, console ports, etc.) to a Device or VirtualMachine.</p>
11409
+
11410
+
11411
+
10902
11412
 
10903
11413
 
10904
- <p>Add one or more components (e.g. interfaces, console ports, etc.) to a Device or VirtualMachine.</p>
10905
11414
 
10906
11415
 
10907
11416
 
@@ -10937,10 +11446,10 @@ template_name: The name of the template</p>
10937
11446
 
10938
11447
  <div class="doc doc-contents ">
10939
11448
  <p class="doc doc-class-bases">
10940
- Bases: <code><autoref identifier="django.contrib.auth.mixins.AccessMixin" optional hover>AccessMixin</autoref></code></p>
11449
+ Bases: <code><span title="django.contrib.auth.mixins.AccessMixin">AccessMixin</span></code></p>
10941
11450
 
10942
11451
 
10943
- <p>Similar to Django's built-in PermissionRequiredMixin, but extended to check model-level permission assignments.
11452
+ <p>Similar to Django's built-in PermissionRequiredMixin, but extended to check model-level permission assignments.
10944
11453
  This is related to ObjectPermissionRequiredMixin, except that is does not enforce object-level permissions,
10945
11454
  and fits within Nautobot's custom permission enforcement system.</p>
10946
11455
 
@@ -10952,6 +11461,11 @@ and fits within Nautobot's custom permission enforcement system.</p>
10952
11461
 
10953
11462
 
10954
11463
 
11464
+
11465
+
11466
+
11467
+
11468
+
10955
11469
  <div class="doc doc-children">
10956
11470
 
10957
11471
 
@@ -10973,7 +11487,7 @@ and fits within Nautobot's custom permission enforcement system.</p>
10973
11487
 
10974
11488
  <div class="doc doc-contents ">
10975
11489
 
10976
- <p>Return the specific permission necessary to perform the requested action on an object.</p>
11490
+ <p>Return the specific permission necessary to perform the requested action on an object.</p>
10977
11491
 
10978
11492
  </div>
10979
11493
 
@@ -11000,13 +11514,18 @@ and fits within Nautobot's custom permission enforcement system.</p>
11000
11514
 
11001
11515
  <div class="doc doc-contents ">
11002
11516
  <p class="doc doc-class-bases">
11003
- Bases: <code><autoref identifier="django.contrib.auth.mixins.LoginRequiredMixin" optional hover>LoginRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
11517
+ Bases: <code><span title="django.contrib.auth.mixins.LoginRequiredMixin">LoginRequiredMixin</span></code>, <code><span title="django.views.generic.View">View</span></code></p>
11004
11518
 
11005
11519
 
11006
- <p>Base class for non-object-related views.</p>
11520
+ <p>Base class for non-object-related views.</p>
11007
11521
  <p>Enforces authentication, which Django's base View does not by default.</p>
11008
11522
 
11009
11523
 
11524
+
11525
+
11526
+
11527
+
11528
+
11010
11529
  </div>
11011
11530
 
11012
11531
  </div>
@@ -11025,7 +11544,12 @@ and fits within Nautobot's custom permission enforcement system.</p>
11025
11544
  <div class="doc doc-contents ">
11026
11545
 
11027
11546
 
11028
- <p>Provides logic for determining where a user should be redirected after processing a form.</p>
11547
+ <p>Provides logic for determining where a user should be redirected after processing a form.</p>
11548
+
11549
+
11550
+
11551
+
11552
+
11029
11553
 
11030
11554
 
11031
11555
 
@@ -11061,10 +11585,15 @@ and fits within Nautobot's custom permission enforcement system.</p>
11061
11585
 
11062
11586
  <div class="doc doc-contents ">
11063
11587
  <p class="doc doc-class-bases">
11064
- Bases: <code><autoref identifier="rest_framework.renderers.BrowsableAPIRenderer" optional hover>BrowsableAPIRenderer</autoref></code></p>
11588
+ Bases: <code><span title="rest_framework.renderers.BrowsableAPIRenderer">BrowsableAPIRenderer</span></code></p>
11589
+
11590
+
11591
+ <p>Inherited from BrowsableAPIRenderer to do most of the heavy lifting for getting the context needed for templates and template rendering.</p>
11592
+
11593
+
11594
+
11065
11595
 
11066
11596
 
11067
- <p>Inherited from BrowsableAPIRenderer to do most of the heavy lifting for getting the context needed for templates and template rendering.</p>
11068
11597
 
11069
11598
 
11070
11599
 
@@ -11090,7 +11619,7 @@ and fits within Nautobot's custom permission enforcement system.</p>
11090
11619
 
11091
11620
  <div class="doc doc-contents ">
11092
11621
 
11093
- <p>Helper function to construct and paginate the table for rendering used in the ObjectListView, ObjectBulkUpdateView and ObjectBulkDestroyView.</p>
11622
+ <p>Helper function to construct and paginate the table for rendering used in the ObjectListView, ObjectBulkUpdateView and ObjectBulkDestroyView.</p>
11094
11623
 
11095
11624
  </div>
11096
11625
 
@@ -11107,7 +11636,7 @@ and fits within Nautobot's custom permission enforcement system.</p>
11107
11636
 
11108
11637
  <div class="doc doc-contents ">
11109
11638
 
11110
- <p>Helper function to gather the user's permissions to add, change, delete and view the model,
11639
+ <p>Helper function to gather the user's permissions to add, change, delete and view the model,
11111
11640
  and then render the action buttons accordingly allowed in the ObjectListView UI.</p>
11112
11641
 
11113
11642
  </div>
@@ -11125,7 +11654,7 @@ and then render the action buttons accordingly allowed in the ObjectListView UI.
11125
11654
 
11126
11655
  <div class="doc doc-contents ">
11127
11656
 
11128
- <p>Override get_context() from BrowsableAPIRenderer to obtain the context data we need to render our templates.
11657
+ <p>Override get_context() from BrowsableAPIRenderer to obtain the context data we need to render our templates.
11129
11658
  context variable contains template context needed to render Nautobot generic templates / circuits templates.
11130
11659
  Override this function to add additional key/value pair to pass it to your templates.</p>
11131
11660
 
@@ -11144,7 +11673,7 @@ Override this function to add additional key/value pair to pass it to your templ
11144
11673
 
11145
11674
  <div class="doc doc-contents ">
11146
11675
 
11147
- <p>Helper function to obtain the filter_form_class,
11676
+ <p>Helper function to obtain the filter_form_class,
11148
11677
  and then initialize and return the filter_form used in the ObjectListView UI.</p>
11149
11678
 
11150
11679
  </div>
@@ -11162,7 +11691,7 @@ and then initialize and return the filter_form used in the ObjectListView UI.</p
11162
11691
 
11163
11692
  <div class="doc doc-contents ">
11164
11693
 
11165
- <p>Overrode render() from BrowsableAPIRenderer to set self.template with NautobotViewSet's get_template_name() before it is rendered.</p>
11694
+ <p>Overrode render() from BrowsableAPIRenderer to set self.template with NautobotViewSet's get_template_name() before it is rendered.</p>
11166
11695
 
11167
11696
  </div>
11168
11697
 
@@ -11179,7 +11708,7 @@ and then initialize and return the filter_form used in the ObjectListView UI.</p
11179
11708
 
11180
11709
  <div class="doc doc-contents ">
11181
11710
 
11182
- <p>Verify actions in self.action_buttons are valid view actions.</p>
11711
+ <p>Verify actions in self.action_buttons are valid view actions.</p>
11183
11712
 
11184
11713
  </div>
11185
11714
 
@@ -11206,16 +11735,21 @@ and then initialize and return the filter_form used in the ObjectListView UI.</p
11206
11735
 
11207
11736
  <div class="doc doc-contents ">
11208
11737
  <p class="doc doc-class-bases">
11209
- Bases: <code><autoref identifier="nautobot.core.views.mixins.ObjectDetailViewMixin" optional hover>ObjectDetailViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectListViewMixin" optional hover>ObjectListViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectEditViewMixin" optional hover>ObjectEditViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectDestroyViewMixin" optional hover>ObjectDestroyViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectBulkDestroyViewMixin" optional hover>ObjectBulkDestroyViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectBulkCreateViewMixin" optional hover>ObjectBulkCreateViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectBulkUpdateViewMixin" optional hover>ObjectBulkUpdateViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectChangeLogViewMixin" optional hover>ObjectChangeLogViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectNotesViewMixin" optional hover>ObjectNotesViewMixin</autoref></code></p>
11738
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectDetailViewMixin" href="#nautobot.apps.views.ObjectDetailViewMixin">ObjectDetailViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectListViewMixin" href="#nautobot.apps.views.ObjectListViewMixin">ObjectListViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectEditViewMixin" href="#nautobot.apps.views.ObjectEditViewMixin">ObjectEditViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectDestroyViewMixin" href="#nautobot.apps.views.ObjectDestroyViewMixin">ObjectDestroyViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectBulkDestroyViewMixin" href="#nautobot.apps.views.ObjectBulkDestroyViewMixin">ObjectBulkDestroyViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectBulkCreateViewMixin" href="#nautobot.apps.views.ObjectBulkCreateViewMixin">ObjectBulkCreateViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectBulkUpdateViewMixin" href="#nautobot.apps.views.ObjectBulkUpdateViewMixin">ObjectBulkUpdateViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectChangeLogViewMixin" href="#nautobot.apps.views.ObjectChangeLogViewMixin">ObjectChangeLogViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectNotesViewMixin" href="#nautobot.apps.views.ObjectNotesViewMixin">ObjectNotesViewMixin</a></code></p>
11210
11739
 
11211
11740
 
11212
- <p>Nautobot BaseViewSet that is intended for UI use only. It provides default Nautobot functionalities such as
11741
+ <p>Nautobot BaseViewSet that is intended for UI use only. It provides default Nautobot functionalities such as
11213
11742
  <code>create()</code>, <code>update()</code>, <code>partial_update()</code>, <code>bulk_update()</code>, <code>destroy()</code>, <code>bulk_destroy()</code>, <code>retrieve()</code>
11214
11743
  <code>notes()</code>, <code>changelog()</code> and <code>list()</code> actions.</p>
11215
11744
 
11216
11745
 
11217
11746
 
11218
11747
 
11748
+
11749
+
11750
+
11751
+
11752
+
11219
11753
  <div class="doc doc-children">
11220
11754
 
11221
11755
 
@@ -11247,10 +11781,15 @@ and then initialize and return the filter_form used in the ObjectListView UI.</p
11247
11781
 
11248
11782
  <div class="doc doc-contents ">
11249
11783
  <p class="doc doc-class-bases">
11250
- Bases: <code><autoref identifier="rest_framework.viewsets.GenericViewSet" optional hover>GenericViewSet</autoref></code>, <code><autoref identifier="django.contrib.auth.mixins.AccessMixin" optional hover>AccessMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="django.views.generic.edit.FormView" optional hover>FormView</autoref></code></p>
11784
+ Bases: <code><span title="rest_framework.viewsets.GenericViewSet">GenericViewSet</span></code>, <code><span title="django.contrib.auth.mixins.AccessMixin">AccessMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><span title="django.views.generic.edit.FormView">FormView</span></code></p>
11785
+
11786
+
11787
+ <p>NautobotViewSetMixin is an aggregation of various mixins from DRF, Django and Nautobot to acheive the desired behavior pattern for NautobotUIViewSet</p>
11788
+
11789
+
11790
+
11251
11791
 
11252
11792
 
11253
- <p>NautobotViewSetMixin is an aggregation of various mixins from DRF, Django and Nautobot to acheive the desired behavior pattern for NautobotUIViewSet</p>
11254
11793
 
11255
11794
 
11256
11795
 
@@ -11276,7 +11815,7 @@ and then initialize and return the filter_form used in the ObjectListView UI.</p
11276
11815
 
11277
11816
  <div class="doc doc-contents ">
11278
11817
 
11279
- <p>Check whether the user has the permissions needed to perform certain actions.</p>
11818
+ <p>Check whether the user has the permissions needed to perform certain actions.</p>
11280
11819
 
11281
11820
  </div>
11282
11821
 
@@ -11293,7 +11832,7 @@ and then initialize and return the filter_form used in the ObjectListView UI.</p
11293
11832
 
11294
11833
  <div class="doc doc-contents ">
11295
11834
 
11296
- <p>Override the default dispatch() method to check permissions first.
11835
+ <p>Override the default dispatch() method to check permissions first.
11297
11836
  Used to determine whether the user has permissions to a view and object-level permissions.
11298
11837
  Using AccessMixin handle_no_permission() to deal with Object-Level permissions and API-Level permissions in one pass.</p>
11299
11838
 
@@ -11312,7 +11851,7 @@ Using AccessMixin handle_no_permission() to deal with Object-Level permissions a
11312
11851
 
11313
11852
  <div class="doc doc-contents ">
11314
11853
 
11315
- <p>Extra actions after a form is saved</p>
11854
+ <p>Extra actions after a form is saved</p>
11316
11855
 
11317
11856
  </div>
11318
11857
 
@@ -11329,7 +11868,7 @@ Using AccessMixin handle_no_permission() to deal with Object-Level permissions a
11329
11868
 
11330
11869
  <div class="doc doc-contents ">
11331
11870
 
11332
- <p>Handle invalid forms.</p>
11871
+ <p>Handle invalid forms.</p>
11333
11872
 
11334
11873
  </div>
11335
11874
 
@@ -11346,7 +11885,7 @@ Using AccessMixin handle_no_permission() to deal with Object-Level permissions a
11346
11885
 
11347
11886
  <div class="doc doc-contents ">
11348
11887
 
11349
- <p>Generic method to save the object from form.
11888
+ <p>Generic method to save the object from form.
11350
11889
  Should be overriden by user if customization is needed.</p>
11351
11890
 
11352
11891
  </div>
@@ -11364,7 +11903,7 @@ Should be overriden by user if customization is needed.</p>
11364
11903
 
11365
11904
  <div class="doc doc-contents ">
11366
11905
 
11367
- <p>Handle valid forms and redirect to success_url.</p>
11906
+ <p>Handle valid forms and redirect to success_url.</p>
11368
11907
 
11369
11908
  </div>
11370
11909
 
@@ -11381,7 +11920,7 @@ Should be overriden by user if customization is needed.</p>
11381
11920
 
11382
11921
  <div class="doc doc-contents ">
11383
11922
 
11384
- <p>Helper method for retrieving action and if action not set defaulting to action name.</p>
11923
+ <p>Helper method for retrieving action and if action not set defaulting to action name.</p>
11385
11924
 
11386
11925
  </div>
11387
11926
 
@@ -11398,7 +11937,7 @@ Should be overriden by user if customization is needed.</p>
11398
11937
 
11399
11938
  <div class="doc doc-contents ">
11400
11939
 
11401
- <p>Return any additional context data for the template.
11940
+ <p>Return any additional context data for the template.
11402
11941
  request: The current request
11403
11942
  instance: The object being viewed</p>
11404
11943
 
@@ -11417,7 +11956,7 @@ instance: The object being viewed</p>
11417
11956
 
11418
11957
  <div class="doc doc-contents ">
11419
11958
 
11420
- <p>Helper function - take request.GET and discard any parameters that are not used for queryset filtering.</p>
11959
+ <p>Helper function - take request.GET and discard any parameters that are not used for queryset filtering.</p>
11421
11960
 
11422
11961
  </div>
11423
11962
 
@@ -11434,7 +11973,7 @@ instance: The object being viewed</p>
11434
11973
 
11435
11974
  <div class="doc doc-contents ">
11436
11975
 
11437
- <p>Helper function to get form for different views if specified.
11976
+ <p>Helper function to get form for different views if specified.
11438
11977
  If not, return instantiated form using form_class.</p>
11439
11978
 
11440
11979
  </div>
@@ -11452,7 +11991,7 @@ If not, return instantiated form using form_class.</p>
11452
11991
 
11453
11992
  <div class="doc doc-contents ">
11454
11993
 
11455
- <p>Helper function to get form_class for different views.</p>
11994
+ <p>Helper function to get form_class for different views.</p>
11456
11995
 
11457
11996
  </div>
11458
11997
 
@@ -11469,7 +12008,7 @@ If not, return instantiated form using form_class.</p>
11469
12008
 
11470
12009
  <div class="doc doc-contents ">
11471
12010
 
11472
- <p>Returns the object the view is displaying.
12011
+ <p>Returns the object the view is displaying.
11473
12012
  You may want to override this if you need to provide non-standard
11474
12013
  queryset lookups. Eg if objects are referenced using multiple
11475
12014
  keyword arguments in the url conf.</p>
@@ -11489,7 +12028,7 @@ keyword arguments in the url conf.</p>
11489
12028
 
11490
12029
  <div class="doc doc-contents ">
11491
12030
 
11492
- <p>Resolve the named permissions for a given model (or instance) and a list of actions (e.g. view or add).</p>
12031
+ <p>Resolve the named permissions for a given model (or instance) and a list of actions (e.g. view or add).</p>
11493
12032
  <p>:param model: A model or instance
11494
12033
  :param actions: A list of actions to perform on the model</p>
11495
12034
 
@@ -11508,7 +12047,7 @@ keyword arguments in the url conf.</p>
11508
12047
 
11509
12048
  <div class="doc doc-contents ">
11510
12049
 
11511
- <p>Get the list of items for this view.
12050
+ <p>Get the list of items for this view.
11512
12051
  This must be an iterable, and may be a queryset.
11513
12052
  Defaults to using <code>self.queryset</code>.
11514
12053
  This method should always be used rather than accessing <code>self.queryset</code>
@@ -11531,7 +12070,7 @@ Override the original <code>get_queryset()</code> to apply permission specific t
11531
12070
 
11532
12071
  <div class="doc doc-contents ">
11533
12072
 
11534
- <p>Obtain the permissions needed to perform certain actions on a model.</p>
12073
+ <p>Obtain the permissions needed to perform certain actions on a model.</p>
11535
12074
 
11536
12075
  </div>
11537
12076
 
@@ -11558,15 +12097,20 @@ Override the original <code>get_queryset()</code> to apply permission specific t
11558
12097
 
11559
12098
  <div class="doc doc-contents ">
11560
12099
  <p class="doc doc-class-bases">
11561
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code></p>
12100
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code></p>
11562
12101
 
11563
12102
 
11564
- <p>UI mixin to bulk create model instances.</p>
12103
+ <p>UI mixin to bulk create model instances.</p>
11565
12104
  <p>Deprecated - use ImportObjects system Job instead.</p>
11566
12105
 
11567
12106
 
11568
12107
 
11569
12108
 
12109
+
12110
+
12111
+
12112
+
12113
+
11570
12114
  <div class="doc doc-children">
11571
12115
 
11572
12116
 
@@ -11598,10 +12142,15 @@ Override the original <code>get_queryset()</code> to apply permission specific t
11598
12142
 
11599
12143
  <div class="doc doc-contents ">
11600
12144
  <p class="doc doc-class-bases">
11601
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code>, <code><autoref identifier="nautobot.core.api.views.BulkDestroyModelMixin" optional hover>BulkDestroyModelMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.EditAndDeleteAllModelMixin" optional hover>EditAndDeleteAllModelMixin</autoref></code></p>
12145
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkDestroyModelMixin" href="api.html#nautobot.apps.api.BulkDestroyModelMixin">BulkDestroyModelMixin</a></code>, <code><span title="nautobot.core.views.mixins.BulkEditAndBulkDeleteModelMixin">BulkEditAndBulkDeleteModelMixin</span></code></p>
12146
+
12147
+
12148
+ <p>UI mixin to bulk destroy model instances.</p>
12149
+
12150
+
12151
+
11602
12152
 
11603
12153
 
11604
- <p>UI mixin to bulk destroy model instances.</p>
11605
12154
 
11606
12155
 
11607
12156
 
@@ -11627,7 +12176,7 @@ Override the original <code>get_queryset()</code> to apply permission specific t
11627
12176
 
11628
12177
  <div class="doc doc-contents ">
11629
12178
 
11630
- <p>Call perform_bulk_destroy().
12179
+ <p>Call perform_bulk_destroy().
11631
12180
  The function exist to keep the DRF's get/post pattern of {action}/perform_{action}, we will need it when we transition from using forms to serializers in the UI.
11632
12181
  User should override this function to handle any actions as needed before bulk destroy.</p>
11633
12182
 
@@ -11646,7 +12195,7 @@ User should override this function to handle any actions as needed before bulk d
11646
12195
 
11647
12196
  <div class="doc doc-contents ">
11648
12197
 
11649
- <p>request.POST "_delete": Function to render the user selection of objects in a table form/BulkDestroyConfirmationForm via Response that is passed to NautobotHTMLRenderer.
12198
+ <p>request.POST "_delete": Function to render the user selection of objects in a table form/BulkDestroyConfirmationForm via Response that is passed to NautobotHTMLRenderer.
11650
12199
  request.POST "_confirm": Function to validate the table form/BulkDestroyConfirmationForm and to perform the action of bulk destroy. Render the form with errors if exceptions are raised.</p>
11651
12200
 
11652
12201
  </div>
@@ -11674,10 +12223,15 @@ request.POST "_confirm": Function to validate the table form/BulkDestroyConfirma
11674
12223
 
11675
12224
  <div class="doc doc-contents ">
11676
12225
  <p class="doc doc-class-bases">
11677
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code>, <code><autoref identifier="nautobot.core.api.views.BulkUpdateModelMixin" optional hover>BulkUpdateModelMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.EditAndDeleteAllModelMixin" optional hover>EditAndDeleteAllModelMixin</autoref></code></p>
12226
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkUpdateModelMixin" href="api.html#nautobot.apps.api.BulkUpdateModelMixin">BulkUpdateModelMixin</a></code>, <code><span title="nautobot.core.views.mixins.BulkEditAndBulkDeleteModelMixin">BulkEditAndBulkDeleteModelMixin</span></code></p>
12227
+
12228
+
12229
+ <p>UI mixin to bulk update model instances.</p>
12230
+
12231
+
12232
+
11678
12233
 
11679
12234
 
11680
- <p>UI mixin to bulk update model instances.</p>
11681
12235
 
11682
12236
 
11683
12237
 
@@ -11703,7 +12257,7 @@ request.POST "_confirm": Function to validate the table form/BulkDestroyConfirma
11703
12257
 
11704
12258
  <div class="doc doc-contents ">
11705
12259
 
11706
- <p>Call perform_bulk_update().
12260
+ <p>Call perform_bulk_update().
11707
12261
  The function exist to keep the DRF's get/post pattern of {action}/perform_{action}, we will need it when we transition from using forms to serializers in the UI.
11708
12262
  User should override this function to handle any actions as needed before bulk update.</p>
11709
12263
 
@@ -11722,7 +12276,7 @@ User should override this function to handle any actions as needed before bulk u
11722
12276
 
11723
12277
  <div class="doc doc-contents ">
11724
12278
 
11725
- <p>request.POST "_edit": Function to render the user selection of objects in a table form/BulkUpdateForm via Response that is passed to NautobotHTMLRenderer.
12279
+ <p>request.POST "_edit": Function to render the user selection of objects in a table form/BulkUpdateForm via Response that is passed to NautobotHTMLRenderer.
11726
12280
  request.POST "_apply": Function to validate the table form/BulkUpdateForm and to perform the action of bulk update. Render the form with errors if exceptions are raised.</p>
11727
12281
 
11728
12282
  </div>
@@ -11750,10 +12304,15 @@ request.POST "_apply": Function to validate the table form/BulkUpdateForm and to
11750
12304
 
11751
12305
  <div class="doc doc-contents ">
11752
12306
  <p class="doc doc-class-bases">
11753
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code></p>
12307
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code></p>
12308
+
12309
+
12310
+ <p>UI mixin to list a model's changelog queryset</p>
12311
+
12312
+
12313
+
11754
12314
 
11755
12315
 
11756
- <p>UI mixin to list a model's changelog queryset</p>
11757
12316
 
11758
12317
 
11759
12318
 
@@ -11789,16 +12348,21 @@ request.POST "_apply": Function to validate the table form/BulkUpdateForm and to
11789
12348
 
11790
12349
  <div class="doc doc-contents ">
11791
12350
  <p class="doc doc-class-bases">
11792
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
12351
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
11793
12352
 
11794
12353
 
11795
- <p>Delete a single object.</p>
12354
+ <p>Delete a single object.</p>
11796
12355
  <p>queryset: The base queryset for the object being deleted
11797
12356
  template_name: The name of the template</p>
11798
12357
 
11799
12358
 
11800
12359
 
11801
12360
 
12361
+
12362
+
12363
+
12364
+
12365
+
11802
12366
  <div class="doc doc-children">
11803
12367
 
11804
12368
 
@@ -11820,7 +12384,7 @@ template_name: The name of the template</p>
11820
12384
 
11821
12385
  <div class="doc doc-contents ">
11822
12386
 
11823
- <p>Retrieve an object based on <code>kwargs</code>.</p>
12387
+ <p>Retrieve an object based on <code>kwargs</code>.</p>
11824
12388
 
11825
12389
  </div>
11826
12390
 
@@ -11847,10 +12411,15 @@ template_name: The name of the template</p>
11847
12411
 
11848
12412
  <div class="doc doc-contents ">
11849
12413
  <p class="doc doc-class-bases">
11850
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code>, <code><autoref identifier="rest_framework.mixins.DestroyModelMixin" optional hover>DestroyModelMixin</autoref></code></p>
12414
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code>, <code><span title="rest_framework.mixins.DestroyModelMixin">DestroyModelMixin</span></code></p>
12415
+
12416
+
12417
+ <p>UI mixin to destroy a model instance.</p>
12418
+
12419
+
12420
+
11851
12421
 
11852
12422
 
11853
- <p>UI mixin to destroy a model instance.</p>
11854
12423
 
11855
12424
 
11856
12425
 
@@ -11876,7 +12445,7 @@ template_name: The name of the template</p>
11876
12445
 
11877
12446
  <div class="doc doc-contents ">
11878
12447
 
11879
- <p>request.GET: render the ObjectDeleteConfirmationForm which is passed to NautobotHTMLRenderer as Response.
12448
+ <p>request.GET: render the ObjectDeleteConfirmationForm which is passed to NautobotHTMLRenderer as Response.
11880
12449
  request.POST: call perform_destroy() which validates the form and perform the action of delete.
11881
12450
  Override to add more variables to Response</p>
11882
12451
 
@@ -11895,7 +12464,7 @@ Override to add more variables to Response</p>
11895
12464
 
11896
12465
  <div class="doc doc-contents ">
11897
12466
 
11898
- <p>Function to validate the ObjectDeleteConfirmationForm and to delete the object.</p>
12467
+ <p>Function to validate the ObjectDeleteConfirmationForm and to delete the object.</p>
11899
12468
 
11900
12469
  </div>
11901
12470
 
@@ -11922,10 +12491,15 @@ Override to add more variables to Response</p>
11922
12491
 
11923
12492
  <div class="doc doc-contents ">
11924
12493
  <p class="doc doc-class-bases">
11925
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code>, <code><autoref identifier="rest_framework.mixins.RetrieveModelMixin" optional hover>RetrieveModelMixin</autoref></code></p>
12494
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code>, <code><span title="rest_framework.mixins.RetrieveModelMixin">RetrieveModelMixin</span></code></p>
12495
+
12496
+
12497
+ <p>UI mixin to retrieve a model instance.</p>
12498
+
12499
+
12500
+
11926
12501
 
11927
12502
 
11928
- <p>UI mixin to retrieve a model instance.</p>
11929
12503
 
11930
12504
 
11931
12505
 
@@ -11951,7 +12525,7 @@ Override to add more variables to Response</p>
11951
12525
 
11952
12526
  <div class="doc doc-contents ">
11953
12527
 
11954
- <p>Retrieve a model instance.</p>
12528
+ <p>Retrieve a model instance.</p>
11955
12529
 
11956
12530
  </div>
11957
12531
 
@@ -11978,15 +12552,20 @@ Override to add more variables to Response</p>
11978
12552
 
11979
12553
  <div class="doc doc-contents ">
11980
12554
  <p class="doc doc-class-bases">
11981
- Bases: <code><autoref identifier="nautobot.core.views.generic.GenericView" optional hover>GenericView</autoref></code></p>
12555
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.generic.GenericView" href="#nautobot.apps.views.GenericView">GenericView</a></code></p>
11982
12556
 
11983
12557
 
11984
- <p>Present a list of dynamic groups associated to a particular object.
12558
+ <p>Present a list of dynamic groups associated to a particular object.
11985
12559
  base_template: The name of the template to extend. If not provided, "<app>/<model>.html" will be used.</p>
11986
12560
 
11987
12561
 
11988
12562
 
11989
12563
 
12564
+
12565
+
12566
+
12567
+
12568
+
11990
12569
  <div class="doc doc-children">
11991
12570
 
11992
12571
 
@@ -12018,10 +12597,10 @@ base_template: The name of the template to extend. If not provided, "<app>/<mode
12018
12597
 
12019
12598
  <div class="doc doc-contents ">
12020
12599
  <p class="doc doc-class-bases">
12021
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
12600
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
12022
12601
 
12023
12602
 
12024
- <p>Create or edit a single object.</p>
12603
+ <p>Create or edit a single object.</p>
12025
12604
  <p>queryset: The base queryset for the object being modified
12026
12605
  model_form: The form used to create or edit the object
12027
12606
  template_name: The name of the template</p>
@@ -12029,6 +12608,11 @@ template_name: The name of the template</p>
12029
12608
 
12030
12609
 
12031
12610
 
12611
+
12612
+
12613
+
12614
+
12615
+
12032
12616
  <div class="doc doc-children">
12033
12617
 
12034
12618
 
@@ -12050,7 +12634,7 @@ template_name: The name of the template</p>
12050
12634
 
12051
12635
  <div class="doc doc-contents ">
12052
12636
 
12053
- <p>Return any additional context data for the template.</p>
12637
+ <p>Return any additional context data for the template.</p>
12054
12638
 
12055
12639
 
12056
12640
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -12065,9 +12649,11 @@ template_name: The name of the template</p>
12065
12649
  </thead>
12066
12650
  <tbody>
12067
12651
  <tr class="doc-section-item">
12068
- <td><code>request</code></td>
12069
12652
  <td>
12070
- <code><autoref identifier="HttpRequest" optional>HttpRequest</autoref></code>
12653
+ <code>request</code>
12654
+ </td>
12655
+ <td>
12656
+ <code>HttpRequest</code>
12071
12657
  </td>
12072
12658
  <td>
12073
12659
  <div class="doc-md-description">
@@ -12079,9 +12665,11 @@ template_name: The name of the template</p>
12079
12665
  </td>
12080
12666
  </tr>
12081
12667
  <tr class="doc-section-item">
12082
- <td><code>instance</code></td>
12083
12668
  <td>
12084
- <code><autoref identifier="Model" optional>Model</autoref></code>
12669
+ <code>instance</code>
12670
+ </td>
12671
+ <td>
12672
+ <code><span title="django.db.models.Model">Model</span></code>
12085
12673
  </td>
12086
12674
  <td>
12087
12675
  <div class="doc-md-description">
@@ -12107,7 +12695,7 @@ template_name: The name of the template</p>
12107
12695
  <tbody>
12108
12696
  <tr class="doc-section-item">
12109
12697
  <td>
12110
- <code><autoref identifier="dict" optional>dict</autoref></code>
12698
+ <code>dict</code>
12111
12699
  </td>
12112
12700
  <td>
12113
12701
  <div class="doc-md-description">
@@ -12133,7 +12721,7 @@ template_name: The name of the template</p>
12133
12721
 
12134
12722
  <div class="doc doc-contents ">
12135
12723
 
12136
- <p>Retrieve an object based on <code>kwargs</code>.</p>
12724
+ <p>Retrieve an object based on <code>kwargs</code>.</p>
12137
12725
 
12138
12726
  </div>
12139
12727
 
@@ -12150,7 +12738,7 @@ template_name: The name of the template</p>
12150
12738
 
12151
12739
  <div class="doc doc-contents ">
12152
12740
 
12153
- <p>Callback after the form is successfully saved but before redirecting the user.</p>
12741
+ <p>Callback after the form is successfully saved but before redirecting the user.</p>
12154
12742
 
12155
12743
  </div>
12156
12744
 
@@ -12177,10 +12765,15 @@ template_name: The name of the template</p>
12177
12765
 
12178
12766
  <div class="doc doc-contents ">
12179
12767
  <p class="doc doc-class-bases">
12180
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code>, <code><autoref identifier="rest_framework.mixins.CreateModelMixin" optional hover>CreateModelMixin</autoref></code>, <code><autoref identifier="rest_framework.mixins.UpdateModelMixin" optional hover>UpdateModelMixin</autoref></code></p>
12768
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code>, <code><span title="rest_framework.mixins.CreateModelMixin">CreateModelMixin</span></code>, <code><span title="rest_framework.mixins.UpdateModelMixin">UpdateModelMixin</span></code></p>
12769
+
12770
+
12771
+ <p>UI mixin to create or update a model instance.</p>
12772
+
12773
+
12774
+
12181
12775
 
12182
12776
 
12183
- <p>UI mixin to create or update a model instance.</p>
12184
12777
 
12185
12778
 
12186
12779
 
@@ -12206,7 +12799,7 @@ template_name: The name of the template</p>
12206
12799
 
12207
12800
  <div class="doc doc-contents ">
12208
12801
 
12209
- <p>request.GET: render the ObjectForm which is passed to NautobotHTMLRenderer as Response.
12802
+ <p>request.GET: render the ObjectForm which is passed to NautobotHTMLRenderer as Response.
12210
12803
  request.POST: call perform_create() which validates the form and perform the action of create.
12211
12804
  Override to add more variables to Response.</p>
12212
12805
 
@@ -12225,7 +12818,7 @@ Override to add more variables to Response.</p>
12225
12818
 
12226
12819
  <div class="doc doc-contents ">
12227
12820
 
12228
- <p>Append extra message at the end of create or update success message.</p>
12821
+ <p>Append extra message at the end of create or update success message.</p>
12229
12822
 
12230
12823
  </div>
12231
12824
 
@@ -12242,7 +12835,7 @@ Override to add more variables to Response.</p>
12242
12835
 
12243
12836
  <div class="doc doc-contents ">
12244
12837
 
12245
- <p>Context variables for this extra message.</p>
12838
+ <p>Context variables for this extra message.</p>
12246
12839
 
12247
12840
  </div>
12248
12841
 
@@ -12259,7 +12852,7 @@ Override to add more variables to Response.</p>
12259
12852
 
12260
12853
  <div class="doc doc-contents ">
12261
12854
 
12262
- <p>Function to validate the ObjectForm and to create a new object.</p>
12855
+ <p>Function to validate the ObjectForm and to create a new object.</p>
12263
12856
 
12264
12857
  </div>
12265
12858
 
@@ -12276,7 +12869,7 @@ Override to add more variables to Response.</p>
12276
12869
 
12277
12870
  <div class="doc doc-contents ">
12278
12871
 
12279
- <p>Function to validate the ObjectEditForm and to update/partial_update an existing object.</p>
12872
+ <p>Function to validate the ObjectEditForm and to update/partial_update an existing object.</p>
12280
12873
 
12281
12874
  </div>
12282
12875
 
@@ -12293,7 +12886,7 @@ Override to add more variables to Response.</p>
12293
12886
 
12294
12887
  <div class="doc doc-contents ">
12295
12888
 
12296
- <p>request.GET: render the ObjectEditForm which is passed to NautobotHTMLRenderer as Response.
12889
+ <p>request.GET: render the ObjectEditForm which is passed to NautobotHTMLRenderer as Response.
12297
12890
  request.POST: call perform_update() which validates the form and perform the action of update/partial_update of an existing object.
12298
12891
  Override to add more variables to Response.</p>
12299
12892
 
@@ -12322,10 +12915,10 @@ Override to add more variables to Response.</p>
12322
12915
 
12323
12916
  <div class="doc doc-contents ">
12324
12917
  <p class="doc doc-class-bases">
12325
- Bases: <code><autoref identifier="nautobot.core.views.mixins.GetReturnURLMixin" optional hover>GetReturnURLMixin</autoref></code>, <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
12918
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.GetReturnURLMixin" href="#nautobot.apps.views.GetReturnURLMixin">GetReturnURLMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
12326
12919
 
12327
12920
 
12328
- <p>Import a single object (YAML or JSON format).</p>
12921
+ <p>Import a single object (YAML or JSON format).</p>
12329
12922
  <p>queryset: Base queryset for the objects being created
12330
12923
  model_form: The ModelForm used to create individual objects
12331
12924
  related_object_forms: A dictionary mapping of forms to be used for the creation of related (child) objects
@@ -12334,6 +12927,11 @@ template_name: The name of the template</p>
12334
12927
 
12335
12928
 
12336
12929
 
12930
+
12931
+
12932
+
12933
+
12934
+
12337
12935
  <div class="doc doc-children">
12338
12936
 
12339
12937
 
@@ -12365,16 +12963,16 @@ template_name: The name of the template</p>
12365
12963
 
12366
12964
  <div class="doc doc-contents ">
12367
12965
  <p class="doc doc-class-bases">
12368
- Bases: <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
12966
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
12369
12967
 
12370
12968
 
12371
- <p>List a series of objects.</p>
12969
+ <p>List a series of objects.</p>
12372
12970
 
12373
12971
 
12374
12972
  <details class="queryset" open>
12375
12973
  <summary>The queryset of objects to display. Note: Prefetching related objects is not necessary, as the</summary>
12376
12974
  <p>table will prefetch objects as needed depending on the columns being displayed.</p>
12377
- </details> <p>filter: A django-filter FilterSet that is applied to the queryset
12975
+ </details> <p>filter: A django-filter FilterSet that is applied to the queryset
12378
12976
  filter_form: The form used to render filter options
12379
12977
  table: The django-tables2 Table used to render the objects list
12380
12978
  template_name: The name of the template
@@ -12383,6 +12981,11 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12383
12981
 
12384
12982
 
12385
12983
 
12984
+
12985
+
12986
+
12987
+
12988
+
12386
12989
  <div class="doc doc-children">
12387
12990
 
12388
12991
 
@@ -12404,7 +13007,7 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12404
13007
 
12405
13008
  <div class="doc doc-contents ">
12406
13009
 
12407
- <p>Helper function - take request.GET and discard any parameters that are not used for queryset filtering.</p>
13010
+ <p>Helper function - take request.GET and discard any parameters that are not used for queryset filtering.</p>
12408
13011
 
12409
13012
  </div>
12410
13013
 
@@ -12421,7 +13024,7 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12421
13024
 
12422
13025
  <div class="doc doc-contents ">
12423
13026
 
12424
- <p>Export the queryset of objects as concatenated YAML documents.</p>
13027
+ <p>Export the queryset of objects as concatenated YAML documents.</p>
12425
13028
 
12426
13029
  </div>
12427
13030
 
@@ -12438,7 +13041,7 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12438
13041
 
12439
13042
  <div class="doc doc-contents ">
12440
13043
 
12441
- <p>Verify actions in self.action_buttons are valid view actions.</p>
13044
+ <p>Verify actions in self.action_buttons are valid view actions.</p>
12442
13045
 
12443
13046
  </div>
12444
13047
 
@@ -12465,10 +13068,15 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12465
13068
 
12466
13069
  <div class="doc doc-contents ">
12467
13070
  <p class="doc doc-class-bases">
12468
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code>, <code><autoref identifier="rest_framework.mixins.ListModelMixin" optional hover>ListModelMixin</autoref></code></p>
13071
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code>, <code><span title="rest_framework.mixins.ListModelMixin">ListModelMixin</span></code></p>
13072
+
13073
+
13074
+ <p>UI mixin to list a model queryset</p>
13075
+
13076
+
13077
+
12469
13078
 
12470
13079
 
12471
- <p>UI mixin to list a model queryset</p>
12472
13080
 
12473
13081
 
12474
13082
 
@@ -12494,7 +13102,7 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12494
13102
 
12495
13103
  <div class="doc doc-contents ">
12496
13104
 
12497
- <p>Filter a query with request querystrings.</p>
13105
+ <p>Filter a query with request querystrings.</p>
12498
13106
 
12499
13107
  </div>
12500
13108
 
@@ -12511,7 +13119,7 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12511
13119
 
12512
13120
  <div class="doc doc-contents ">
12513
13121
 
12514
- <p>List the model instances.</p>
13122
+ <p>List the model instances.</p>
12515
13123
 
12516
13124
  </div>
12517
13125
 
@@ -12528,7 +13136,7 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12528
13136
 
12529
13137
  <div class="doc doc-contents ">
12530
13138
 
12531
- <p>Export the queryset of objects as concatenated YAML documents.</p>
13139
+ <p>Export the queryset of objects as concatenated YAML documents.</p>
12532
13140
 
12533
13141
  </div>
12534
13142
 
@@ -12555,15 +13163,20 @@ non_filter_params: List of query parameters that are <strong>not</strong> used f
12555
13163
 
12556
13164
  <div class="doc doc-contents ">
12557
13165
  <p class="doc doc-class-bases">
12558
- Bases: <code><autoref identifier="nautobot.core.views.generic.GenericView" optional hover>GenericView</autoref></code></p>
13166
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.generic.GenericView" href="#nautobot.apps.views.GenericView">GenericView</a></code></p>
12559
13167
 
12560
13168
 
12561
- <p>Present a list of notes associated to a particular object.
13169
+ <p>Present a list of notes associated to a particular object.
12562
13170
  base_template: The name of the template to extend. If not provided, "<app>/<model>.html" will be used.</p>
12563
13171
 
12564
13172
 
12565
13173
 
12566
13174
 
13175
+
13176
+
13177
+
13178
+
13179
+
12567
13180
  <div class="doc doc-children">
12568
13181
 
12569
13182
 
@@ -12595,10 +13208,15 @@ base_template: The name of the template to extend. If not provided, "<app>/<mode
12595
13208
 
12596
13209
  <div class="doc doc-contents ">
12597
13210
  <p class="doc doc-class-bases">
12598
- Bases: <code><autoref identifier="nautobot.core.views.mixins.NautobotViewSetMixin" optional hover>NautobotViewSetMixin</autoref></code></p>
13211
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.NautobotViewSetMixin" href="#nautobot.apps.views.NautobotViewSetMixin">NautobotViewSetMixin</a></code></p>
13212
+
13213
+
13214
+ <p>UI Mixin for an Object's Notes.</p>
13215
+
13216
+
13217
+
12599
13218
 
12600
13219
 
12601
- <p>UI Mixin for an Object's Notes.</p>
12602
13220
 
12603
13221
 
12604
13222
 
@@ -12634,10 +13252,10 @@ base_template: The name of the template to extend. If not provided, "<app>/<mode
12634
13252
 
12635
13253
  <div class="doc doc-contents ">
12636
13254
  <p class="doc doc-class-bases">
12637
- Bases: <code><autoref identifier="django.contrib.auth.mixins.AccessMixin" optional hover>AccessMixin</autoref></code></p>
13255
+ Bases: <code><span title="django.contrib.auth.mixins.AccessMixin">AccessMixin</span></code></p>
12638
13256
 
12639
13257
 
12640
- <p>Similar to Django's built-in PermissionRequiredMixin, but extended to check for both model-level and object-level
13258
+ <p>Similar to Django's built-in PermissionRequiredMixin, but extended to check for both model-level and object-level
12641
13259
  permission assignments. If the user has only object-level permissions assigned, the view's queryset is filtered
12642
13260
  to return only those objects on which the user is permitted to perform the specified action.</p>
12643
13261
 
@@ -12649,6 +13267,11 @@ to return only those objects on which the user is permitted to perform the speci
12649
13267
 
12650
13268
 
12651
13269
 
13270
+
13271
+
13272
+
13273
+
13274
+
12652
13275
  <div class="doc doc-children">
12653
13276
 
12654
13277
 
@@ -12670,7 +13293,7 @@ to return only those objects on which the user is permitted to perform the speci
12670
13293
 
12671
13294
  <div class="doc doc-contents ">
12672
13295
 
12673
- <p>Return the specific permission necessary to perform the requested action on an object.</p>
13296
+ <p>Return the specific permission necessary to perform the requested action on an object.</p>
12674
13297
 
12675
13298
  </div>
12676
13299
 
@@ -12697,16 +13320,21 @@ to return only those objects on which the user is permitted to perform the speci
12697
13320
 
12698
13321
  <div class="doc doc-contents ">
12699
13322
  <p class="doc doc-class-bases">
12700
- Bases: <code><autoref identifier="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" optional hover>ObjectPermissionRequiredMixin</autoref></code>, <code><autoref identifier="django.views.generic.View" optional hover>View</autoref></code></p>
13323
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.views.mixins.ObjectPermissionRequiredMixin" href="#nautobot.apps.views.ObjectPermissionRequiredMixin">ObjectPermissionRequiredMixin</a></code>, <code><span title="django.views.generic.View">View</span></code></p>
12701
13324
 
12702
13325
 
12703
- <p>Retrieve a single object for display.</p>
13326
+ <p>Retrieve a single object for display.</p>
12704
13327
  <p>queryset: The base queryset for retrieving the object
12705
13328
  template_name: Name of the template to use</p>
12706
13329
 
12707
13330
 
12708
13331
 
12709
13332
 
13333
+
13334
+
13335
+
13336
+
13337
+
12710
13338
  <div class="doc doc-children">
12711
13339
 
12712
13340
 
@@ -12728,7 +13356,7 @@ template_name: Name of the template to use</p>
12728
13356
 
12729
13357
  <div class="doc doc-contents ">
12730
13358
 
12731
- <p>Generic GET handler for accessing an object.</p>
13359
+ <p>Generic GET handler for accessing an object.</p>
12732
13360
 
12733
13361
  </div>
12734
13362
 
@@ -12745,7 +13373,7 @@ template_name: Name of the template to use</p>
12745
13373
 
12746
13374
  <div class="doc doc-contents ">
12747
13375
 
12748
- <p>Return any additional context data for the template.</p>
13376
+ <p>Return any additional context data for the template.</p>
12749
13377
 
12750
13378
 
12751
13379
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -12760,9 +13388,11 @@ template_name: Name of the template to use</p>
12760
13388
  </thead>
12761
13389
  <tbody>
12762
13390
  <tr class="doc-section-item">
12763
- <td><code>request</code></td>
12764
13391
  <td>
12765
- <code><autoref identifier="Request" optional>Request</autoref></code>
13392
+ <code>request</code>
13393
+ </td>
13394
+ <td>
13395
+ <code>Request</code>
12766
13396
  </td>
12767
13397
  <td>
12768
13398
  <div class="doc-md-description">
@@ -12774,9 +13404,11 @@ template_name: Name of the template to use</p>
12774
13404
  </td>
12775
13405
  </tr>
12776
13406
  <tr class="doc-section-item">
12777
- <td><code>instance</code></td>
12778
13407
  <td>
12779
- <code><autoref identifier="Model" optional>Model</autoref></code>
13408
+ <code>instance</code>
13409
+ </td>
13410
+ <td>
13411
+ <code><span title="django.db.models.Model">Model</span></code>
12780
13412
  </td>
12781
13413
  <td>
12782
13414
  <div class="doc-md-description">
@@ -12802,7 +13434,7 @@ template_name: Name of the template to use</p>
12802
13434
  <tbody>
12803
13435
  <tr class="doc-section-item">
12804
13436
  <td>
12805
- <code><autoref identifier="dict" optional>dict</autoref></code>
13437
+ <code>dict</code>
12806
13438
  </td>
12807
13439
  <td>
12808
13440
  <div class="doc-md-description">
@@ -12828,7 +13460,7 @@ template_name: Name of the template to use</p>
12828
13460
 
12829
13461
  <div class="doc doc-contents ">
12830
13462
 
12831
- <p>Return self.template_name if set. Otherwise, resolve the template path by model app_label and name.</p>
13463
+ <p>Return self.template_name if set. Otherwise, resolve the template path by model app_label and name.</p>
12832
13464
 
12833
13465
  </div>
12834
13466
 
@@ -12854,7 +13486,7 @@ template_name: Name of the template to use</p>
12854
13486
 
12855
13487
  <div class="doc doc-contents ">
12856
13488
 
12857
- <p>Helper for checking Git permissions and worker availability, then calling provided function if all is well
13489
+ <p>Helper for checking Git permissions and worker availability, then calling provided function if all is well
12858
13490
  Args:
12859
13491
  request (HttpRequest): request object.
12860
13492
  pk (UUID): GitRepository pk value.
@@ -12878,7 +13510,7 @@ Returns:
12878
13510
 
12879
13511
  <div class="doc doc-contents ">
12880
13512
 
12881
- <p>Return any additional context data for the template.</p>
13513
+ <p>Return any additional context data for the template.</p>
12882
13514
 
12883
13515
 
12884
13516
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -12893,9 +13525,11 @@ Returns:
12893
13525
  </thead>
12894
13526
  <tbody>
12895
13527
  <tr class="doc-section-item">
12896
- <td><code>filters</code></td>
12897
13528
  <td>
12898
- <code><autoref identifier="OrderedDict" optional>OrderedDict</autoref></code>
13529
+ <code>filters</code>
13530
+ </td>
13531
+ <td>
13532
+ <code>OrderedDict</code>
12899
13533
  </td>
12900
13534
  <td>
12901
13535
  <div class="doc-md-description">
@@ -12907,9 +13541,11 @@ Returns:
12907
13541
  </td>
12908
13542
  </tr>
12909
13543
  <tr class="doc-section-item">
12910
- <td><code>field_name</code></td>
12911
13544
  <td>
12912
- <code><autoref identifier="str" optional>str</autoref></code>
13545
+ <code>field_name</code>
13546
+ </td>
13547
+ <td>
13548
+ <code>str</code>
12913
13549
  </td>
12914
13550
  <td>
12915
13551
  <div class="doc-md-description">
@@ -12921,9 +13557,11 @@ Returns:
12921
13557
  </td>
12922
13558
  </tr>
12923
13559
  <tr class="doc-section-item">
12924
- <td><code>values</code></td>
12925
13560
  <td>
12926
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="str" optional>str</autoref>]</code>
13561
+ <code>values</code>
13562
+ </td>
13563
+ <td>
13564
+ <code>list[str]</code>
12927
13565
  </td>
12928
13566
  <td>
12929
13567
  <div class="doc-md-description">
@@ -12949,7 +13587,7 @@ Returns:
12949
13587
  <tbody>
12950
13588
  <tr class="doc-section-item">
12951
13589
  <td>
12952
- <code><autoref identifier="dict" optional>dict</autoref></code>
13590
+ <code>dict</code>
12953
13591
  </td>
12954
13592
  <td>
12955
13593
  <div class="doc-md-description">
@@ -12978,7 +13616,7 @@ Returns:
12978
13616
 
12979
13617
  <div class="doc doc-contents ">
12980
13618
 
12981
- <p>Convert the given list of data to a CSV row string.</p>
13619
+ <p>Convert the given list of data to a CSV row string.</p>
12982
13620
  <p>Encapsulate any data which contains a comma within double quotes.</p>
12983
13621
  <p>Obsolete, as CSV rendering in Nautobot core is now handled by nautobot.core.api.renderers.NautobotCSVRenderer.</p>
12984
13622
 
@@ -12997,7 +13635,26 @@ Returns:
12997
13635
 
12998
13636
  <div class="doc doc-contents ">
12999
13637
 
13000
- <p>From the given serializer class, build a list of field dicts suitable for rendering in the CSV import form.</p>
13638
+ <p>From the given serializer class, build a list of field dicts suitable for rendering in the CSV import form.</p>
13639
+
13640
+ </div>
13641
+
13642
+ </div>
13643
+
13644
+ <div class="doc doc-object doc-function">
13645
+
13646
+
13647
+ <h2 id="nautobot.apps.views.get_obj_from_context" class="doc doc-heading">
13648
+ <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">views</span><span class="o">.</span><span class="n">get_obj_from_context</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
13649
+
13650
+ <a href="#nautobot.apps.views.get_obj_from_context" class="headerlink" title="Permanent link">&para;</a></h2>
13651
+
13652
+
13653
+ <div class="doc doc-contents ">
13654
+
13655
+ <p>From the given context, return the <code>object</code> that is in the context.</p>
13656
+ <p>If a key is specified, return the value for that key.
13657
+ Otherwise return the value for either of the keys <code>"obj"</code> or <code>"object"</code> as default behavior.</p>
13001
13658
 
13002
13659
  </div>
13003
13660
 
@@ -13014,7 +13671,7 @@ Returns:
13014
13671
 
13015
13672
  <div class="doc doc-contents ">
13016
13673
 
13017
- <p>Determine the length of a page, using the following in order:</p>
13674
+ <p>Determine the length of a page, using the following in order:</p>
13018
13675
  <div class="highlight"><pre><span></span><code>1. per_page URL query parameter
13019
13676
  2. Saved view config
13020
13677
  3. Saved user preference
@@ -13036,7 +13693,7 @@ Returns:
13036
13693
 
13037
13694
  <div class="doc doc-contents ">
13038
13695
 
13039
- <p>Generate a user-friendly error message in response to a ProtectedError exception.</p>
13696
+ <p>Generate a user-friendly error message in response to a ProtectedError exception.</p>
13040
13697
 
13041
13698
  </div>
13042
13699
 
@@ -13053,7 +13710,7 @@ Returns:
13053
13710
 
13054
13711
  <div class="doc doc-contents ">
13055
13712
 
13056
- <p>Compile an object's <code>clone_fields</code> list into a string of URL query parameters. Tags are automatically cloned where
13713
+ <p>Compile an object's <code>clone_fields</code> list into a string of URL query parameters. Tags are automatically cloned where
13057
13714
  applicable.</p>
13058
13715
 
13059
13716
  </div>
@@ -13210,10 +13867,10 @@ applicable.</p>
13210
13867
  </div>
13211
13868
 
13212
13869
 
13213
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
13870
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
13214
13871
 
13215
13872
 
13216
- <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script>
13873
+ <script src="../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
13217
13874
 
13218
13875
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
13219
13876