nautobot 2.3.16__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 (721) 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 +140 -23
  32. nautobot/cloud/api/views.py +6 -10
  33. nautobot/cloud/factory.py +4 -1
  34. nautobot/cloud/tests/test_filters.py +5 -4
  35. nautobot/cloud/views.py +0 -16
  36. nautobot/core/api/constants.py +11 -0
  37. nautobot/core/api/filter_backends.py +3 -9
  38. nautobot/core/api/metadata.py +28 -256
  39. nautobot/core/api/pagination.py +3 -2
  40. nautobot/core/api/renderers.py +3 -0
  41. nautobot/core/api/schema.py +13 -2
  42. nautobot/core/api/serializers.py +45 -259
  43. nautobot/core/api/urls.py +3 -4
  44. nautobot/core/api/utils.py +0 -62
  45. nautobot/core/api/views.py +99 -157
  46. nautobot/core/apps/__init__.py +22 -578
  47. nautobot/core/celery/__init__.py +13 -0
  48. nautobot/core/celery/schedulers.py +47 -2
  49. nautobot/core/choices.py +2 -2
  50. nautobot/core/cli/__init__.py +8 -0
  51. nautobot/core/constants.py +7 -0
  52. nautobot/core/events/__init__.py +116 -0
  53. nautobot/core/events/base.py +27 -0
  54. nautobot/core/events/exceptions.py +10 -0
  55. nautobot/core/events/redis_broker.py +48 -0
  56. nautobot/core/events/syslog_broker.py +19 -0
  57. nautobot/core/exceptions.py +0 -6
  58. nautobot/core/forms/__init__.py +19 -19
  59. nautobot/core/forms/fields.py +57 -9
  60. nautobot/core/forms/forms.py +33 -2
  61. nautobot/core/forms/utils.py +2 -1
  62. nautobot/core/graphql/schema.py +3 -1
  63. nautobot/core/jobs/__init__.py +24 -3
  64. nautobot/core/jobs/bulk_actions.py +248 -0
  65. nautobot/core/jobs/cleanup.py +1 -1
  66. nautobot/core/management/commands/generate_test_data.py +21 -0
  67. nautobot/core/middleware.py +16 -0
  68. nautobot/core/models/fields.py +11 -7
  69. nautobot/core/settings.py +68 -4
  70. nautobot/core/settings.yaml +99 -0
  71. nautobot/core/tables.py +10 -46
  72. nautobot/core/tasks.py +1 -1
  73. nautobot/core/templates/about.html +67 -0
  74. nautobot/core/templates/components/button/default.html +7 -0
  75. nautobot/core/templates/components/button/dropdown.html +20 -0
  76. nautobot/core/templates/components/layout/one_over_two.html +19 -0
  77. nautobot/core/templates/components/layout/two_over_one.html +19 -0
  78. nautobot/core/templates/components/panel/body_content_data_table.html +27 -0
  79. nautobot/core/templates/components/panel/body_content_objects_table.html +4 -0
  80. nautobot/core/templates/components/panel/body_content_tags.html +6 -0
  81. nautobot/core/templates/components/panel/body_content_text.html +12 -0
  82. nautobot/core/templates/components/panel/body_wrapper_generic.html +3 -0
  83. nautobot/core/templates/components/panel/body_wrapper_key_value_table.html +3 -0
  84. nautobot/core/templates/components/panel/body_wrapper_table.html +3 -0
  85. nautobot/core/templates/components/panel/footer_contacts_table.html +20 -0
  86. nautobot/core/templates/components/panel/footer_content_table.html +14 -0
  87. nautobot/core/templates/components/panel/grouping_toggle.html +14 -0
  88. nautobot/core/templates/components/panel/header_extra_content_table.html +3 -0
  89. nautobot/core/templates/components/panel/panel.html +16 -0
  90. nautobot/core/templates/components/panel/stats_panel_body.html +8 -0
  91. nautobot/core/templates/components/tab/content_wrapper.html +3 -0
  92. nautobot/core/templates/components/tab/label_wrapper.html +5 -0
  93. nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +3 -0
  94. nautobot/core/templates/generic/object_retrieve.html +28 -17
  95. nautobot/core/templates/inc/computed_fields/panel_data.html +4 -7
  96. nautobot/core/templates/inc/custom_fields/panel.html +2 -2
  97. nautobot/core/templates/inc/custom_fields/panel_data.html +4 -7
  98. nautobot/core/templates/inc/footer.html +1 -0
  99. nautobot/core/templates/inc/nav_menu.html +2 -1
  100. nautobot/core/templates/inc/relationships_panel.html +1 -1
  101. nautobot/core/templates/inc/tenancy_form_panel.html +9 -0
  102. nautobot/core/templates/inc/tenant_table_row.html +11 -0
  103. nautobot/core/templates/nautobot_config.py.j2 +13 -0
  104. nautobot/core/templates/panel_table.html +12 -0
  105. nautobot/core/templates/utilities/render_jinja2.html +117 -0
  106. nautobot/core/templates/utilities/templatetags/tag.html +1 -1
  107. nautobot/core/templates/utilities/theme_preview.html +7 -0
  108. nautobot/core/templatetags/helpers.py +104 -6
  109. nautobot/core/templatetags/ui_framework.py +40 -0
  110. nautobot/core/testing/__init__.py +8 -8
  111. nautobot/core/testing/api.py +187 -137
  112. nautobot/core/testing/context.py +18 -0
  113. nautobot/core/testing/filters.py +41 -35
  114. nautobot/core/testing/forms.py +2 -0
  115. nautobot/core/testing/views.py +65 -148
  116. nautobot/core/tests/integration/test_view_authentication.py +1 -1
  117. nautobot/core/tests/nautobot_config.py +198 -0
  118. nautobot/core/tests/runner.py +2 -2
  119. nautobot/core/tests/test_api.py +154 -176
  120. nautobot/core/tests/test_events.py +214 -0
  121. nautobot/core/tests/test_forms.py +1 -0
  122. nautobot/core/tests/test_jinja_filters.py +1 -0
  123. nautobot/core/tests/test_jobs.py +387 -14
  124. nautobot/core/tests/test_navigations.py +7 -241
  125. nautobot/core/tests/test_settings_schema.py +7 -0
  126. nautobot/core/tests/test_tables.py +100 -0
  127. nautobot/core/tests/test_templatetags_helpers.py +16 -0
  128. nautobot/core/tests/test_ui.py +150 -0
  129. nautobot/core/tests/test_utils.py +55 -18
  130. nautobot/core/tests/test_views.py +124 -5
  131. nautobot/core/ui/__init__.py +0 -0
  132. nautobot/core/ui/base.py +11 -0
  133. nautobot/core/ui/choices.py +44 -0
  134. nautobot/core/ui/homepage.py +167 -0
  135. nautobot/core/ui/nav.py +280 -0
  136. nautobot/core/ui/object_detail.py +1855 -0
  137. nautobot/core/ui/utils.py +36 -0
  138. nautobot/core/urls.py +6 -0
  139. nautobot/core/utils/config.py +30 -3
  140. nautobot/core/utils/lookup.py +12 -2
  141. nautobot/core/utils/querysets.py +64 -0
  142. nautobot/core/utils/requests.py +24 -9
  143. nautobot/core/views/__init__.py +48 -1
  144. nautobot/core/views/generic.py +37 -140
  145. nautobot/core/views/mixins.py +82 -32
  146. nautobot/core/views/paginator.py +8 -5
  147. nautobot/core/views/renderers.py +9 -9
  148. nautobot/core/views/utils.py +11 -0
  149. nautobot/core/wsgi.py +3 -3
  150. nautobot/dcim/api/serializers.py +34 -141
  151. nautobot/dcim/api/urls.py +5 -0
  152. nautobot/dcim/api/views.py +57 -110
  153. nautobot/dcim/apps.py +1 -0
  154. nautobot/dcim/choices.py +28 -0
  155. nautobot/dcim/factory.py +58 -0
  156. nautobot/dcim/filters/__init__.py +204 -2
  157. nautobot/dcim/forms.py +219 -9
  158. nautobot/dcim/migrations/0063_interfacevdcassignment_virtualdevicecontext_and_more.py +165 -0
  159. nautobot/dcim/migrations/0064_virtualdevicecontext_status_data_migration.py +28 -0
  160. nautobot/dcim/migrations/0065_controller_capabilities_and_more.py +29 -0
  161. nautobot/dcim/migrations/0066_controllermanageddevicegroup_radio_profiles_and_more.py +33 -0
  162. nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +25 -0
  163. nautobot/dcim/models/__init__.py +5 -1
  164. nautobot/dcim/models/devices.py +180 -2
  165. nautobot/dcim/models/racks.py +2 -2
  166. nautobot/dcim/navigation.py +25 -224
  167. nautobot/dcim/signals.py +44 -0
  168. nautobot/dcim/tables/__init__.py +2 -0
  169. nautobot/dcim/tables/devices.py +103 -7
  170. nautobot/dcim/tables/racks.py +1 -1
  171. nautobot/dcim/templates/dcim/controller/base.html +10 -0
  172. nautobot/dcim/templates/dcim/controller_create.html +2 -7
  173. nautobot/dcim/templates/dcim/controller_retrieve.html +6 -10
  174. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +25 -0
  175. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +68 -0
  176. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +51 -0
  177. nautobot/dcim/templates/dcim/device/base.html +6 -42
  178. nautobot/dcim/templates/dcim/device/wireless.html +73 -0
  179. nautobot/dcim/templates/dcim/device.html +4 -10
  180. nautobot/dcim/templates/dcim/device_edit.html +36 -37
  181. nautobot/dcim/templates/dcim/interface.html +1 -0
  182. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  183. nautobot/dcim/templates/dcim/location.html +1 -9
  184. nautobot/dcim/templates/dcim/location_edit.html +1 -7
  185. nautobot/dcim/templates/dcim/locationtype.html +0 -107
  186. nautobot/dcim/templates/dcim/locationtype_retrieve.html +8 -0
  187. nautobot/dcim/templates/dcim/rack.html +1 -9
  188. nautobot/dcim/templates/dcim/rack_edit.html +1 -7
  189. nautobot/dcim/templates/dcim/rackreservation.html +1 -9
  190. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +68 -0
  191. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +28 -0
  192. nautobot/dcim/tests/integration/test_controller.py +62 -0
  193. nautobot/dcim/tests/integration/test_controller_managed_device_group.py +71 -0
  194. nautobot/dcim/tests/test_api.py +188 -64
  195. nautobot/dcim/tests/test_filters.py +171 -76
  196. nautobot/dcim/tests/test_jobs.py +118 -0
  197. nautobot/dcim/tests/test_models.py +157 -6
  198. nautobot/dcim/tests/test_signals.py +1 -0
  199. nautobot/dcim/tests/test_views.py +118 -88
  200. nautobot/dcim/urls.py +72 -27
  201. nautobot/dcim/utils.py +2 -2
  202. nautobot/dcim/views.py +356 -61
  203. nautobot/extras/api/serializers.py +39 -18
  204. nautobot/extras/api/urls.py +4 -0
  205. nautobot/extras/api/views.py +89 -31
  206. nautobot/extras/choices.py +13 -0
  207. nautobot/extras/constants.py +2 -1
  208. nautobot/extras/context_managers.py +23 -6
  209. nautobot/extras/datasources/git.py +4 -1
  210. nautobot/extras/factory.py +27 -0
  211. nautobot/extras/filters/__init__.py +66 -5
  212. nautobot/extras/forms/base.py +2 -2
  213. nautobot/extras/forms/forms.py +262 -59
  214. nautobot/extras/forms/mixins.py +2 -2
  215. nautobot/extras/graphql/types.py +25 -1
  216. nautobot/extras/jobs.py +109 -15
  217. nautobot/extras/management/__init__.py +1 -0
  218. nautobot/extras/management/commands/runjob.py +7 -79
  219. nautobot/extras/management/commands/runjob_with_job_result.py +46 -0
  220. nautobot/extras/management/utils.py +87 -0
  221. nautobot/extras/migrations/0117_create_job_queue_model.py +129 -0
  222. nautobot/extras/migrations/0118_task_queue_to_job_queue_migration.py +78 -0
  223. nautobot/extras/migrations/0119_remove_task_queues_from_job_and_queue_from_scheduled_job.py +28 -0
  224. nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +22 -0
  225. nautobot/extras/migrations/0121_alter_team_contacts.py +17 -0
  226. nautobot/extras/models/__init__.py +5 -1
  227. nautobot/extras/models/change_logging.py +7 -3
  228. nautobot/extras/models/contacts.py +1 -1
  229. nautobot/extras/models/groups.py +0 -2
  230. nautobot/extras/models/jobs.py +233 -33
  231. nautobot/extras/models/relationships.py +69 -1
  232. nautobot/extras/models/secrets.py +5 -0
  233. nautobot/extras/navigation.py +20 -262
  234. nautobot/extras/plugins/__init__.py +54 -19
  235. nautobot/extras/plugins/marketplace_manifest.yml +455 -0
  236. nautobot/extras/plugins/tables.py +16 -14
  237. nautobot/extras/plugins/urls.py +1 -0
  238. nautobot/extras/plugins/views.py +103 -60
  239. nautobot/extras/registry.py +1 -1
  240. nautobot/extras/secrets/__init__.py +2 -2
  241. nautobot/extras/signals.py +39 -1
  242. nautobot/extras/tables.py +37 -1
  243. nautobot/extras/templates/extras/dynamicgroup.html +1 -9
  244. nautobot/extras/templates/extras/externalintegration_retrieve.html +0 -47
  245. nautobot/extras/templates/extras/inc/tags_panel.html +1 -5
  246. nautobot/extras/templates/extras/job_bulk_edit.html +2 -1
  247. nautobot/extras/templates/extras/job_detail.html +52 -6
  248. nautobot/extras/templates/extras/job_edit.html +6 -2
  249. nautobot/extras/templates/extras/job_list.html +2 -7
  250. nautobot/extras/templates/extras/jobqueue_retrieve.html +36 -0
  251. nautobot/extras/templates/extras/marketplace.html +296 -0
  252. nautobot/extras/templates/extras/plugin_detail.html +32 -15
  253. nautobot/extras/templates/extras/plugins_list.html +35 -1
  254. nautobot/extras/templates/extras/plugins_tiles.html +90 -0
  255. nautobot/extras/templates/extras/role_retrieve.html +16 -0
  256. nautobot/extras/templates/extras/secret.html +0 -65
  257. nautobot/extras/templates/extras/secret_check.js +16 -0
  258. nautobot/extras/templates/extras/secret_create.html +114 -0
  259. nautobot/extras/templates/extras/secret_edit.html +1 -114
  260. nautobot/extras/templates/extras/secretsgroup_edit.html +1 -1
  261. nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +2 -0
  262. nautobot/extras/templatetags/job_buttons.py +5 -4
  263. nautobot/extras/templatetags/plugins.py +69 -6
  264. nautobot/extras/test_jobs/singleton.py +16 -0
  265. nautobot/extras/tests/test_api.py +145 -43
  266. nautobot/extras/tests/test_context_managers.py +4 -1
  267. nautobot/extras/tests/test_filters.py +213 -529
  268. nautobot/extras/tests/test_job_variables.py +73 -152
  269. nautobot/extras/tests/test_jobs.py +181 -51
  270. nautobot/extras/tests/test_models.py +61 -6
  271. nautobot/extras/tests/test_plugins.py +62 -9
  272. nautobot/extras/tests/test_relationships.py +123 -9
  273. nautobot/extras/tests/test_utils.py +23 -2
  274. nautobot/extras/tests/test_views.py +146 -145
  275. nautobot/extras/tests/test_webhooks.py +2 -1
  276. nautobot/extras/urls.py +2 -20
  277. nautobot/extras/utils.py +119 -4
  278. nautobot/extras/views.py +168 -125
  279. nautobot/extras/webhooks.py +5 -2
  280. nautobot/ipam/api/serializers.py +10 -103
  281. nautobot/ipam/api/views.py +31 -49
  282. nautobot/ipam/factory.py +1 -1
  283. nautobot/ipam/filters.py +3 -2
  284. nautobot/ipam/models.py +10 -12
  285. nautobot/ipam/navigation.py +0 -90
  286. nautobot/ipam/tables.py +3 -1
  287. nautobot/ipam/templates/ipam/ipaddress.html +1 -9
  288. nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +1 -7
  289. nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -7
  290. nautobot/ipam/templates/ipam/prefix.html +1 -9
  291. nautobot/ipam/templates/ipam/prefix_edit.html +1 -7
  292. nautobot/ipam/templates/ipam/routetarget.html +0 -28
  293. nautobot/ipam/templates/ipam/vlan.html +1 -9
  294. nautobot/ipam/templates/ipam/vlan_edit.html +1 -7
  295. nautobot/ipam/templates/ipam/vrf.html +0 -47
  296. nautobot/ipam/templates/ipam/vrf_edit.html +1 -7
  297. nautobot/ipam/tests/test_api.py +7 -5
  298. nautobot/ipam/tests/test_filters.py +39 -119
  299. nautobot/ipam/tests/test_forms.py +0 -2
  300. nautobot/ipam/tests/test_models.py +56 -36
  301. nautobot/ipam/tests/test_views.py +3 -0
  302. nautobot/ipam/urls.py +3 -69
  303. nautobot/ipam/utils/__init__.py +16 -10
  304. nautobot/ipam/views.py +91 -162
  305. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
  306. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
  307. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +40 -2
  308. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
  309. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
  310. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
  311. nautobot/project-static/css/base.css +38 -3
  312. nautobot/project-static/docs/404.html +461 -17
  313. nautobot/project-static/docs/apps/index.html +461 -17
  314. nautobot/project-static/docs/apps/nautobot-apps.html +462 -19
  315. nautobot/project-static/docs/assets/_mkdocstrings.css +25 -1
  316. nautobot/project-static/docs/assets/extra.css +5 -1
  317. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +477 -23
  318. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +474 -20
  319. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +790 -289
  320. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +505 -31
  321. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +510 -34
  322. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +471 -20
  323. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +467 -18
  324. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +497 -33
  325. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9883 -0
  326. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +523 -75
  327. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +546 -51
  328. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +670 -94
  329. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1030 -177
  330. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +524 -49
  331. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +874 -188
  332. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +955 -235
  333. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +475 -21
  334. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +486 -28
  335. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +661 -99
  336. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +947 -479
  337. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +6425 -1234
  338. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +474 -20
  339. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +877 -344
  340. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +828 -171
  341. nautobot/project-static/docs/development/apps/api/configuration-view.html +461 -17
  342. nautobot/project-static/docs/development/apps/api/database-backend-config.html +461 -17
  343. nautobot/project-static/docs/development/apps/api/models/django-admin.html +461 -17
  344. nautobot/project-static/docs/development/apps/api/models/global-search.html +461 -17
  345. nautobot/project-static/docs/development/apps/api/models/graphql.html +461 -17
  346. nautobot/project-static/docs/development/apps/api/models/index.html +461 -17
  347. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +461 -17
  348. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +461 -17
  349. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +461 -17
  350. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +461 -17
  351. nautobot/project-static/docs/development/apps/api/platform-features/index.html +461 -17
  352. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +461 -17
  353. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +461 -17
  354. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +461 -17
  355. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +461 -17
  356. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +461 -17
  357. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +461 -17
  358. nautobot/project-static/docs/development/apps/api/prometheus.html +461 -17
  359. nautobot/project-static/docs/development/apps/api/setup.html +465 -153
  360. nautobot/project-static/docs/development/apps/api/testing.html +461 -17
  361. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +461 -17
  362. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +461 -17
  363. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +461 -17
  364. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +461 -17
  365. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +741 -128
  366. nautobot/project-static/docs/development/apps/api/views/base-template.html +461 -17
  367. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +461 -17
  368. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +461 -17
  369. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +461 -17
  370. nautobot/project-static/docs/development/apps/api/views/index.html +463 -18
  371. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +465 -17
  372. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +491 -17
  373. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +461 -17
  374. nautobot/project-static/docs/development/apps/api/views/notes.html +461 -17
  375. nautobot/project-static/docs/development/apps/api/views/rest-api.html +467 -19
  376. nautobot/project-static/docs/development/apps/api/views/urls.html +461 -17
  377. nautobot/project-static/docs/development/apps/index.html +461 -17
  378. nautobot/project-static/docs/development/apps/migration/code-updates.html +462 -50
  379. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +462 -18
  380. nautobot/project-static/docs/development/apps/migration/from-v1.html +461 -17
  381. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +461 -17
  382. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +461 -17
  383. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +461 -17
  384. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +464 -20
  385. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9261 -0
  386. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +9375 -0
  387. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +9671 -0
  388. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +9559 -0
  389. nautobot/project-static/docs/development/apps/porting-from-netbox.html +464 -20
  390. nautobot/project-static/docs/development/core/application-registry.html +461 -17
  391. nautobot/project-static/docs/development/core/best-practices.html +461 -17
  392. nautobot/project-static/docs/development/core/bootstrap-ui.html +461 -17
  393. nautobot/project-static/docs/development/core/caching.html +461 -17
  394. nautobot/project-static/docs/development/core/controllers.html +463 -17
  395. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +464 -20
  396. nautobot/project-static/docs/development/core/generic-views.html +461 -17
  397. nautobot/project-static/docs/development/core/getting-started.html +539 -127
  398. nautobot/project-static/docs/development/core/homepage.html +472 -28
  399. nautobot/project-static/docs/development/core/index.html +461 -17
  400. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9754 -0
  401. nautobot/project-static/docs/development/core/model-checklist.html +471 -25
  402. nautobot/project-static/docs/development/core/model-features.html +461 -17
  403. nautobot/project-static/docs/development/core/natural-keys.html +461 -17
  404. nautobot/project-static/docs/development/core/navigation-menu.html +478 -24
  405. nautobot/project-static/docs/development/core/release-checklist.html +478 -46
  406. nautobot/project-static/docs/development/core/role-internals.html +461 -17
  407. nautobot/project-static/docs/development/core/settings.html +461 -17
  408. nautobot/project-static/docs/development/core/style-guide.html +464 -20
  409. nautobot/project-static/docs/development/core/templates.html +471 -20
  410. nautobot/project-static/docs/development/core/testing.html +461 -17
  411. nautobot/project-static/docs/development/core/ui-component-framework.html +11116 -0
  412. nautobot/project-static/docs/development/core/user-preferences.html +464 -20
  413. nautobot/project-static/docs/development/index.html +461 -17
  414. nautobot/project-static/docs/development/jobs/index.html +499 -19
  415. nautobot/project-static/docs/development/jobs/migration/from-v1.html +461 -17
  416. nautobot/project-static/docs/index.html +469 -36
  417. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
  418. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
  419. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
  420. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
  421. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
  422. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
  423. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
  424. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
  425. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
  426. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
  427. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
  428. nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
  429. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
  430. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
  431. nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
  432. nautobot/project-static/docs/media/development/core/ui-component-framework/basic-panel-layout.png +0 -0
  433. nautobot/project-static/docs/media/development/core/ui-component-framework/button-example.png +0 -0
  434. nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
  435. nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
  436. nautobot/project-static/docs/media/development/core/ui-component-framework/dropdown-button-example.png +0 -0
  437. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-1.png +0 -0
  438. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-2.png +0 -0
  439. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example.png +0 -0
  440. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
  441. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
  442. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example.png +0 -0
  443. nautobot/project-static/docs/media/development/core/ui-component-framework/table-panels-family.png +0 -0
  444. nautobot/project-static/docs/media/development/core/ui-component-framework/text-panels-family.png +0 -0
  445. nautobot/project-static/docs/media/development/core/ui-component-framework/ui-framework-example.png +0 -0
  446. nautobot/project-static/docs/media/models/virtual_device_context_overview.drawio +73 -0
  447. nautobot/project-static/docs/media/models/virtual_device_context_overview.png +0 -0
  448. nautobot/project-static/docs/models/dcim/virtualdevicecontext.html +14 -0
  449. nautobot/project-static/docs/models/extras/jobqueue.html +14 -0
  450. nautobot/project-static/docs/models/wireless/radioprofile.html +14 -0
  451. nautobot/project-static/docs/models/wireless/supporteddatarate.html +14 -0
  452. nautobot/project-static/docs/models/wireless/wirelessnetwork.html +14 -0
  453. nautobot/project-static/docs/objects.inv +0 -0
  454. nautobot/project-static/docs/overview/application_stack.html +467 -21
  455. nautobot/project-static/docs/overview/design_philosophy.html +461 -17
  456. nautobot/project-static/docs/release-notes/index.html +483 -20
  457. nautobot/project-static/docs/release-notes/version-1.0.html +649 -206
  458. nautobot/project-static/docs/release-notes/version-1.1.html +646 -203
  459. nautobot/project-static/docs/release-notes/version-1.2.html +721 -278
  460. nautobot/project-static/docs/release-notes/version-1.3.html +747 -304
  461. nautobot/project-static/docs/release-notes/version-1.4.html +832 -390
  462. nautobot/project-static/docs/release-notes/version-1.5.html +1020 -579
  463. nautobot/project-static/docs/release-notes/version-1.6.html +940 -516
  464. nautobot/project-static/docs/release-notes/version-2.0.html +943 -502
  465. nautobot/project-static/docs/release-notes/version-2.1.html +778 -337
  466. nautobot/project-static/docs/release-notes/version-2.2.html +771 -330
  467. nautobot/project-static/docs/release-notes/version-2.3.html +914 -471
  468. nautobot/project-static/docs/release-notes/version-2.4.html +10323 -0
  469. nautobot/project-static/docs/search/search_index.json +1 -1
  470. nautobot/project-static/docs/sitemap.xml +342 -270
  471. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  472. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +461 -17
  473. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +461 -17
  474. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +461 -17
  475. nautobot/project-static/docs/user-guide/administration/configuration/index.html +473 -30
  476. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +461 -17
  477. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +842 -155
  478. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +461 -17
  479. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +461 -17
  480. nautobot/project-static/docs/user-guide/administration/guides/docker.html +474 -27
  481. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +461 -17
  482. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +461 -17
  483. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +461 -17
  484. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +461 -17
  485. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +461 -17
  486. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +463 -19
  487. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +461 -17
  488. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +461 -17
  489. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +461 -17
  490. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +481 -21
  491. nautobot/project-static/docs/user-guide/administration/installation/index.html +466 -18
  492. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +462 -18
  493. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +461 -17
  494. nautobot/project-static/docs/user-guide/administration/installation/services.html +461 -17
  495. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +461 -17
  496. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +482 -39
  497. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +475 -64
  498. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +475 -64
  499. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +461 -17
  500. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +461 -17
  501. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +461 -17
  502. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +461 -17
  503. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +461 -17
  504. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +464 -21
  505. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +461 -17
  506. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-nautobot-app-location.yaml +0 -16
  507. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +461 -17
  508. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +467 -19
  509. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +461 -17
  510. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +461 -17
  511. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +461 -17
  512. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +461 -17
  513. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +461 -17
  514. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +461 -17
  515. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +461 -17
  516. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +461 -17
  517. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +461 -17
  518. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +461 -17
  519. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +461 -17
  520. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +461 -17
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +461 -17
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +461 -17
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +461 -17
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +461 -17
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +461 -17
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +497 -18
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +487 -20
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +461 -17
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +461 -17
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +461 -17
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +461 -17
  532. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +461 -17
  533. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +461 -17
  534. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +461 -17
  535. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +461 -17
  536. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +461 -17
  537. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +461 -17
  538. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +461 -17
  539. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +461 -17
  540. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +461 -17
  541. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +461 -17
  542. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +461 -17
  543. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +461 -17
  544. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +461 -17
  545. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +461 -17
  546. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +461 -17
  547. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +461 -17
  548. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +461 -17
  549. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +461 -17
  550. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +461 -17
  551. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +461 -17
  552. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +461 -17
  553. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +461 -17
  554. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +461 -17
  555. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +461 -17
  556. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +461 -17
  557. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +461 -17
  558. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +461 -17
  559. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +461 -17
  560. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +461 -17
  561. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +461 -17
  562. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9375 -0
  563. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +468 -28
  564. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +461 -17
  565. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +461 -17
  566. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +461 -17
  567. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +461 -17
  568. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +461 -17
  569. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +461 -17
  570. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +461 -17
  571. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +461 -17
  572. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +461 -17
  573. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +461 -17
  574. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +461 -17
  575. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +461 -17
  576. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +464 -20
  577. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +461 -17
  578. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +461 -17
  579. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +461 -17
  580. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +461 -17
  581. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +461 -17
  582. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +461 -17
  583. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +464 -20
  584. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9313 -0
  585. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9217 -0
  586. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9211 -0
  587. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9277 -0
  588. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +461 -17
  589. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +461 -17
  590. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +461 -17
  591. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +461 -17
  592. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +461 -17
  593. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +461 -17
  594. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +461 -17
  595. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +461 -17
  596. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +461 -17
  597. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +461 -17
  598. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +461 -17
  599. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +466 -20
  600. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +461 -17
  601. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
  602. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
  603. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
  604. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
  605. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
  606. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
  607. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
  608. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
  609. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
  610. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
  611. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
  612. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
  613. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
  614. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +461 -17
  615. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +461 -17
  616. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +464 -20
  617. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +9444 -0
  618. nautobot/project-static/docs/user-guide/index.html +461 -17
  619. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +464 -20
  620. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +465 -21
  621. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +461 -17
  622. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +461 -17
  623. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +461 -17
  624. nautobot/project-static/docs/user-guide/platform-functionality/events.html +9617 -0
  625. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +464 -20
  626. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +461 -17
  627. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +461 -17
  628. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +461 -17
  629. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +461 -17
  630. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +461 -17
  631. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +470 -21
  632. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +464 -20
  633. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +464 -20
  634. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +461 -17
  635. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9224 -0
  636. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9722 -0
  637. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +464 -20
  638. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +461 -17
  639. nautobot/project-static/docs/user-guide/platform-functionality/note.html +461 -17
  640. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +461 -17
  641. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +465 -21
  642. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9292 -0
  643. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +461 -17
  644. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +509 -38
  645. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +492 -21
  646. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +461 -17
  647. nautobot/project-static/docs/user-guide/platform-functionality/role.html +461 -17
  648. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +461 -17
  649. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +461 -17
  650. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +464 -20
  651. nautobot/project-static/docs/user-guide/platform-functionality/status.html +461 -17
  652. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +461 -17
  653. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +529 -54
  654. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +461 -17
  655. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +461 -17
  656. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +461 -17
  657. nautobot/project-static/img/jinja_logo.svg +97 -0
  658. nautobot/project-static/js/forms.js +6 -1
  659. nautobot/project-static/js/nav_menu.js +2 -1
  660. nautobot/tenancy/api/serializers.py +0 -2
  661. nautobot/tenancy/api/views.py +9 -13
  662. nautobot/tenancy/factory.py +1 -1
  663. nautobot/tenancy/navigation.py +0 -29
  664. nautobot/tenancy/templates/tenancy/tenant.html +4 -91
  665. nautobot/tenancy/tests/test_filters.py +29 -134
  666. nautobot/tenancy/views.py +35 -24
  667. nautobot/users/admin.py +2 -0
  668. nautobot/users/api/views.py +2 -2
  669. nautobot/users/forms.py +19 -0
  670. nautobot/users/templates/users/preferences.html +22 -0
  671. nautobot/users/tests/test_filters.py +1 -19
  672. nautobot/users/tests/test_views.py +57 -0
  673. nautobot/users/utils.py +8 -0
  674. nautobot/users/views.py +48 -11
  675. nautobot/virtualization/api/views.py +5 -24
  676. nautobot/virtualization/filters.py +1 -2
  677. nautobot/virtualization/models.py +1 -1
  678. nautobot/virtualization/navigation.py +0 -48
  679. nautobot/virtualization/tables.py +2 -2
  680. nautobot/virtualization/templates/virtualization/cluster_edit.html +1 -7
  681. nautobot/virtualization/templates/virtualization/clustertype.html +0 -39
  682. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -9
  683. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -8
  684. nautobot/virtualization/tests/test_filters.py +57 -166
  685. nautobot/virtualization/views.py +18 -15
  686. nautobot/wireless/__init__.py +0 -0
  687. nautobot/wireless/api/__init__.py +0 -0
  688. nautobot/wireless/api/serializers.py +44 -0
  689. nautobot/wireless/api/urls.py +20 -0
  690. nautobot/wireless/api/views.py +34 -0
  691. nautobot/wireless/apps.py +8 -0
  692. nautobot/wireless/choices.py +345 -0
  693. nautobot/wireless/factory.py +138 -0
  694. nautobot/wireless/filters.py +167 -0
  695. nautobot/wireless/forms.py +283 -0
  696. nautobot/wireless/homepage.py +19 -0
  697. nautobot/wireless/migrations/0001_initial.py +223 -0
  698. nautobot/wireless/migrations/__init__.py +0 -0
  699. nautobot/wireless/models.py +207 -0
  700. nautobot/wireless/navigation.py +105 -0
  701. nautobot/wireless/tables.py +244 -0
  702. nautobot/wireless/templates/wireless/radioprofile_retrieve.html +81 -0
  703. nautobot/wireless/templates/wireless/supporteddatarate_retrieve.html +26 -0
  704. nautobot/wireless/templates/wireless/wirelessnetwork_create.html +88 -0
  705. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +56 -0
  706. nautobot/wireless/tests/__init__.py +0 -0
  707. nautobot/wireless/tests/integration/__init__.py +0 -0
  708. nautobot/wireless/tests/integration/test_radio_profile.py +42 -0
  709. nautobot/wireless/tests/test_api.py +247 -0
  710. nautobot/wireless/tests/test_filters.py +82 -0
  711. nautobot/wireless/tests/test_models.py +22 -0
  712. nautobot/wireless/tests/test_views.py +378 -0
  713. nautobot/wireless/urls.py +13 -0
  714. nautobot/wireless/views.py +119 -0
  715. {nautobot-2.3.16.dist-info → nautobot-2.4.0.dist-info}/METADATA +9 -12
  716. {nautobot-2.3.16.dist-info → nautobot-2.4.0.dist-info}/RECORD +720 -549
  717. nautobot/core/utils/navigation.py +0 -54
  718. {nautobot-2.3.16.dist-info → nautobot-2.4.0.dist-info}/LICENSE.txt +0 -0
  719. {nautobot-2.3.16.dist-info → nautobot-2.4.0.dist-info}/NOTICE +0 -0
  720. {nautobot-2.3.16.dist-info → nautobot-2.4.0.dist-info}/WHEEL +0 -0
  721. {nautobot-2.3.16.dist-info → nautobot-2.4.0.dist-info}/entry_points.txt +0 -0
@@ -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
 
@@ -7842,6 +8106,15 @@
7842
8106
  </span>
7843
8107
  </a>
7844
8108
 
8109
+ </li>
8110
+
8111
+ <li class="md-nav__item">
8112
+ <a href="#nautobot.apps.models.RelationshipModel.get_relationships_with_related_objects" class="md-nav__link">
8113
+ <span class="md-ellipsis">
8114
+ get_relationships_with_related_objects
8115
+ </span>
8116
+ </a>
8117
+
7845
8118
  </li>
7846
8119
 
7847
8120
  <li class="md-nav__item">
@@ -8688,14 +8961,6 @@
8688
8961
 
8689
8962
 
8690
8963
 
8691
- </ul>
8692
- </nav>
8693
-
8694
- </li>
8695
-
8696
-
8697
-
8698
-
8699
8964
 
8700
8965
 
8701
8966
 
@@ -8713,12 +8978,137 @@
8713
8978
 
8714
8979
 
8715
8980
 
8716
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_10" >
8981
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_9_5" >
8717
8982
 
8718
8983
 
8719
- <label class="md-nav__link" for="__nav_3_2_10" id="__nav_3_2_10_label" tabindex="0">
8720
-
8721
-
8984
+
8985
+ <div class="md-nav__link md-nav__container">
8986
+ <a href="../../../development/apps/migration/ui-component-framework/index.html" class="md-nav__link ">
8987
+
8988
+
8989
+ <span class="md-ellipsis">
8990
+ UI Component Framework
8991
+ </span>
8992
+
8993
+
8994
+ </a>
8995
+
8996
+
8997
+ <label class="md-nav__link " for="__nav_3_2_9_5" id="__nav_3_2_9_5_label" tabindex="0">
8998
+ <span class="md-nav__icon md-icon"></span>
8999
+ </label>
9000
+
9001
+ </div>
9002
+
9003
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_2_9_5_label" aria-expanded="false">
9004
+ <label class="md-nav__title" for="__nav_3_2_9_5">
9005
+ <span class="md-nav__icon md-icon"></span>
9006
+ UI Component Framework
9007
+ </label>
9008
+ <ul class="md-nav__list" data-md-scrollfix>
9009
+
9010
+
9011
+
9012
+
9013
+
9014
+
9015
+
9016
+ <li class="md-nav__item">
9017
+ <a href="../../../development/apps/migration/ui-component-framework/migration-steps.html" class="md-nav__link">
9018
+
9019
+
9020
+ <span class="md-ellipsis">
9021
+ Migration steps
9022
+ </span>
9023
+
9024
+
9025
+ </a>
9026
+ </li>
9027
+
9028
+
9029
+
9030
+
9031
+
9032
+
9033
+
9034
+
9035
+
9036
+
9037
+ <li class="md-nav__item">
9038
+ <a href="../../../development/apps/migration/ui-component-framework/custom-content.html" class="md-nav__link">
9039
+
9040
+
9041
+ <span class="md-ellipsis">
9042
+ Custom content
9043
+ </span>
9044
+
9045
+
9046
+ </a>
9047
+ </li>
9048
+
9049
+
9050
+
9051
+
9052
+
9053
+
9054
+
9055
+
9056
+
9057
+
9058
+ <li class="md-nav__item">
9059
+ <a href="../../../development/apps/migration/ui-component-framework/best-practices.html" class="md-nav__link">
9060
+
9061
+
9062
+ <span class="md-ellipsis">
9063
+ Best practices
9064
+ </span>
9065
+
9066
+
9067
+ </a>
9068
+ </li>
9069
+
9070
+
9071
+
9072
+
9073
+ </ul>
9074
+ </nav>
9075
+
9076
+ </li>
9077
+
9078
+
9079
+
9080
+
9081
+ </ul>
9082
+ </nav>
9083
+
9084
+ </li>
9085
+
9086
+
9087
+
9088
+
9089
+
9090
+
9091
+
9092
+
9093
+
9094
+
9095
+
9096
+
9097
+
9098
+
9099
+
9100
+
9101
+
9102
+ <li class="md-nav__item md-nav__item--nested">
9103
+
9104
+
9105
+
9106
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_10" >
9107
+
9108
+
9109
+ <label class="md-nav__link" for="__nav_3_2_10" id="__nav_3_2_10_label" tabindex="0">
9110
+
9111
+
8722
9112
  <span class="md-ellipsis">
8723
9113
  Advanced
8724
9114
  </span>
@@ -9033,6 +9423,27 @@
9033
9423
 
9034
9424
 
9035
9425
 
9426
+ <li class="md-nav__item">
9427
+ <a href="../../../development/core/minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
9428
+
9429
+
9430
+ <span class="md-ellipsis">
9431
+ Minikube Dev Environment for K8s Jobs
9432
+ </span>
9433
+
9434
+
9435
+ </a>
9436
+ </li>
9437
+
9438
+
9439
+
9440
+
9441
+
9442
+
9443
+
9444
+
9445
+
9446
+
9036
9447
  <li class="md-nav__item">
9037
9448
  <a href="../../../development/core/model-checklist.html" class="md-nav__link">
9038
9449
 
@@ -9222,6 +9633,27 @@
9222
9633
 
9223
9634
 
9224
9635
 
9636
+ <li class="md-nav__item">
9637
+ <a href="../../../development/core/ui-component-framework.html" class="md-nav__link">
9638
+
9639
+
9640
+ <span class="md-ellipsis">
9641
+ UI Component Framework
9642
+ </span>
9643
+
9644
+
9645
+ </a>
9646
+ </li>
9647
+
9648
+
9649
+
9650
+
9651
+
9652
+
9653
+
9654
+
9655
+
9656
+
9225
9657
  <li class="md-nav__item">
9226
9658
  <a href="../../../development/core/release-checklist.html" class="md-nav__link">
9227
9659
 
@@ -9304,6 +9736,27 @@
9304
9736
 
9305
9737
 
9306
9738
 
9739
+ <li class="md-nav__item">
9740
+ <a href="../../../release-notes/version-2.4.html" class="md-nav__link">
9741
+
9742
+
9743
+ <span class="md-ellipsis">
9744
+ Version 2.4
9745
+ </span>
9746
+
9747
+
9748
+ </a>
9749
+ </li>
9750
+
9751
+
9752
+
9753
+
9754
+
9755
+
9756
+
9757
+
9758
+
9759
+
9307
9760
  <li class="md-nav__item">
9308
9761
  <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
9309
9762
 
@@ -10730,6 +11183,15 @@
10730
11183
  </span>
10731
11184
  </a>
10732
11185
 
11186
+ </li>
11187
+
11188
+ <li class="md-nav__item">
11189
+ <a href="#nautobot.apps.models.RelationshipModel.get_relationships_with_related_objects" class="md-nav__link">
11190
+ <span class="md-ellipsis">
11191
+ get_relationships_with_related_objects
11192
+ </span>
11193
+ </a>
11194
+
10733
11195
  </li>
10734
11196
 
10735
11197
  <li class="md-nav__item">
@@ -11190,7 +11652,12 @@
11190
11652
 
11191
11653
  <div class="doc doc-contents first">
11192
11654
 
11193
- <p>Data model classes and utilities for app implementation.</p>
11655
+ <p>Data model classes and utilities for app implementation.</p>
11656
+
11657
+
11658
+
11659
+
11660
+
11194
11661
 
11195
11662
 
11196
11663
 
@@ -11216,10 +11683,10 @@
11216
11683
 
11217
11684
  <div class="doc doc-contents ">
11218
11685
  <p class="doc doc-class-bases">
11219
- Bases: <code><autoref identifier="django_extensions.db.fields.AutoSlugField" optional hover>AutoSlugField</autoref></code></p>
11686
+ Bases: <code><span title="django_extensions.db.fields.AutoSlugField">AutoSlugField</span></code></p>
11220
11687
 
11221
11688
 
11222
- <p>AutoSlugField</p>
11689
+ <p>AutoSlugField</p>
11223
11690
  <p>By default, sets editable=True, blank=True, max_length=100, overwrite_on_add=False, unique=True
11224
11691
  Required arguments:
11225
11692
  populate_from
@@ -11261,6 +11728,11 @@ class MyModel(models.Model):
11261
11728
 
11262
11729
 
11263
11730
 
11731
+
11732
+
11733
+
11734
+
11735
+
11264
11736
  <div class="doc doc-children">
11265
11737
 
11266
11738
 
@@ -11282,7 +11754,7 @@ class MyModel(models.Model):
11282
11754
 
11283
11755
  <div class="doc doc-contents ">
11284
11756
 
11285
- <p>Workaround for https://github.com/django-extensions/django-extensions/issues/1713.</p>
11757
+ <p>Workaround for https://github.com/django-extensions/django-extensions/issues/1713.</p>
11286
11758
 
11287
11759
  </div>
11288
11760
 
@@ -11309,15 +11781,20 @@ class MyModel(models.Model):
11309
11781
 
11310
11782
  <div class="doc doc-contents ">
11311
11783
  <p class="doc doc-class-bases">
11312
- Bases: <code><autoref identifier="django.db.models.Manager" optional hover>Manager</autoref></code></p>
11784
+ Bases: <code><span title="django.db.models.Manager">Manager</span></code></p>
11313
11785
 
11314
11786
 
11315
- <p>Base manager class corresponding to BaseModel and RestrictedQuerySet.</p>
11787
+ <p>Base manager class corresponding to BaseModel and RestrictedQuerySet.</p>
11316
11788
  <p>Adds built-in natural key support, loosely based on <code>django-natural-keys</code>.</p>
11317
11789
 
11318
11790
 
11319
11791
 
11320
11792
 
11793
+
11794
+
11795
+
11796
+
11797
+
11321
11798
  <div class="doc doc-children">
11322
11799
 
11323
11800
 
@@ -11339,7 +11816,7 @@ class MyModel(models.Model):
11339
11816
 
11340
11817
  <div class="doc doc-contents ">
11341
11818
 
11342
- <p>Return the object corresponding to the provided natural key.</p>
11819
+ <p>Return the object corresponding to the provided natural key.</p>
11343
11820
  <p>Generic implementation that depends on the model being a BaseModel subclass or otherwise implementing our
11344
11821
  <code>natural_key_field_lookups</code> property API. Loosely based on implementation from <code>django-natural-keys</code>.</p>
11345
11822
 
@@ -11368,10 +11845,10 @@ class MyModel(models.Model):
11368
11845
 
11369
11846
  <div class="doc doc-contents ">
11370
11847
  <p class="doc doc-class-bases">
11371
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
11848
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
11372
11849
 
11373
11850
 
11374
- <p>Base model class that all models should inherit from.</p>
11851
+ <p>Base model class that all models should inherit from.</p>
11375
11852
  <p>This abstract base provides globally common fields and functionality.</p>
11376
11853
  <p>Here we define the primary key to be a UUID field and set its default to
11377
11854
  automatically generate a random UUID value. Note however, this does not
@@ -11387,6 +11864,11 @@ can be used for the same purpose in most cases.</p>
11387
11864
 
11388
11865
 
11389
11866
 
11867
+
11868
+
11869
+
11870
+
11871
+
11390
11872
  <div class="doc doc-children">
11391
11873
 
11392
11874
 
@@ -11400,7 +11882,7 @@ can be used for the same purpose in most cases.</p>
11400
11882
 
11401
11883
 
11402
11884
  <h3 id="nautobot.apps.models.BaseModel.composite_key" class="doc doc-heading">
11403
- <code class="highlight language-python"><span class="n">composite_key</span><span class="p">:</span> <span class="nb">str</span></code>
11885
+ <code class="highlight language-python"><span class="n">composite_key</span></code>
11404
11886
 
11405
11887
  <span class="doc doc-labels">
11406
11888
  <small class="doc doc-label doc-label-property"><code>property</code></small>
@@ -11411,7 +11893,7 @@ can be used for the same purpose in most cases.</p>
11411
11893
 
11412
11894
  <div class="doc doc-contents ">
11413
11895
 
11414
- <p>Automatic "slug" string derived from this model's natural key, suitable for use in URLs etc.</p>
11896
+ <p>Automatic "slug" string derived from this model's natural key, suitable for use in URLs etc.</p>
11415
11897
  <p>A less naïve implementation than django-natural-keys provides by default, based around URL percent-encoding.</p>
11416
11898
  </div>
11417
11899
 
@@ -11422,7 +11904,7 @@ can be used for the same purpose in most cases.</p>
11422
11904
 
11423
11905
 
11424
11906
  <h3 id="nautobot.apps.models.BaseModel.natural_slug" class="doc doc-heading">
11425
- <code class="highlight language-python"><span class="n">natural_slug</span><span class="p">:</span> <span class="nb">str</span></code>
11907
+ <code class="highlight language-python"><span class="n">natural_slug</span></code>
11426
11908
 
11427
11909
  <span class="doc doc-labels">
11428
11910
  <small class="doc doc-label doc-label-property"><code>property</code></small>
@@ -11433,7 +11915,7 @@ can be used for the same purpose in most cases.</p>
11433
11915
 
11434
11916
  <div class="doc doc-contents ">
11435
11917
 
11436
- <p>Automatic "slug" string derived from this model's natural key. This differs from composite
11918
+ <p>Automatic "slug" string derived from this model's natural key. This differs from composite
11437
11919
  key in that it must be human-readable and comply with a very limited character set, and is therefore lossy.
11438
11920
  This value is not guaranteed to be
11439
11921
  unique although a best effort is made by appending a fragment of the primary key to the
@@ -11458,7 +11940,7 @@ natural slug value.</p>
11458
11940
 
11459
11941
  <div class="doc doc-contents ">
11460
11942
 
11461
- <p>True if the record exists in the database, False if it does not.</p>
11943
+ <p>True if the record exists in the database, False if it does not.</p>
11462
11944
  </div>
11463
11945
 
11464
11946
  </div>
@@ -11480,7 +11962,7 @@ natural slug value.</p>
11480
11962
 
11481
11963
  <div class="doc doc-contents ">
11482
11964
 
11483
- <p>Override this method for models with Python <code>@property</code> as part of their <code>natural_key_field_names</code>.</p>
11965
+ <p>Override this method for models with Python <code>@property</code> as part of their <code>natural_key_field_names</code>.</p>
11484
11966
  <p>Since CSV export for <code>natural_key_field_names</code> relies on database fields, you can override this method
11485
11967
  to provide custom handling for models with property-based natural keys.</p>
11486
11968
 
@@ -11499,7 +11981,7 @@ to provide custom handling for models with property-based natural keys.</p>
11499
11981
 
11500
11982
  <div class="doc doc-contents ">
11501
11983
 
11502
- <p>Return the canonical URL for this object in either the UI or the REST API.</p>
11984
+ <p>Return the canonical URL for this object in either the UI or the REST API.</p>
11503
11985
 
11504
11986
  </div>
11505
11987
 
@@ -11516,7 +11998,7 @@ to provide custom handling for models with property-based natural keys.</p>
11516
11998
 
11517
11999
  <div class="doc doc-contents ">
11518
12000
 
11519
- <p>Smarter default implementation of natural key construction.</p>
12001
+ <p>Smarter default implementation of natural key construction.</p>
11520
12002
  <ol>
11521
12003
  <li>Handles nullable foreign keys (https://github.com/wq/django-natural-keys/issues/18)</li>
11522
12004
  <li>Handles variadic natural-keys (e.g. Location model - [name, parent__name, parent__parent__name, ...].)</li>
@@ -11541,7 +12023,7 @@ to provide custom handling for models with property-based natural keys.</p>
11541
12023
 
11542
12024
  <div class="doc doc-contents ">
11543
12025
 
11544
- <p>Helper function to map a list of natural key field values to actual kwargs suitable for lookup and filtering.</p>
12026
+ <p>Helper function to map a list of natural key field values to actual kwargs suitable for lookup and filtering.</p>
11545
12027
  <p>Based on <code>django-natural-keys</code> <code>NaturalKeyQuerySet.natural_key_kwargs()</code> method.</p>
11546
12028
 
11547
12029
  </div>
@@ -11559,7 +12041,7 @@ to provide custom handling for models with property-based natural keys.</p>
11559
12041
 
11560
12042
  <div class="doc doc-contents ">
11561
12043
 
11562
- <p>List of lookups (possibly including nested lookups for related models) that make up this model's natural key.</p>
12044
+ <p>List of lookups (possibly including nested lookups for related models) that make up this model's natural key.</p>
11563
12045
  <p>BaseModel provides a "smart" implementation that tries to determine this automatically,
11564
12046
  but you can also explicitly set <code>natural_key_field_names</code> on a given model subclass if desired.</p>
11565
12047
  <p>This property is based on a consolidation of <code>django-natural-keys</code> <code>ForeignKeyModel.get_natural_key_info()</code>,
@@ -11582,7 +12064,7 @@ but instead explicitly discounts the <code>id</code> field (only) as a candidate
11582
12064
 
11583
12065
  <div class="doc doc-contents ">
11584
12066
 
11585
- <p>Perform model validation during instance save.</p>
12067
+ <p>Perform model validation during instance save.</p>
11586
12068
  <p>This is a convenience method that first calls <code>self.full_clean()</code> and then <code>self.save()</code>
11587
12069
  which in effect enforces model validation prior to saving the instance, without having
11588
12070
  to manually make these calls seperately. This is a slight departure from Django norms,
@@ -11615,15 +12097,20 @@ command.</p>
11615
12097
 
11616
12098
  <div class="doc doc-contents ">
11617
12099
  <p class="doc doc-class-bases">
11618
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
12100
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
11619
12101
 
11620
12102
 
11621
- <p>An abstract model which adds fields to store the creation and last-updated times for an object. Both fields can be
12103
+ <p>An abstract model which adds fields to store the creation and last-updated times for an object. Both fields can be
11622
12104
  null to facilitate adding these fields to existing instances via a database migration.</p>
11623
12105
 
11624
12106
 
11625
12107
 
11626
12108
 
12109
+
12110
+
12111
+
12112
+
12113
+
11627
12114
  <div class="doc doc-children">
11628
12115
 
11629
12116
 
@@ -11645,7 +12132,7 @@ null to facilitate adding these fields to existing instances via a database migr
11645
12132
 
11646
12133
  <div class="doc doc-contents ">
11647
12134
 
11648
- <p>Return the changelog URL for this object.</p>
12135
+ <p>Return the changelog URL for this object.</p>
11649
12136
 
11650
12137
  </div>
11651
12138
 
@@ -11662,7 +12149,7 @@ null to facilitate adding these fields to existing instances via a database migr
11662
12149
 
11663
12150
  <div class="doc doc-contents ">
11664
12151
 
11665
- <p>Return a new ObjectChange representing a change made to this object, or None if the object shouldn't be logged.</p>
12152
+ <p>Return a new ObjectChange representing a change made to this object, or None if the object shouldn't be logged.</p>
11666
12153
  <p>This will typically be called automatically by ChangeLoggingMiddleware.</p>
11667
12154
 
11668
12155
  </div>
@@ -11690,10 +12177,15 @@ null to facilitate adding these fields to existing instances via a database migr
11690
12177
 
11691
12178
  <div class="doc doc-contents ">
11692
12179
  <p class="doc doc-class-bases">
11693
- Bases: <code><autoref identifier="django.db.models.Func" optional hover>Func</autoref></code></p>
12180
+ Bases: <code><span title="django.db.models.Func">Func</span></code></p>
12181
+
12182
+
12183
+ <p>Disregard localization by collating a field as a plain character string. Helpful for ensuring predictable ordering.</p>
12184
+
12185
+
12186
+
11694
12187
 
11695
12188
 
11696
- <p>Disregard localization by collating a field as a plain character string. Helpful for ensuring predictable ordering.</p>
11697
12189
 
11698
12190
 
11699
12191
 
@@ -11730,7 +12222,7 @@ null to facilitate adding these fields to existing instances via a database migr
11730
12222
  <div class="doc doc-contents ">
11731
12223
 
11732
12224
 
11733
- <p>Mixin to extend a base queryset class with support for filtering by <code>composite_key=...</code> as a virtual parameter.</p>
12225
+ <p>Mixin to extend a base queryset class with support for filtering by <code>composite_key=...</code> as a virtual parameter.</p>
11734
12226
  <p>Example:</p>
11735
12227
  <div class="highlight"><pre><span></span><code>&gt;&gt;&gt; Location.objects.last().composite_key
11736
12228
  &#39;Durham;AMER&#39;
@@ -11768,6 +12260,11 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
11768
12260
 
11769
12261
 
11770
12262
 
12263
+
12264
+
12265
+
12266
+
12267
+
11771
12268
  <div class="doc doc-children">
11772
12269
 
11773
12270
 
@@ -11789,7 +12286,7 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
11789
12286
 
11790
12287
  <div class="doc doc-contents ">
11791
12288
 
11792
- <p>Explicitly handle <code>exclude(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
12289
+ <p>Explicitly handle <code>exclude(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
11793
12290
  <p>Counterpart to BaseModel.composite_key property.</p>
11794
12291
 
11795
12292
  </div>
@@ -11807,7 +12304,7 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
11807
12304
 
11808
12305
  <div class="doc doc-contents ">
11809
12306
 
11810
- <p>Explicitly handle <code>filter(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
12307
+ <p>Explicitly handle <code>filter(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
11811
12308
  <p>Counterpart to BaseModel.composite_key property.</p>
11812
12309
 
11813
12310
  </div>
@@ -11825,7 +12322,7 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
11825
12322
 
11826
12323
  <div class="doc doc-contents ">
11827
12324
 
11828
- <p>Helper method abstracting a common need from filter() and exclude().</p>
12325
+ <p>Helper method abstracting a common need from filter() and exclude().</p>
11829
12326
  <p>Subclasses may need to call this directly if they also have special processing of other filter/exclude params.</p>
11830
12327
 
11831
12328
  </div>
@@ -11853,15 +12350,20 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
11853
12350
 
11854
12351
  <div class="doc doc-contents ">
11855
12352
  <p class="doc doc-class-bases">
11856
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code>, <code><autoref identifier="nautobot.extras.models.models.ConfigContextSchemaValidationMixin" optional hover>ConfigContextSchemaValidationMixin</autoref></code></p>
12353
+ Bases: <code><span title="django.db.models.Model">Model</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.models.ConfigContextSchemaValidationMixin" href="#nautobot.apps.models.ConfigContextSchemaValidationMixin">ConfigContextSchemaValidationMixin</a></code></p>
11857
12354
 
11858
12355
 
11859
- <p>A model which includes local configuration context data. This local data will override any inherited data from
12356
+ <p>A model which includes local configuration context data. This local data will override any inherited data from
11860
12357
  ConfigContexts.</p>
11861
12358
 
11862
12359
 
11863
12360
 
11864
12361
 
12362
+
12363
+
12364
+
12365
+
12366
+
11865
12367
  <div class="doc doc-children">
11866
12368
 
11867
12369
 
@@ -11883,7 +12385,7 @@ ConfigContexts.</p>
11883
12385
 
11884
12386
  <div class="doc doc-contents ">
11885
12387
 
11886
- <p>Return the rendered configuration context for a device or VM.</p>
12388
+ <p>Return the rendered configuration context for a device or VM.</p>
11887
12389
 
11888
12390
  </div>
11889
12391
 
@@ -11911,7 +12413,12 @@ ConfigContexts.</p>
11911
12413
  <div class="doc doc-contents ">
11912
12414
 
11913
12415
 
11914
- <p>Mixin that provides validation of config context data against a json schema.</p>
12416
+ <p>Mixin that provides validation of config context data against a json schema.</p>
12417
+
12418
+
12419
+
12420
+
12421
+
11915
12422
 
11916
12423
 
11917
12424
 
@@ -11947,10 +12454,15 @@ ConfigContexts.</p>
11947
12454
 
11948
12455
  <div class="doc doc-contents ">
11949
12456
  <p class="doc doc-class-bases">
11950
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
12457
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
12458
+
12459
+
12460
+ <p>Abstract mixin for enabling Contact/Team association to a given model class.</p>
12461
+
12462
+
12463
+
11951
12464
 
11952
12465
 
11953
- <p>Abstract mixin for enabling Contact/Team association to a given model class.</p>
11954
12466
 
11955
12467
 
11956
12468
 
@@ -11986,7 +12498,12 @@ ConfigContexts.</p>
11986
12498
 
11987
12499
  <div class="doc doc-contents ">
11988
12500
  <p class="doc doc-class-bases">
11989
- Bases: <code><autoref identifier="nautobot.core.models.querysets.RestrictedQuerySet" optional hover>RestrictedQuerySet</autoref></code></p>
12501
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.querysets.RestrictedQuerySet" href="#nautobot.apps.models.RestrictedQuerySet">RestrictedQuerySet</a></code></p>
12502
+
12503
+
12504
+
12505
+
12506
+
11990
12507
 
11991
12508
 
11992
12509
 
@@ -12013,7 +12530,7 @@ ConfigContexts.</p>
12013
12530
 
12014
12531
  <div class="doc doc-contents ">
12015
12532
 
12016
- <p>Return all <code>self.model</code> instances assigned to the given model.</p>
12533
+ <p>Return all <code>self.model</code> instances assigned to the given model.</p>
12017
12534
 
12018
12535
  </div>
12019
12536
 
@@ -12030,7 +12547,7 @@ ConfigContexts.</p>
12030
12547
 
12031
12548
  <div class="doc doc-contents ">
12032
12549
 
12033
- <p>Return all <code>self.model</code> instances assigned to the given <code>_models</code>.</p>
12550
+ <p>Return all <code>self.model</code> instances assigned to the given <code>_models</code>.</p>
12034
12551
 
12035
12552
  </div>
12036
12553
 
@@ -12057,10 +12574,15 @@ ConfigContexts.</p>
12057
12574
 
12058
12575
  <div class="doc doc-contents ">
12059
12576
  <p class="doc doc-class-bases">
12060
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
12577
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
12578
+
12579
+
12580
+ <p>Abstract class for any model which may have custom fields associated with it.</p>
12581
+
12582
+
12583
+
12061
12584
 
12062
12585
 
12063
- <p>Abstract class for any model which may have custom fields associated with it.</p>
12064
12586
 
12065
12587
 
12066
12588
 
@@ -12089,7 +12611,7 @@ ConfigContexts.</p>
12089
12611
 
12090
12612
  <div class="doc doc-contents ">
12091
12613
 
12092
- <p>Convenience wrapper for custom field data.</p>
12614
+ <p>Convenience wrapper for custom field data.</p>
12093
12615
  </div>
12094
12616
 
12095
12617
  </div>
@@ -12110,7 +12632,7 @@ ConfigContexts.</p>
12110
12632
 
12111
12633
  <div class="doc doc-contents ">
12112
12634
 
12113
- <p>Legacy interface to raw custom field data</p>
12635
+ <p>Legacy interface to raw custom field data</p>
12114
12636
  <p>TODO(John): remove this entirely when the cf property is enhanced</p>
12115
12637
  </div>
12116
12638
 
@@ -12129,7 +12651,7 @@ ConfigContexts.</p>
12129
12651
 
12130
12652
  <div class="doc doc-contents ">
12131
12653
 
12132
- <p>Get a computed field for this model, lookup via key.
12654
+ <p>Get a computed field for this model, lookup via key.
12133
12655
  Returns the template of this field if render is False, otherwise returns the rendered value.</p>
12134
12656
 
12135
12657
  </div>
@@ -12147,7 +12669,7 @@ Returns the template of this field if render is False, otherwise returns the ren
12147
12669
 
12148
12670
  <div class="doc doc-contents ">
12149
12671
 
12150
- <p>Return a dictionary of all computed fields and their rendered values for this model.
12672
+ <p>Return a dictionary of all computed fields and their rendered values for this model.
12151
12673
  Keys are the <code>key</code> value of each field. If label_as_key is True, <code>label</code> values of each field are used as keys.</p>
12152
12674
 
12153
12675
  </div>
@@ -12165,7 +12687,7 @@ Keys are the <code>key</code> value of each field. If label_as_key is True, <cod
12165
12687
 
12166
12688
  <div class="doc doc-contents ">
12167
12689
 
12168
- <p>Return a dictonary of computed fields grouped by the same grouping in the form
12690
+ <p>Return a dictonary of computed fields grouped by the same grouping in the form
12169
12691
  {
12170
12692
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
12171
12693
  ...
@@ -12188,7 +12710,7 @@ Keys are the <code>key</code> value of each field. If label_as_key is True, <cod
12188
12710
 
12189
12711
  <div class="doc doc-contents ">
12190
12712
 
12191
- <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12713
+ <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12192
12714
  Return a dictonary of computed fields grouped by the same grouping in the form
12193
12715
  {
12194
12716
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12213,7 +12735,7 @@ which have advanced_ui set to True</p>
12213
12735
 
12214
12736
  <div class="doc doc-contents ">
12215
12737
 
12216
- <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12738
+ <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12217
12739
  Return a dictonary of computed fields grouped by the same grouping in the form
12218
12740
  {
12219
12741
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12238,7 +12760,7 @@ which have advanced_ui set to False</p>
12238
12760
 
12239
12761
  <div class="doc doc-contents ">
12240
12762
 
12241
- <p>Return a dictonary of custom fields grouped by the same grouping in the form
12763
+ <p>Return a dictonary of custom fields grouped by the same grouping in the form
12242
12764
  {
12243
12765
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
12244
12766
  ...
@@ -12261,7 +12783,7 @@ which have advanced_ui set to False</p>
12261
12783
 
12262
12784
  <div class="doc doc-contents ">
12263
12785
 
12264
- <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12786
+ <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12265
12787
  Return a dictonary of custom fields grouped by the same grouping in the form
12266
12788
  {
12267
12789
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12286,7 +12808,7 @@ which have advanced_ui set to True</p>
12286
12808
 
12287
12809
  <div class="doc doc-contents ">
12288
12810
 
12289
- <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12811
+ <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12290
12812
  Return a dictonary of custom fields grouped by the same grouping in the form
12291
12813
  {
12292
12814
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12311,7 +12833,7 @@ which have advanced_ui set to False</p>
12311
12833
 
12312
12834
  <div class="doc doc-contents ">
12313
12835
 
12314
- <p>Return a dictionary of custom fields for a single object in the form {<field>: value}.</p>
12836
+ <p>Return a dictionary of custom fields for a single object in the form {<field>: value}.</p>
12315
12837
 
12316
12838
  </div>
12317
12839
 
@@ -12328,7 +12850,7 @@ which have advanced_ui set to False</p>
12328
12850
 
12329
12851
  <div class="doc doc-contents ">
12330
12852
 
12331
- <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12853
+ <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12332
12854
  Return a dictionary of custom fields for a single object in the form {<field>: value}
12333
12855
  which have advanced_ui set to True</p>
12334
12856
 
@@ -12347,7 +12869,7 @@ which have advanced_ui set to True</p>
12347
12869
 
12348
12870
  <div class="doc doc-contents ">
12349
12871
 
12350
- <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12872
+ <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12351
12873
  Return a dictionary of custom fields for a single object in the form {<field>: value}
12352
12874
  which have advanced_ui set to False</p>
12353
12875
 
@@ -12366,7 +12888,7 @@ which have advanced_ui set to False</p>
12366
12888
 
12367
12889
  <div class="doc doc-contents ">
12368
12890
 
12369
- <p>Return a boolean indicating whether or not this content type has computed fields associated with it.
12891
+ <p>Return a boolean indicating whether or not this content type has computed fields associated with it.
12370
12892
  This can also check whether the advanced_ui attribute is True or False for UI display purposes.</p>
12371
12893
 
12372
12894
  </div>
@@ -12395,7 +12917,7 @@ This can also check whether the advanced_ui attribute is True or False for UI di
12395
12917
  <div class="doc doc-contents ">
12396
12918
 
12397
12919
 
12398
- <p>This class is used to register plugin custom model validators which act on specified models. It contains the clean
12920
+ <p>This class is used to register plugin custom model validators which act on specified models. It contains the clean
12399
12921
  method which is overridden by plugin authors to execute custom validation logic. Plugin authors must raise
12400
12922
  ValidationError within this method to trigger validation error messages which are propagated to the user.
12401
12923
  A convenience method <code>validation_error(&lt;message&gt;)</code> may be used for this purpose.</p>
@@ -12405,6 +12927,11 @@ should be set as a string in the form <code>&lt;app_label&gt;.&lt;model_name&gt;
12405
12927
 
12406
12928
 
12407
12929
 
12930
+
12931
+
12932
+
12933
+
12934
+
12408
12935
  <div class="doc doc-children">
12409
12936
 
12410
12937
 
@@ -12426,7 +12953,7 @@ should be set as a string in the form <code>&lt;app_label&gt;.&lt;model_name&gt;
12426
12953
 
12427
12954
  <div class="doc doc-contents ">
12428
12955
 
12429
- <p>Implement custom model validation in the standard Django clean method pattern. The model instance is accessed
12956
+ <p>Implement custom model validation in the standard Django clean method pattern. The model instance is accessed
12430
12957
  with the <code>object</code> key within <code>self.context</code>, e.g. <code>self.context['object']</code>. ValidationError must be raised to
12431
12958
  prevent saving model instance changes, and propagate messages to the user. For convenience,
12432
12959
  <code>self.validation_error(&lt;message&gt;)</code> may be called to raise a ValidationError.</p>
@@ -12446,7 +12973,7 @@ prevent saving model instance changes, and propagate messages to the user. For c
12446
12973
 
12447
12974
  <div class="doc doc-contents ">
12448
12975
 
12449
- <p>Convenience method for raising <code>django.core.exceptions.ValidationError</code> which is required in order to
12976
+ <p>Convenience method for raising <code>django.core.exceptions.ValidationError</code> which is required in order to
12450
12977
  trigger validation error messages which are propagated to the user.</p>
12451
12978
 
12452
12979
  </div>
@@ -12475,7 +13002,7 @@ trigger validation error messages which are propagated to the user.</p>
12475
13002
  <div class="doc doc-contents ">
12476
13003
 
12477
13004
 
12478
- <p>DEPRECATED - use DynamicGroupsModelMixin instead if you need to mark a model as supporting Dynamic Groups.</p>
13005
+ <p>DEPRECATED - use DynamicGroupsModelMixin instead if you need to mark a model as supporting Dynamic Groups.</p>
12479
13006
  <p>This is necessary because DynamicGroupMixin was incorrectly not implemented as a subclass of models.Model,
12480
13007
  and so it cannot properly implement Model behaviors like the <code>static_group_association_set</code> ReverseRelation.
12481
13008
  However, adding this inheritance to DynamicGroupMixin itself would negatively impact existing migrations.
@@ -12489,6 +13016,11 @@ to the new DynamicGroupsModelMixin in its place.</p>
12489
13016
 
12490
13017
 
12491
13018
 
13019
+
13020
+
13021
+
13022
+
13023
+
12492
13024
  <div class="doc doc-children">
12493
13025
 
12494
13026
 
@@ -12513,7 +13045,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12513
13045
 
12514
13046
  <div class="doc doc-contents ">
12515
13047
 
12516
- <p>Return a queryset of (cached) <code>DynamicGroup</code> objects this instance is a member of.</p>
13048
+ <p>Return a queryset of (cached) <code>DynamicGroup</code> objects this instance is a member of.</p>
12517
13049
  </div>
12518
13050
 
12519
13051
  </div>
@@ -12534,7 +13066,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12534
13066
 
12535
13067
  <div class="doc doc-contents ">
12536
13068
 
12537
- <p>Deprecated - use <code>self.dynamic_groups</code> instead.</p>
13069
+ <p>Deprecated - use <code>self.dynamic_groups</code> instead.</p>
12538
13070
  </div>
12539
13071
 
12540
13072
  </div>
@@ -12555,7 +13087,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12555
13087
 
12556
13088
  <div class="doc doc-contents ">
12557
13089
 
12558
- <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
13090
+ <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
12559
13091
  </div>
12560
13092
 
12561
13093
  </div>
@@ -12576,7 +13108,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12576
13108
 
12577
13109
  <div class="doc doc-contents ">
12578
13110
 
12579
- <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
13111
+ <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
12580
13112
  </div>
12581
13113
 
12582
13114
  </div>
@@ -12594,7 +13126,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12594
13126
 
12595
13127
  <div class="doc doc-contents ">
12596
13128
 
12597
- <p>Return the dynamic groups URL for a given instance.</p>
13129
+ <p>Return the dynamic groups URL for a given instance.</p>
12598
13130
 
12599
13131
  </div>
12600
13132
 
@@ -12621,10 +13153,15 @@ to the new DynamicGroupsModelMixin in its place.</p>
12621
13153
 
12622
13154
  <div class="doc doc-contents ">
12623
13155
  <p class="doc doc-class-bases">
12624
- Bases: <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupMixin" optional hover>DynamicGroupMixin</autoref></code>, <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
13156
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupMixin" href="#nautobot.apps.models.DynamicGroupMixin">DynamicGroupMixin</a></code>, <code><span title="django.db.models.Model">Model</span></code></p>
13157
+
13158
+
13159
+ <p>Add this to models to make them fully support Dynamic Groups.</p>
13160
+
13161
+
13162
+
12625
13163
 
12626
13164
 
12627
- <p>Add this to models to make them fully support Dynamic Groups.</p>
12628
13165
 
12629
13166
 
12630
13167
 
@@ -12660,16 +13197,21 @@ to the new DynamicGroupsModelMixin in its place.</p>
12660
13197
 
12661
13198
  <div class="doc doc-contents ">
12662
13199
  <p class="doc doc-class-bases">
12663
- Bases: <code><autoref identifier="nautobot.core.models.query_functions.JSONBAgg" optional hover>JSONBAgg</autoref></code></p>
13200
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.query_functions.JSONBAgg" href="#nautobot.apps.models.JSONBAgg">JSONBAgg</a></code></p>
12664
13201
 
12665
13202
 
12666
- <p>JSONBAgg is a builtin aggregation function which means it includes the use of a GROUP BY clause.
13203
+ <p>JSONBAgg is a builtin aggregation function which means it includes the use of a GROUP BY clause.
12667
13204
  When used as an annotation for collecting config context data objects, the GROUP BY is
12668
13205
  incorrect. This subclass overrides the Django ORM aggregation control to remove the GROUP BY.</p>
12669
13206
 
12670
13207
 
12671
13208
 
12672
13209
 
13210
+
13211
+
13212
+
13213
+
13214
+
12673
13215
  <div class="doc doc-children">
12674
13216
 
12675
13217
 
@@ -12701,15 +13243,20 @@ incorrect. This subclass overrides the Django ORM aggregation control to remove
12701
13243
 
12702
13244
  <div class="doc doc-contents ">
12703
13245
  <p class="doc doc-class-bases">
12704
- Bases: <code><autoref identifier="django.core.validators.URLValidator" optional hover>URLValidator</autoref></code></p>
13246
+ Bases: <code><span title="django.core.validators.URLValidator">URLValidator</span></code></p>
12705
13247
 
12706
13248
 
12707
- <p>Extends Django's built-in URLValidator to permit the use of hostnames with no domain extension and enforce allowed
13249
+ <p>Extends Django's built-in URLValidator to permit the use of hostnames with no domain extension and enforce allowed
12708
13250
  schemes specified in the configuration.</p>
12709
13251
 
12710
13252
 
12711
13253
 
12712
13254
 
13255
+
13256
+
13257
+
13258
+
13259
+
12713
13260
  <div class="doc doc-children">
12714
13261
 
12715
13262
 
@@ -12741,10 +13288,15 @@ schemes specified in the configuration.</p>
12741
13288
 
12742
13289
  <div class="doc doc-contents ">
12743
13290
  <p class="doc doc-class-bases">
12744
- Bases: <code><autoref identifier="django.core.validators.BaseValidator" optional hover>BaseValidator</autoref></code></p>
13291
+ Bases: <code><span title="django.core.validators.BaseValidator">BaseValidator</span></code></p>
13292
+
13293
+
13294
+ <p>Ensure that a field's value is not equal to any of the specified values.</p>
13295
+
13296
+
13297
+
12745
13298
 
12746
13299
 
12747
- <p>Ensure that a field's value is not equal to any of the specified values.</p>
12748
13300
 
12749
13301
 
12750
13302
 
@@ -12780,10 +13332,10 @@ schemes specified in the configuration.</p>
12780
13332
 
12781
13333
  <div class="doc doc-contents ">
12782
13334
  <p class="doc doc-class-bases">
12783
- Bases: <code><autoref identifier="nautobot.core.models.fields.ForeignKeyWithAutoRelatedName" optional hover>ForeignKeyWithAutoRelatedName</autoref></code></p>
13335
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.fields.ForeignKeyWithAutoRelatedName" href="#nautobot.apps.models.ForeignKeyWithAutoRelatedName">ForeignKeyWithAutoRelatedName</a></code></p>
12784
13336
 
12785
13337
 
12786
- <p>An abstract model field that automatically restricts ForeignKey options based on content_types.</p>
13338
+ <p>An abstract model field that automatically restricts ForeignKey options based on content_types.</p>
12787
13339
  <p>For instance, if the model "Role" contains two records: role_1 and role_2, role_1's content_types
12788
13340
  are set to "dcim.location" and "dcim.device" while the role_2's content_types are set to
12789
13341
  "circuit.circuit" and "dcim.location."</p>
@@ -12800,6 +13352,11 @@ while role_1 &amp; role_2 are both available for the Location model.</p>
12800
13352
 
12801
13353
 
12802
13354
 
13355
+
13356
+
13357
+
13358
+
13359
+
12803
13360
  <div class="doc doc-children">
12804
13361
 
12805
13362
 
@@ -12821,7 +13378,7 @@ while role_1 &amp; role_2 are both available for the Location model.</p>
12821
13378
 
12822
13379
  <div class="doc doc-contents ">
12823
13380
 
12824
- <p>Return a prepped formfield for use in model forms.</p>
13381
+ <p>Return a prepped formfield for use in model forms.</p>
12825
13382
 
12826
13383
  </div>
12827
13384
 
@@ -12838,7 +13395,7 @@ while role_1 &amp; role_2 are both available for the Location model.</p>
12838
13395
 
12839
13396
  <div class="doc doc-contents ">
12840
13397
 
12841
- <p>Limit this field to only objects which are assigned to this model's content-type.</p>
13398
+ <p>Limit this field to only objects which are assigned to this model's content-type.</p>
12842
13399
  <p>Note that this is implemented via specifying <code>content_types__app_label=</code> and <code>content_types__model=</code>
12843
13400
  rather than via the more obvious <code>content_types=ContentType.objects.get_for_model(self.model)</code>
12844
13401
  because the latter approach would involve a database query, and in some cases
@@ -12869,10 +13426,10 @@ because the latter approach would involve a database query, and in some cases
12869
13426
 
12870
13427
  <div class="doc doc-contents ">
12871
13428
  <p class="doc doc-class-bases">
12872
- Bases: <code><autoref identifier="django.db.models.ForeignKey" optional hover>ForeignKey</autoref></code></p>
13429
+ Bases: <code><span title="django.db.models.ForeignKey">ForeignKey</span></code></p>
12873
13430
 
12874
13431
 
12875
- <p>Extend base ForeignKey functionality to create a smarter default <code>related_name</code>.</p>
13432
+ <p>Extend base ForeignKey functionality to create a smarter default <code>related_name</code>.</p>
12876
13433
  <p>For example, "ip_addresses" instead of "ipaddress_set", "ipaddresss", or "ipam_ipaddress_related".</p>
12877
13434
  <p>Primarily useful for cases of abstract base classes that define ForeignKeys, such as
12878
13435
  <code>nautobot.dcim.models.device_components.ComponentModel</code>.</p>
@@ -12880,6 +13437,11 @@ because the latter approach would involve a database query, and in some cases
12880
13437
 
12881
13438
 
12882
13439
 
13440
+
13441
+
13442
+
13443
+
13444
+
12883
13445
  <div class="doc doc-children">
12884
13446
 
12885
13447
 
@@ -12911,11 +13473,17 @@ because the latter approach would involve a database query, and in some cases
12911
13473
 
12912
13474
  <div class="doc doc-contents ">
12913
13475
  <p class="doc doc-class-bases">
12914
- Bases: <code><autoref identifier="django.db.models.JSONField" optional hover>JSONField</autoref></code></p>
13476
+ Bases: <code><span title="django.db.models.JSONField">JSONField</span></code></p>
12915
13477
 
12916
13478
 
12917
- <p>An ArrayField implementation backed JSON storage.
13479
+ <p>An ArrayField implementation backed JSON storage.
12918
13480
  Replicates ArrayField's base field validation.</p>
13481
+ <p>Supports choices in the base field.</p>
13482
+
13483
+
13484
+
13485
+
13486
+
12919
13487
 
12920
13488
 
12921
13489
 
@@ -12970,7 +13538,7 @@ Replicates ArrayField's base field validation.</p>
12970
13538
 
12971
13539
  <div class="doc doc-contents ">
12972
13540
 
12973
- <p>Return a django.forms.Field instance for this field.</p>
13541
+ <p>Return a django.forms.Field instance for this field.</p>
12974
13542
 
12975
13543
  </div>
12976
13544
 
@@ -12987,7 +13555,7 @@ Replicates ArrayField's base field validation.</p>
12987
13555
 
12988
13556
  <div class="doc doc-contents ">
12989
13557
 
12990
- <p>Perform preliminary non-db specific value checks and conversions.</p>
13558
+ <p>Perform preliminary non-db specific value checks and conversions.</p>
12991
13559
 
12992
13560
  </div>
12993
13561
 
@@ -13004,7 +13572,7 @@ Replicates ArrayField's base field validation.</p>
13004
13572
 
13005
13573
  <div class="doc doc-contents ">
13006
13574
 
13007
- <p>Runs all validators against <code>value</code> and raise ValidationError if necessary.
13575
+ <p>Runs all validators against <code>value</code> and raise ValidationError if necessary.
13008
13576
  Some validators can't be created at field initialization time.</p>
13009
13577
 
13010
13578
  </div>
@@ -13022,7 +13590,7 @@ Some validators can't be created at field initialization time.</p>
13022
13590
 
13023
13591
  <div class="doc doc-contents ">
13024
13592
 
13025
- <p>Convert <code>value</code> into JSON, raising django.core.exceptions.ValidationError
13593
+ <p>Convert <code>value</code> into JSON, raising django.core.exceptions.ValidationError
13026
13594
  if the data can't be converted. Return the converted value.</p>
13027
13595
 
13028
13596
  </div>
@@ -13040,7 +13608,7 @@ if the data can't be converted. Return the converted value.</p>
13040
13608
 
13041
13609
  <div class="doc doc-contents ">
13042
13610
 
13043
- <p>Validate <code>value</code> and raise ValidationError if necessary.</p>
13611
+ <p>Validate <code>value</code> and raise ValidationError if necessary.</p>
13044
13612
 
13045
13613
  </div>
13046
13614
 
@@ -13057,7 +13625,7 @@ if the data can't be converted. Return the converted value.</p>
13057
13625
 
13058
13626
  <div class="doc doc-contents ">
13059
13627
 
13060
- <p>Return a string value of this field from the passed obj.
13628
+ <p>Return a string value of this field from the passed obj.
13061
13629
  This is used by the serialization framework.</p>
13062
13630
 
13063
13631
  </div>
@@ -13085,10 +13653,10 @@ This is used by the serialization framework.</p>
13085
13653
 
13086
13654
  <div class="doc doc-contents ">
13087
13655
  <p class="doc doc-class-bases">
13088
- Bases: <code><autoref identifier="django.db.models.Aggregate" optional hover>Aggregate</autoref></code></p>
13656
+ Bases: <code><span title="django.db.models.Aggregate">Aggregate</span></code></p>
13089
13657
 
13090
13658
 
13091
- <p>Like django.contrib.postgres.aggregates.JSONBAgg, but different.</p>
13659
+ <p>Like django.contrib.postgres.aggregates.JSONBAgg, but different.</p>
13092
13660
  <ol>
13093
13661
  <li>Supports both Postgres (JSONB_AGG) and MySQL (JSON_ARRAYAGG)</li>
13094
13662
  <li>Does not support <code>ordering</code> as JSON_ARRAYAGG does not guarantee ordering.</li>
@@ -13097,6 +13665,11 @@ This is used by the serialization framework.</p>
13097
13665
 
13098
13666
 
13099
13667
 
13668
+
13669
+
13670
+
13671
+
13672
+
13100
13673
  <div class="doc doc-children">
13101
13674
 
13102
13675
 
@@ -13128,10 +13701,15 @@ This is used by the serialization framework.</p>
13128
13701
 
13129
13702
  <div class="doc doc-contents ">
13130
13703
  <p class="doc doc-class-bases">
13131
- Bases: <code><autoref identifier="django.db.models.URLField" optional hover>URLField</autoref></code></p>
13704
+ Bases: <code><span title="django.db.models.URLField">URLField</span></code></p>
13705
+
13706
+
13707
+ <p>Like models.URLField, but using validators.EnhancedURLValidator and forms.LaxURLField.</p>
13708
+
13709
+
13710
+
13132
13711
 
13133
13712
 
13134
- <p>Like models.URLField, but using validators.EnhancedURLValidator and forms.LaxURLField.</p>
13135
13713
 
13136
13714
 
13137
13715
 
@@ -13167,15 +13745,20 @@ This is used by the serialization framework.</p>
13167
13745
 
13168
13746
  <div class="doc doc-contents ">
13169
13747
  <p class="doc doc-class-bases">
13170
- Bases: <code><autoref identifier="nautobot.extras.models.change_logging.ChangeLoggedModel" optional hover>ChangeLoggedModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.ContactMixin" optional hover>ContactMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.customfields.CustomFieldModel" optional hover>CustomFieldModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupsModelMixin" optional hover>DynamicGroupsModelMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.NotesMixin" optional hover>NotesMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.relationships.RelationshipModel" optional hover>RelationshipModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.SavedViewMixin" optional hover>SavedViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref></code></p>
13748
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.change_logging.ChangeLoggedModel" href="#nautobot.apps.models.ChangeLoggedModel">ChangeLoggedModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.ContactMixin" href="#nautobot.apps.models.ContactMixin">ContactMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.customfields.CustomFieldModel" href="#nautobot.apps.models.CustomFieldModel">CustomFieldModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupsModelMixin" href="#nautobot.apps.models.DynamicGroupsModelMixin">DynamicGroupsModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.NotesMixin" href="#nautobot.apps.models.NotesMixin">NotesMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.relationships.RelationshipModel" href="#nautobot.apps.models.RelationshipModel">RelationshipModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.SavedViewMixin" href="#nautobot.apps.models.SavedViewMixin">SavedViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a></code></p>
13171
13749
 
13172
13750
 
13173
- <p>This abstract base properties model contains fields and functionality that are
13751
+ <p>This abstract base properties model contains fields and functionality that are
13174
13752
  shared amongst models that requires these fields: name, color, content_types and description.</p>
13175
13753
 
13176
13754
 
13177
13755
 
13178
13756
 
13757
+
13758
+
13759
+
13760
+
13761
+
13179
13762
  <div class="doc doc-children">
13180
13763
 
13181
13764
 
@@ -13207,16 +13790,21 @@ shared amongst models that requires these fields: name, color, content_types and
13207
13790
 
13208
13791
  <div class="doc doc-contents ">
13209
13792
  <p class="doc doc-class-bases">
13210
- Bases: <code><autoref identifier="django.db.models.CharField" optional hover>CharField</autoref></code></p>
13793
+ Bases: <code><span title="django.db.models.CharField">CharField</span></code></p>
13211
13794
 
13212
13795
 
13213
- <p>A field which stores a naturalized representation of its target field, to be used for ordering its parent model.</p>
13796
+ <p>A field which stores a naturalized representation of its target field, to be used for ordering its parent model.</p>
13214
13797
  <p>:param target_field: Name of the field of the parent model to be naturalized
13215
13798
  :param naturalize_function: The function used to generate a naturalized value (optional)</p>
13216
13799
 
13217
13800
 
13218
13801
 
13219
13802
 
13803
+
13804
+
13805
+
13806
+
13807
+
13220
13808
  <div class="doc doc-children">
13221
13809
 
13222
13810
 
@@ -13238,7 +13826,7 @@ shared amongst models that requires these fields: name, color, content_types and
13238
13826
 
13239
13827
  <div class="doc doc-contents ">
13240
13828
 
13241
- <p>Generate a naturalized value from the target field</p>
13829
+ <p>Generate a naturalized value from the target field</p>
13242
13830
 
13243
13831
  </div>
13244
13832
 
@@ -13266,7 +13854,12 @@ shared amongst models that requires these fields: name, color, content_types and
13266
13854
  <div class="doc doc-contents ">
13267
13855
 
13268
13856
 
13269
- <p>Adds a <code>notes</code> property that returns a queryset of <code>Notes</code> membership.</p>
13857
+ <p>Adds a <code>notes</code> property that returns a queryset of <code>Notes</code> membership.</p>
13858
+
13859
+
13860
+
13861
+
13862
+
13270
13863
 
13271
13864
 
13272
13865
 
@@ -13295,7 +13888,7 @@ shared amongst models that requires these fields: name, color, content_types and
13295
13888
 
13296
13889
  <div class="doc doc-contents ">
13297
13890
 
13298
- <p>Return a <code>Notes</code> queryset for this instance.</p>
13891
+ <p>Return a <code>Notes</code> queryset for this instance.</p>
13299
13892
  </div>
13300
13893
 
13301
13894
  </div>
@@ -13313,7 +13906,7 @@ shared amongst models that requires these fields: name, color, content_types and
13313
13906
 
13314
13907
  <div class="doc doc-contents ">
13315
13908
 
13316
- <p>Return the notes URL for a given instance.</p>
13909
+ <p>Return the notes URL for a given instance.</p>
13317
13910
 
13318
13911
  </div>
13319
13912
 
@@ -13340,10 +13933,10 @@ shared amongst models that requires these fields: name, color, content_types and
13340
13933
 
13341
13934
  <div class="doc doc-contents ">
13342
13935
  <p class="doc doc-class-bases">
13343
- Bases: <code><autoref identifier="nautobot.extras.models.change_logging.ChangeLoggedModel" optional hover>ChangeLoggedModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.ContactMixin" optional hover>ContactMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.customfields.CustomFieldModel" optional hover>CustomFieldModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupsModelMixin" optional hover>DynamicGroupsModelMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.NotesMixin" optional hover>NotesMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.relationships.RelationshipModel" optional hover>RelationshipModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.SavedViewMixin" optional hover>SavedViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref></code></p>
13936
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.change_logging.ChangeLoggedModel" href="#nautobot.apps.models.ChangeLoggedModel">ChangeLoggedModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.ContactMixin" href="#nautobot.apps.models.ContactMixin">ContactMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.customfields.CustomFieldModel" href="#nautobot.apps.models.CustomFieldModel">CustomFieldModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupsModelMixin" href="#nautobot.apps.models.DynamicGroupsModelMixin">DynamicGroupsModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.NotesMixin" href="#nautobot.apps.models.NotesMixin">NotesMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.relationships.RelationshipModel" href="#nautobot.apps.models.RelationshipModel">RelationshipModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.SavedViewMixin" href="#nautobot.apps.models.SavedViewMixin">SavedViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a></code></p>
13344
13937
 
13345
13938
 
13346
- <p>Base abstract model for all organizational models.</p>
13939
+ <p>Base abstract model for all organizational models.</p>
13347
13940
  <p>Organizational models aid the primary models by building structured relationships
13348
13941
  and logical groups, or categorizations. Organizational models do not typically
13349
13942
  represent concrete networking resources or assets, but rather they enable user
@@ -13353,6 +13946,11 @@ Device Role, Rack Group, Status, Manufacturer, and Platform.</p>
13353
13946
 
13354
13947
 
13355
13948
 
13949
+
13950
+
13951
+
13952
+
13953
+
13356
13954
  <div class="doc doc-children">
13357
13955
 
13358
13956
 
@@ -13384,10 +13982,10 @@ Device Role, Rack Group, Status, Manufacturer, and Platform.</p>
13384
13982
 
13385
13983
  <div class="doc doc-contents ">
13386
13984
  <p class="doc doc-class-bases">
13387
- Bases: <code><autoref identifier="nautobot.extras.models.change_logging.ChangeLoggedModel" optional hover>ChangeLoggedModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.ContactMixin" optional hover>ContactMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.customfields.CustomFieldModel" optional hover>CustomFieldModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupsModelMixin" optional hover>DynamicGroupsModelMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.NotesMixin" optional hover>NotesMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.relationships.RelationshipModel" optional hover>RelationshipModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.SavedViewMixin" optional hover>SavedViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref></code></p>
13985
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.change_logging.ChangeLoggedModel" href="#nautobot.apps.models.ChangeLoggedModel">ChangeLoggedModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.ContactMixin" href="#nautobot.apps.models.ContactMixin">ContactMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.customfields.CustomFieldModel" href="#nautobot.apps.models.CustomFieldModel">CustomFieldModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupsModelMixin" href="#nautobot.apps.models.DynamicGroupsModelMixin">DynamicGroupsModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.NotesMixin" href="#nautobot.apps.models.NotesMixin">NotesMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.relationships.RelationshipModel" href="#nautobot.apps.models.RelationshipModel">RelationshipModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.SavedViewMixin" href="#nautobot.apps.models.SavedViewMixin">SavedViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a></code></p>
13388
13986
 
13389
13987
 
13390
- <p>Base abstract model for all primary models.</p>
13988
+ <p>Base abstract model for all primary models.</p>
13391
13989
  <p>A primary model is one which is materialistically relevant to the network datamodel.
13392
13990
  Such models form the basis of major elements of the data model, like Device,
13393
13991
  IP Address, Location, VLAN, Virtual Machine, etc. Primary models usually represent
@@ -13396,6 +13994,11 @@ tangible or logical resources on the network, or within the organization.</p>
13396
13994
 
13397
13995
 
13398
13996
 
13997
+
13998
+
13999
+
14000
+
14001
+
13399
14002
  <div class="doc doc-children">
13400
14003
 
13401
14004
 
@@ -13427,10 +14030,15 @@ tangible or logical resources on the network, or within the organization.</p>
13427
14030
 
13428
14031
  <div class="doc doc-contents ">
13429
14032
  <p class="doc doc-class-bases">
13430
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
14033
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
14034
+
14035
+
14036
+ <p>Abstract class for any model which may have custom relationships associated with it.</p>
14037
+
14038
+
14039
+
13431
14040
 
13432
14041
 
13433
- <p>Abstract class for any model which may have custom relationships associated with it.</p>
13434
14042
 
13435
14043
 
13436
14044
 
@@ -13456,7 +14064,7 @@ tangible or logical resources on the network, or within the organization.</p>
13456
14064
 
13457
14065
  <div class="doc doc-contents ">
13458
14066
 
13459
- <p>Return a dictionary of RelationshipAssociation querysets for all custom relationships</p>
14067
+ <p>Return a dictionary of RelationshipAssociation querysets for all custom relationships</p>
13460
14068
 
13461
14069
 
13462
14070
  <p><span class="doc-section-title">Returns:</span></p>
@@ -13470,7 +14078,7 @@ tangible or logical resources on the network, or within the organization.</p>
13470
14078
  <tbody>
13471
14079
  <tr class="doc-section-item">
13472
14080
  <td>
13473
- <code><autoref identifier="dict" optional>dict</autoref></code>
14081
+ <code>dict</code>
13474
14082
  </td>
13475
14083
  <td>
13476
14084
  <div class="doc-md-description">
@@ -13509,7 +14117,7 @@ tangible or logical resources on the network, or within the organization.</p>
13509
14117
 
13510
14118
  <div class="doc doc-contents ">
13511
14119
 
13512
- <p>Return a dictionary of relationships with the label and the value or the queryset for each.</p>
14120
+ <p>Return a dictionary of relationships with the label and the value or the queryset for each.</p>
13513
14121
  <p>Used for rendering relationships in the UI; see nautobot/core/templates/inc/relationships_table_rows.html</p>
13514
14122
 
13515
14123
 
@@ -13524,7 +14132,7 @@ tangible or logical resources on the network, or within the organization.</p>
13524
14132
  <tbody>
13525
14133
  <tr class="doc-section-item">
13526
14134
  <td>
13527
- <code><autoref identifier="dict" optional>dict</autoref></code>
14135
+ <code>dict</code>
13528
14136
  </td>
13529
14137
  <td>
13530
14138
  <div class="doc-md-description">
@@ -13573,7 +14181,7 @@ tangible or logical resources on the network, or within the organization.</p>
13573
14181
 
13574
14182
  <div class="doc doc-contents ">
13575
14183
 
13576
- <p>Same docstring as get_relationships_data() above except this only returns relationships
14184
+ <p>Same docstring as get_relationships_data() above except this only returns relationships
13577
14185
  where advanced_ui==True for displaying in the 'Advanced' tab on the object's page</p>
13578
14186
 
13579
14187
  </div>
@@ -13591,7 +14199,7 @@ where advanced_ui==True for displaying in the 'Advanced' tab on the object's pag
13591
14199
 
13592
14200
  <div class="doc doc-contents ">
13593
14201
 
13594
- <p>Same docstring as get_relationships_data() above except this only returns relationships
14202
+ <p>Same docstring as get_relationships_data() above except this only returns relationships
13595
14203
  where advanced_ui==False for displaying in the main object detail tab on the object's page</p>
13596
14204
 
13597
14205
  </div>
@@ -13601,6 +14209,23 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13601
14209
  <div class="doc doc-object doc-function">
13602
14210
 
13603
14211
 
14212
+ <h3 id="nautobot.apps.models.RelationshipModel.get_relationships_with_related_objects" class="doc doc-heading">
14213
+ <code class="highlight language-python"><span class="n">get_relationships_with_related_objects</span><span class="p">(</span><span class="n">include_hidden</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">advanced_ui</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
14214
+
14215
+ <a href="#nautobot.apps.models.RelationshipModel.get_relationships_with_related_objects" class="headerlink" title="Permanent link">&para;</a></h3>
14216
+
14217
+
14218
+ <div class="doc doc-contents ">
14219
+
14220
+ <p>Alternative version of get_relationships().</p>
14221
+
14222
+ </div>
14223
+
14224
+ </div>
14225
+
14226
+ <div class="doc doc-object doc-function">
14227
+
14228
+
13604
14229
  <h3 id="nautobot.apps.models.RelationshipModel.required_related_objects_errors" class="doc doc-heading">
13605
14230
  <code class="highlight language-python"><span class="n">required_related_objects_errors</span><span class="p">(</span><span class="n">output_for</span><span class="o">=</span><span class="s1">&#39;ui&#39;</span><span class="p">,</span> <span class="n">initial_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">relationships_key_specified</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">instance</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
13606
14231
 
@@ -13627,9 +14252,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13627
14252
  </thead>
13628
14253
  <tbody>
13629
14254
  <tr class="doc-section-item">
13630
- <td><code>output_for</code></td>
13631
14255
  <td>
13632
- <code><autoref identifier="str" optional>str</autoref></code>
14256
+ <code>output_for</code>
14257
+ </td>
14258
+ <td>
14259
+ <code>str</code>
13633
14260
  </td>
13634
14261
  <td>
13635
14262
  <div class="doc-md-description">
@@ -13641,9 +14268,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13641
14268
  </td>
13642
14269
  </tr>
13643
14270
  <tr class="doc-section-item">
13644
- <td><code>initial_data</code></td>
13645
14271
  <td>
13646
- <code><autoref identifier="dict" optional>dict</autoref></code>
14272
+ <code>initial_data</code>
14273
+ </td>
14274
+ <td>
14275
+ <code>dict</code>
13647
14276
  </td>
13648
14277
  <td>
13649
14278
  <div class="doc-md-description">
@@ -13655,9 +14284,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13655
14284
  </td>
13656
14285
  </tr>
13657
14286
  <tr class="doc-section-item">
13658
- <td><code>relationships_key_specified</code></td>
13659
14287
  <td>
13660
- <code><autoref identifier="bool" optional>bool</autoref></code>
14288
+ <code>relationships_key_specified</code>
14289
+ </td>
14290
+ <td>
14291
+ <code>bool</code>
13661
14292
  </td>
13662
14293
  <td>
13663
14294
  <div class="doc-md-description">
@@ -13669,9 +14300,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13669
14300
  </td>
13670
14301
  </tr>
13671
14302
  <tr class="doc-section-item">
13672
- <td><code>instance</code></td>
13673
14303
  <td>
13674
- <code><autoref identifier="Optional" optional>Optional</autoref>[<autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref>]</code>
14304
+ <code>instance</code>
14305
+ </td>
14306
+ <td>
14307
+ <code>Optional[<a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a>]</code>
13675
14308
  </td>
13676
14309
  <td>
13677
14310
  <div class="doc-md-description">
@@ -13684,7 +14317,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13684
14317
  </tr>
13685
14318
  </tbody>
13686
14319
  </table>
13687
- <p>Returns:
14320
+ <p>Returns:
13688
14321
  (list[dict]): List of field error dicts if any are found</p>
13689
14322
 
13690
14323
  </div>
@@ -13712,7 +14345,12 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13712
14345
 
13713
14346
  <div class="doc doc-contents ">
13714
14347
  <p class="doc doc-class-bases">
13715
- Bases: <code><autoref identifier="nautobot.core.models.querysets.CompositeKeyQuerySetMixin" optional hover>CompositeKeyQuerySetMixin</autoref></code>, <code><autoref identifier="django.db.models.QuerySet" optional hover>QuerySet</autoref></code></p>
14348
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.querysets.CompositeKeyQuerySetMixin" href="#nautobot.apps.models.CompositeKeyQuerySetMixin">CompositeKeyQuerySetMixin</a></code>, <code><span title="django.db.models.QuerySet">QuerySet</span></code></p>
14349
+
14350
+
14351
+
14352
+
14353
+
13716
14354
 
13717
14355
 
13718
14356
 
@@ -13739,7 +14377,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13739
14377
 
13740
14378
  <div class="doc doc-contents ">
13741
14379
 
13742
- <p>Check whether the given user can perform the given action with regard to the given instance of this model.</p>
14380
+ <p>Check whether the given user can perform the given action with regard to the given instance of this model.</p>
13743
14381
  <p>Either instance or pk must be specified, but not both.</p>
13744
14382
 
13745
14383
 
@@ -13755,9 +14393,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13755
14393
  </thead>
13756
14394
  <tbody>
13757
14395
  <tr class="doc-section-item">
13758
- <td><code>user</code></td>
13759
14396
  <td>
13760
- <code><autoref identifier="User" optional>User</autoref></code>
14397
+ <code>user</code>
14398
+ </td>
14399
+ <td>
14400
+ <code>User</code>
13761
14401
  </td>
13762
14402
  <td>
13763
14403
  <div class="doc-md-description">
@@ -13769,9 +14409,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13769
14409
  </td>
13770
14410
  </tr>
13771
14411
  <tr class="doc-section-item">
13772
- <td><code>instance</code></td>
13773
14412
  <td>
13774
- <code><autoref identifier="self.model" optional hover>model</autoref></code>
14413
+ <code>instance</code>
14414
+ </td>
14415
+ <td>
14416
+ <code><span title="self.model">model</span></code>
13775
14417
  </td>
13776
14418
  <td>
13777
14419
  <div class="doc-md-description">
@@ -13783,9 +14425,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13783
14425
  </td>
13784
14426
  </tr>
13785
14427
  <tr class="doc-section-item">
13786
- <td><code>pk</code></td>
13787
14428
  <td>
13788
- <code><autoref identifier="uuid" optional>uuid</autoref></code>
14429
+ <code>pk</code>
14430
+ </td>
14431
+ <td>
14432
+ <code>uuid</code>
13789
14433
  </td>
13790
14434
  <td>
13791
14435
  <div class="doc-md-description">
@@ -13797,9 +14441,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13797
14441
  </td>
13798
14442
  </tr>
13799
14443
  <tr class="doc-section-item">
13800
- <td><code>action</code></td>
13801
14444
  <td>
13802
- <code><autoref identifier="str" optional>str</autoref></code>
14445
+ <code>action</code>
14446
+ </td>
14447
+ <td>
14448
+ <code>str</code>
13803
14449
  </td>
13804
14450
  <td>
13805
14451
  <div class="doc-md-description">
@@ -13825,7 +14471,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13825
14471
  <tbody>
13826
14472
  <tr class="doc-section-item">
13827
14473
  <td>
13828
- <code><autoref identifier="bool" optional>bool</autoref></code>
14474
+ <code>bool</code>
13829
14475
  </td>
13830
14476
  <td>
13831
14477
  <div class="doc-md-description">
@@ -13851,7 +14497,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
13851
14497
 
13852
14498
  <div class="doc doc-contents ">
13853
14499
 
13854
- <p>Wrapper for <code>QuerySet.values_list()</code> that adds the <code>distinct()</code> query to return a list of unique values.</p>
14500
+ <p>Wrapper for <code>QuerySet.values_list()</code> that adds the <code>distinct()</code> query to return a list of unique values.</p>
13855
14501
 
13856
14502
 
13857
14503
  <details class="note" open>
@@ -13872,9 +14518,11 @@ in the Django <code>distinct()</code> documentation at https://docs.djangoprojec
13872
14518
  </thead>
13873
14519
  <tbody>
13874
14520
  <tr class="doc-section-item">
13875
- <td><code>*fields</code></td>
13876
14521
  <td>
13877
- <code><autoref identifier="str" optional>str</autoref></code>
14522
+ <code>*fields</code>
14523
+ </td>
14524
+ <td>
14525
+ <code>str</code>
13878
14526
  </td>
13879
14527
  <td>
13880
14528
  <div class="doc-md-description">
@@ -13886,9 +14534,11 @@ in the Django <code>distinct()</code> documentation at https://docs.djangoprojec
13886
14534
  </td>
13887
14535
  </tr>
13888
14536
  <tr class="doc-section-item">
13889
- <td><code>flat</code></td>
13890
14537
  <td>
13891
- <code><autoref identifier="bool" optional>bool</autoref></code>
14538
+ <code>flat</code>
14539
+ </td>
14540
+ <td>
14541
+ <code>bool</code>
13892
14542
  </td>
13893
14543
  <td>
13894
14544
  <div class="doc-md-description">
@@ -13901,9 +14551,11 @@ Defaults to False.</p>
13901
14551
  </td>
13902
14552
  </tr>
13903
14553
  <tr class="doc-section-item">
13904
- <td><code>named</code></td>
13905
14554
  <td>
13906
- <code><autoref identifier="bool" optional>bool</autoref></code>
14555
+ <code>named</code>
14556
+ </td>
14557
+ <td>
14558
+ <code>bool</code>
13907
14559
  </td>
13908
14560
  <td>
13909
14561
  <div class="doc-md-description">
@@ -13929,7 +14581,7 @@ Defaults to False.</p>
13929
14581
  <tbody>
13930
14582
  <tr class="doc-section-item">
13931
14583
  <td>
13932
- <code><autoref identifier="django.db.models.QuerySet" optional hover>QuerySet</autoref></code>
14584
+ <code><span title="django.db.models.QuerySet">QuerySet</span></code>
13933
14585
  </td>
13934
14586
  <td>
13935
14587
  <div class="doc-md-description">
@@ -13955,7 +14607,7 @@ Defaults to False.</p>
13955
14607
 
13956
14608
  <div class="doc doc-contents ">
13957
14609
 
13958
- <p>Filter the QuerySet to return only objects on which the specified user has been granted the specified
14610
+ <p>Filter the QuerySet to return only objects on which the specified user has been granted the specified
13959
14611
  permission.</p>
13960
14612
  <p>:param user: User instance
13961
14613
  :param action: The action which must be permitted (e.g. "view" for "dcim.view_location"); default is 'view'</p>
@@ -13985,10 +14637,15 @@ permission.</p>
13985
14637
 
13986
14638
  <div class="doc doc-contents ">
13987
14639
  <p class="doc doc-class-bases">
13988
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
14640
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
14641
+
14642
+
14643
+ <p>Abstract mixin for enabling Saved View functionality to a given model class.</p>
14644
+
14645
+
14646
+
13989
14647
 
13990
14648
 
13991
- <p>Abstract mixin for enabling Saved View functionality to a given model class.</p>
13992
14649
 
13993
14650
 
13994
14651
 
@@ -14024,10 +14681,10 @@ permission.</p>
14024
14681
 
14025
14682
  <div class="doc doc-contents ">
14026
14683
  <p class="doc doc-class-bases">
14027
- Bases: <code><autoref identifier="nautobot.core.models.fields.ForeignKeyLimitedByContentTypes" optional hover>ForeignKeyLimitedByContentTypes</autoref></code></p>
14684
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.fields.ForeignKeyLimitedByContentTypes" href="#nautobot.apps.models.ForeignKeyLimitedByContentTypes">ForeignKeyLimitedByContentTypes</a></code></p>
14028
14685
 
14029
14686
 
14030
- <p>Model database field that automatically limits custom choices.</p>
14687
+ <p>Model database field that automatically limits custom choices.</p>
14031
14688
  <p>The limit_choices_to for the field are automatically derived from:</p>
14032
14689
  <div class="highlight"><pre><span></span><code>- the content-type to which the field is attached (e.g. `dcim.device`)
14033
14690
  </code></pre></div>
@@ -14035,6 +14692,11 @@ permission.</p>
14035
14692
 
14036
14693
 
14037
14694
 
14695
+
14696
+
14697
+
14698
+
14699
+
14038
14700
  <div class="doc doc-children">
14039
14701
 
14040
14702
 
@@ -14056,7 +14718,7 @@ permission.</p>
14056
14718
 
14057
14719
  <div class="doc doc-contents ">
14058
14720
 
14059
- <p>Overload default so that we can assert that <code>.get_FOO_display</code> is
14721
+ <p>Overload default so that we can assert that <code>.get_FOO_display</code> is
14060
14722
  attached to any model that is using a <code>StatusField</code>.</p>
14061
14723
  <p>Using <code>.contribute_to_class()</code> is how field objects get added to the model
14062
14724
  at during the instance preparation. This is also where any custom model
@@ -14090,15 +14752,20 @@ having to define it on the model yourself.</p>
14090
14752
 
14091
14753
  <div class="doc doc-contents ">
14092
14754
  <p class="doc doc-class-bases">
14093
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
14755
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
14094
14756
 
14095
14757
 
14096
- <p>Deprecated abstract base class for any model which may have statuses.</p>
14758
+ <p>Deprecated abstract base class for any model which may have statuses.</p>
14097
14759
  <p>Just directly include a StatusField instead for any new models.</p>
14098
14760
 
14099
14761
 
14100
14762
 
14101
14763
 
14764
+
14765
+
14766
+
14767
+
14768
+
14102
14769
  <div class="doc doc-children">
14103
14770
 
14104
14771
 
@@ -14130,10 +14797,15 @@ having to define it on the model yourself.</p>
14130
14797
 
14131
14798
  <div class="doc doc-contents ">
14132
14799
  <p class="doc doc-class-bases">
14133
- Bases: <code><autoref identifier="taggit.managers.TaggableManager" optional hover>TaggableManager</autoref></code></p>
14800
+ Bases: <code><span title="taggit.managers.TaggableManager">TaggableManager</span></code></p>
14801
+
14802
+
14803
+ <p>Override FormField method on taggit.managers.TaggableManager to match the Nautobot UI.</p>
14804
+
14805
+
14806
+
14134
14807
 
14135
14808
 
14136
- <p>Override FormField method on taggit.managers.TaggableManager to match the Nautobot UI.</p>
14137
14809
 
14138
14810
 
14139
14811
 
@@ -14169,10 +14841,15 @@ having to define it on the model yourself.</p>
14169
14841
 
14170
14842
  <div class="doc doc-contents ">
14171
14843
  <p class="doc doc-class-bases">
14172
- Bases: <code><autoref identifier="taggit.managers._TaggableManager" optional hover>_TaggableManager</autoref></code>, <code><autoref identifier="nautobot.core.models.managers.BaseManager" optional hover>BaseManager</autoref></code></p>
14844
+ Bases: <code><span title="taggit.managers._TaggableManager">_TaggableManager</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.managers.BaseManager" href="#nautobot.apps.models.BaseManager">BaseManager</a></code></p>
14845
+
14846
+
14847
+ <p>Manager class for model 'tags' fields.</p>
14848
+
14849
+
14850
+
14173
14851
 
14174
14852
 
14175
- <p>Manager class for model 'tags' fields.</p>
14176
14853
 
14177
14854
 
14178
14855
 
@@ -14208,10 +14885,15 @@ having to define it on the model yourself.</p>
14208
14885
 
14209
14886
  <div class="doc doc-contents ">
14210
14887
  <p class="doc doc-class-bases">
14211
- Bases: <code><autoref identifier="tree_queries.query.TreeManager" optional hover>TreeManager</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseManager.from_queryset" optional hover>from_queryset</autoref>(<autoref identifier="nautobot.core.models.tree_queries.TreeQuerySet" optional hover>TreeQuerySet</autoref>)</code></p>
14888
+ Bases: <code><span title="tree_queries.query.TreeManager">TreeManager</span></code>, <code><span title="nautobot.core.models.BaseManager.from_queryset">from_queryset</span>(<a class="autorefs autorefs-internal" title="nautobot.core.models.tree_queries.TreeQuerySet" href="#nautobot.apps.models.TreeQuerySet">TreeQuerySet</a>)</code></p>
14889
+
14890
+
14891
+ <p>Extend django-tree-queries' TreeManager to incorporate RestrictedQuerySet.</p>
14892
+
14893
+
14894
+
14212
14895
 
14213
14896
 
14214
- <p>Extend django-tree-queries' TreeManager to incorporate RestrictedQuerySet.</p>
14215
14897
 
14216
14898
 
14217
14899
 
@@ -14240,7 +14922,7 @@ having to define it on the model yourself.</p>
14240
14922
 
14241
14923
  <div class="doc doc-contents ">
14242
14924
 
14243
- <p>Cacheable version of <code>TreeQuerySet.max_tree_depth()</code>.</p>
14925
+ <p>Cacheable version of <code>TreeQuerySet.max_tree_depth()</code>.</p>
14244
14926
  <p>Generally TreeManagers are persistent objects while TreeQuerySets are not, hence the difference in behavior.</p>
14245
14927
  </div>
14246
14928
 
@@ -14269,10 +14951,15 @@ having to define it on the model yourself.</p>
14269
14951
 
14270
14952
  <div class="doc doc-contents ">
14271
14953
  <p class="doc doc-class-bases">
14272
- Bases: <code><autoref identifier="tree_queries.models.TreeNode" optional hover>TreeNode</autoref></code></p>
14954
+ Bases: <code><span title="tree_queries.models.TreeNode">TreeNode</span></code></p>
14955
+
14956
+
14957
+ <p>Nautobot-specific base class for models that exist in a self-referential tree.</p>
14958
+
14959
+
14960
+
14273
14961
 
14274
14962
 
14275
- <p>Nautobot-specific base class for models that exist in a self-referential tree.</p>
14276
14963
 
14277
14964
 
14278
14965
 
@@ -14301,7 +14988,7 @@ having to define it on the model yourself.</p>
14301
14988
 
14302
14989
  <div class="doc doc-contents ">
14303
14990
 
14304
- <p>By default, TreeModels display their full ancestry for clarity.</p>
14991
+ <p>By default, TreeModels display their full ancestry for clarity.</p>
14305
14992
  <p>As this is an expensive thing to calculate, we cache it for a few seconds in the case of repeated lookups.</p>
14306
14993
  </div>
14307
14994
 
@@ -14330,10 +15017,15 @@ having to define it on the model yourself.</p>
14330
15017
 
14331
15018
  <div class="doc doc-contents ">
14332
15019
  <p class="doc doc-class-bases">
14333
- Bases: <code><autoref identifier="tree_queries.query.TreeQuerySet" optional hover>TreeQuerySet</autoref></code>, <code><autoref identifier="nautobot.core.models.querysets.RestrictedQuerySet" optional hover>RestrictedQuerySet</autoref></code></p>
15020
+ Bases: <code><span title="tree_queries.query.TreeQuerySet">TreeQuerySet</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.querysets.RestrictedQuerySet" href="#nautobot.apps.models.RestrictedQuerySet">RestrictedQuerySet</a></code></p>
15021
+
15022
+
15023
+ <p>Combine django-tree-queries' TreeQuerySet with our RestrictedQuerySet for permissions enforcement.</p>
15024
+
15025
+
15026
+
14334
15027
 
14335
15028
 
14336
- <p>Combine django-tree-queries' TreeQuerySet with our RestrictedQuerySet for permissions enforcement.</p>
14337
15029
 
14338
15030
 
14339
15031
 
@@ -14359,7 +15051,7 @@ having to define it on the model yourself.</p>
14359
15051
 
14360
15052
  <div class="doc doc-contents ">
14361
15053
 
14362
- <p>Custom ancestors method for optimization purposes.</p>
15054
+ <p>Custom ancestors method for optimization purposes.</p>
14363
15055
  <p>Dynamically computes ancestors either through the tree or through the <code>parent</code> foreign key depending on whether
14364
15056
  tree fields are present on <code>of</code>.</p>
14365
15057
 
@@ -14378,7 +15070,7 @@ tree fields are present on <code>of</code>.</p>
14378
15070
 
14379
15071
  <div class="doc doc-contents ">
14380
15072
 
14381
- <p>Get the maximum tree depth of any node in this queryset.</p>
15073
+ <p>Get the maximum tree depth of any node in this queryset.</p>
14382
15074
  <p>In most cases you should use TreeManager.max_depth instead as it's cached and this is not.</p>
14383
15075
  <p>root - depth 0
14384
15076
  \
@@ -14414,15 +15106,20 @@ This is probably a bug, we should really return -1 in the case of an empty query
14414
15106
 
14415
15107
  <div class="doc doc-contents ">
14416
15108
  <p class="doc doc-class-bases">
14417
- Bases: <code><autoref identifier="django.core.validators.RegexValidator" optional hover>RegexValidator</autoref></code></p>
15109
+ Bases: <code><span title="django.core.validators.RegexValidator">RegexValidator</span></code></p>
14418
15110
 
14419
15111
 
14420
- <p>Checks that the value is a valid regular expression.</p>
15112
+ <p>Checks that the value is a valid regular expression.</p>
14421
15113
  <p>Don't confuse this with <code>RegexValidator</code>, which <em>uses</em> a regex to validate a value.</p>
14422
15114
 
14423
15115
 
14424
15116
 
14425
15117
 
15118
+
15119
+
15120
+
15121
+
15122
+
14426
15123
  <div class="doc doc-children">
14427
15124
 
14428
15125
 
@@ -14454,10 +15151,15 @@ This is probably a bug, we should really return -1 in the case of an empty query
14454
15151
 
14455
15152
  <div class="doc doc-contents ">
14456
15153
  <p class="doc doc-class-bases">
14457
- Bases: <code><autoref identifier="django.db.models.BinaryField" optional hover>BinaryField</autoref></code></p>
15154
+ Bases: <code><span title="django.db.models.BinaryField">BinaryField</span></code></p>
15155
+
15156
+
15157
+ <p>IP network address</p>
15158
+
15159
+
15160
+
14458
15161
 
14459
15162
 
14460
- <p>IP network address</p>
14461
15163
 
14462
15164
 
14463
15165
 
@@ -14483,7 +15185,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14483
15185
 
14484
15186
  <div class="doc doc-contents ">
14485
15187
 
14486
- <p>Returns the correct field type for a given database vendor.</p>
15188
+ <p>Returns the correct field type for a given database vendor.</p>
14487
15189
 
14488
15190
  </div>
14489
15191
 
@@ -14500,7 +15202,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14500
15202
 
14501
15203
  <div class="doc doc-contents ">
14502
15204
 
14503
- <p>Converts DB (varbinary) to Python (str).</p>
15205
+ <p>Converts DB (varbinary) to Python (str).</p>
14504
15206
 
14505
15207
  </div>
14506
15208
 
@@ -14517,7 +15219,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14517
15219
 
14518
15220
  <div class="doc doc-contents ">
14519
15221
 
14520
- <p>Converts Python (str) to DB (varbinary).</p>
15222
+ <p>Converts Python (str) to DB (varbinary).</p>
14521
15223
 
14522
15224
  </div>
14523
15225
 
@@ -14534,7 +15236,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14534
15236
 
14535
15237
  <div class="doc doc-contents ">
14536
15238
 
14537
- <p>Converts <code>value</code> to Python (str).</p>
15239
+ <p>Converts <code>value</code> to Python (str).</p>
14538
15240
 
14539
15241
  </div>
14540
15242
 
@@ -14551,7 +15253,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14551
15253
 
14552
15254
  <div class="doc doc-contents ">
14553
15255
 
14554
- <p>IPField is serialized as str(IPAddress())</p>
15256
+ <p>IPField is serialized as str(IPAddress())</p>
14555
15257
 
14556
15258
  </div>
14557
15259
 
@@ -14577,7 +15279,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14577
15279
 
14578
15280
  <div class="doc doc-contents ">
14579
15281
 
14580
- <p>Generate an efficient, human-friendly string from a set of integers. Intended for use with ArrayField.
15282
+ <p>Generate an efficient, human-friendly string from a set of integers. Intended for use with ArrayField.
14581
15283
  For example:
14582
15284
  [0, 1, 2, 10, 14, 15, 16] =&gt; "0-2, 10, 14-16"</p>
14583
15285
 
@@ -14596,7 +15298,7 @@ For example:
14596
15298
 
14597
15299
  <div class="doc doc-contents ">
14598
15300
 
14599
- <p>Convert the given list of natural key values to a single URL-path-usable string.</p>
15301
+ <p>Convert the given list of natural key values to a single URL-path-usable string.</p>
14600
15302
  <ul>
14601
15303
  <li>Non-URL-safe characters are percent-encoded.</li>
14602
15304
  <li>Null (<code>None</code>) values are percent-encoded as a literal null character <code>%00</code>.</li>
@@ -14618,7 +15320,7 @@ For example:
14618
15320
 
14619
15321
  <div class="doc doc-contents ">
14620
15322
 
14621
- <p>Convert the given list of natural key <code>values</code> to a single human-readable string.</p>
15323
+ <p>Convert the given list of natural key <code>values</code> to a single human-readable string.</p>
14622
15324
  <p>If <code>pk</code> is provided, it will be appended to the end of the natural slug. If the PK is a UUID,
14623
15325
  only the first four characters will be appended.</p>
14624
15326
  <p>A third-party lossy <code>slugify()</code> function is used to convert each natural key value to a
@@ -14649,7 +15351,7 @@ slug, and then they are joined with an underscore.</p>
14649
15351
 
14650
15352
  <div class="doc doc-contents ">
14651
15353
 
14652
- <p>Return a Subquery suitable for annotating a child object count.</p>
15354
+ <p>Return a Subquery suitable for annotating a child object count.</p>
14653
15355
 
14654
15356
 
14655
15357
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -14664,9 +15366,11 @@ slug, and then they are joined with an underscore.</p>
14664
15366
  </thead>
14665
15367
  <tbody>
14666
15368
  <tr class="doc-section-item">
14667
- <td><code>model</code></td>
14668
15369
  <td>
14669
- <code><autoref identifier="Model" optional>Model</autoref></code>
15370
+ <code>model</code>
15371
+ </td>
15372
+ <td>
15373
+ <code>Model</code>
14670
15374
  </td>
14671
15375
  <td>
14672
15376
  <div class="doc-md-description">
@@ -14678,9 +15382,11 @@ slug, and then they are joined with an underscore.</p>
14678
15382
  </td>
14679
15383
  </tr>
14680
15384
  <tr class="doc-section-item">
14681
- <td><code>field</code></td>
14682
15385
  <td>
14683
- <code><autoref identifier="str" optional>str</autoref></code>
15386
+ <code>field</code>
15387
+ </td>
15388
+ <td>
15389
+ <code>str</code>
14684
15390
  </td>
14685
15391
  <td>
14686
15392
  <div class="doc-md-description">
@@ -14692,9 +15398,11 @@ slug, and then they are joined with an underscore.</p>
14692
15398
  </td>
14693
15399
  </tr>
14694
15400
  <tr class="doc-section-item">
14695
- <td><code>filter_dict</code></td>
14696
15401
  <td>
14697
- <code><autoref identifier="dict" optional>dict</autoref></code>
15402
+ <code>filter_dict</code>
15403
+ </td>
15404
+ <td>
15405
+ <code>dict</code>
14698
15406
  </td>
14699
15407
  <td>
14700
15408
  <div class="doc-md-description">
@@ -14706,9 +15414,11 @@ slug, and then they are joined with an underscore.</p>
14706
15414
  </td>
14707
15415
  </tr>
14708
15416
  <tr class="doc-section-item">
14709
- <td><code>manager_name</code></td>
14710
15417
  <td>
14711
- <code><autoref identifier="str" optional>str</autoref></code>
15418
+ <code>manager_name</code>
15419
+ </td>
15420
+ <td>
15421
+ <code>str</code>
14712
15422
  </td>
14713
15423
  <td>
14714
15424
  <div class="doc-md-description">
@@ -14737,7 +15447,7 @@ slug, and then they are joined with an underscore.</p>
14737
15447
 
14738
15448
  <div class="doc doc-contents ">
14739
15449
 
14740
- <p>Convert the given composite-key string back to a list of distinct values.</p>
15450
+ <p>Convert the given composite-key string back to a list of distinct values.</p>
14741
15451
  <ul>
14742
15452
  <li>Percent-encoded characters are converted back to their raw values</li>
14743
15453
  <li>Single literal null characters <code>%00</code> are converted back to a Python <code>None</code>.</li>
@@ -14759,7 +15469,7 @@ slug, and then they are joined with an underscore.</p>
14759
15469
 
14760
15470
  <div class="doc doc-contents ">
14761
15471
 
14762
- <p>Decorator used to register extras provided features to a model</p>
15472
+ <p>Decorator used to register extras provided features to a model</p>
14763
15473
 
14764
15474
  </div>
14765
15475
 
@@ -14776,7 +15486,7 @@ slug, and then they are joined with an underscore.</p>
14776
15486
 
14777
15487
  <div class="doc doc-contents ">
14778
15488
 
14779
- <p>Find all models that have fields with the specified names and satisfy the additional constraints,
15489
+ <p>Find all models that have fields with the specified names and satisfy the additional constraints,
14780
15490
  and return them grouped by app.</p>
14781
15491
 
14782
15492
 
@@ -14792,9 +15502,11 @@ and return them grouped by app.</p>
14792
15502
  </thead>
14793
15503
  <tbody>
14794
15504
  <tr class="doc-section-item">
14795
- <td><code>app_models</code></td>
14796
15505
  <td>
14797
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref>]</code>
15506
+ <code>app_models</code>
15507
+ </td>
15508
+ <td>
15509
+ <code>list[<a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a>]</code>
14798
15510
  </td>
14799
15511
  <td>
14800
15512
  <div class="doc-md-description">
@@ -14806,9 +15518,11 @@ and return them grouped by app.</p>
14806
15518
  </td>
14807
15519
  </tr>
14808
15520
  <tr class="doc-section-item">
14809
- <td><code>field_names</code></td>
14810
15521
  <td>
14811
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="str" optional>str</autoref>]</code>
15522
+ <code>field_names</code>
15523
+ </td>
15524
+ <td>
15525
+ <code>list[str]</code>
14812
15526
  </td>
14813
15527
  <td>
14814
15528
  <div class="doc-md-description">
@@ -14820,9 +15534,11 @@ and return them grouped by app.</p>
14820
15534
  </td>
14821
15535
  </tr>
14822
15536
  <tr class="doc-section-item">
14823
- <td><code>field_attributes</code></td>
14824
15537
  <td>
14825
- <code><autoref identifier="dict" optional>dict</autoref></code>
15538
+ <code>field_attributes</code>
15539
+ </td>
15540
+ <td>
15541
+ <code>dict</code>
14826
15542
  </td>
14827
15543
  <td>
14828
15544
  <div class="doc-md-description">
@@ -14834,9 +15550,11 @@ and return them grouped by app.</p>
14834
15550
  </td>
14835
15551
  </tr>
14836
15552
  <tr class="doc-section-item">
14837
- <td><code>additional_constraints</code></td>
14838
15553
  <td>
14839
- <code><autoref identifier="dict" optional>dict</autoref></code>
15554
+ <code>additional_constraints</code>
15555
+ </td>
15556
+ <td>
15557
+ <code>dict</code>
14840
15558
  </td>
14841
15559
  <td>
14842
15560
  <div class="doc-md-description">
@@ -14870,7 +15588,7 @@ and return them grouped by app.</p>
14870
15588
 
14871
15589
  <div class="doc doc-contents ">
14872
15590
 
14873
- <p>Get a list of all non-abstract models that inherit from the given base_class.</p>
15591
+ <p>Get a list of all non-abstract models that inherit from the given base_class.</p>
14874
15592
 
14875
15593
  </div>
14876
15594
 
@@ -14887,7 +15605,7 @@ and return them grouped by app.</p>
14887
15605
 
14888
15606
  <div class="doc doc-contents ">
14889
15607
 
14890
- <p>Return the Global namespace.</p>
15608
+ <p>Return the Global namespace.</p>
14891
15609
 
14892
15610
  </div>
14893
15611
 
@@ -14904,7 +15622,7 @@ and return them grouped by app.</p>
14904
15622
 
14905
15623
  <div class="doc doc-contents ">
14906
15624
 
14907
- <p>Return the PK of the Global namespace for use in default value for foreign keys.</p>
15625
+ <p>Return the PK of the Global namespace for use in default value for foreign keys.</p>
14908
15626
 
14909
15627
  </div>
14910
15628
 
@@ -14921,7 +15639,7 @@ and return them grouped by app.</p>
14921
15639
 
14922
15640
  <div class="doc doc-contents ">
14923
15641
 
14924
- <p>Return True if the instance can have Tags assigned to it; False otherwise.</p>
15642
+ <p>Return True if the instance can have Tags assigned to it; False otherwise.</p>
14925
15643
 
14926
15644
  </div>
14927
15645
 
@@ -14938,7 +15656,7 @@ and return them grouped by app.</p>
14938
15656
 
14939
15657
  <div class="doc doc-contents ">
14940
15658
 
14941
- <p>Take an alphanumeric string and prepend all integers to <code>integer_places</code> places to ensure the strings
15659
+ <p>Take an alphanumeric string and prepend all integers to <code>integer_places</code> places to ensure the strings
14942
15660
  are ordered naturally. For example:</p>
14943
15661
  <div class="highlight"><pre><span></span><code>location9router21
14944
15662
  location10router4
@@ -14968,7 +15686,7 @@ location00000010router00000019
14968
15686
 
14969
15687
  <div class="doc doc-contents ">
14970
15688
 
14971
- <p>Similar in nature to naturalize(), but takes into account a particular naming format adapted from the old
15689
+ <p>Similar in nature to naturalize(), but takes into account a particular naming format adapted from the old
14972
15690
  InterfaceManager.</p>
14973
15691
  <p>:param value: The value to be naturalized
14974
15692
  :param max_length: The maximum length of the returned string. Characters beyond this length will be stripped.</p>
@@ -14988,7 +15706,7 @@ InterfaceManager.</p>
14988
15706
 
14989
15707
  <div class="doc doc-contents ">
14990
15708
 
14991
- <p>Given a <code>Q</code> object, display it in a more human-readable format.</p>
15709
+ <p>Given a <code>Q</code> object, display it in a more human-readable format.</p>
14992
15710
 
14993
15711
 
14994
15712
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -15003,9 +15721,11 @@ InterfaceManager.</p>
15003
15721
  </thead>
15004
15722
  <tbody>
15005
15723
  <tr class="doc-section-item">
15006
- <td><code>query</code></td>
15007
15724
  <td>
15008
- <code><autoref identifier="Q" optional>Q</autoref></code>
15725
+ <code>query</code>
15726
+ </td>
15727
+ <td>
15728
+ <code>Q</code>
15009
15729
  </td>
15010
15730
  <td>
15011
15731
  <div class="doc-md-description">
@@ -15031,7 +15751,7 @@ InterfaceManager.</p>
15031
15751
  <tbody>
15032
15752
  <tr class="doc-section-item">
15033
15753
  <td>
15034
- <code><autoref identifier="str" optional>str</autoref></code>
15754
+ <code>str</code>
15035
15755
  </td>
15036
15756
  <td>
15037
15757
  <div class="doc-md-description">
@@ -15077,7 +15797,7 @@ InterfaceManager.</p>
15077
15797
 
15078
15798
  <div class="doc doc-contents ">
15079
15799
 
15080
- <p>Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like
15800
+ <p>Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like
15081
15801
  change logging, not the REST API.) Optionally include a dictionary to supplement the object data. A list of keys
15082
15802
  can be provided to exclude them from the returned dictionary. Private fields (prefaced with an underscore) are
15083
15803
  implicitly excluded.</p>
@@ -15097,7 +15817,7 @@ implicitly excluded.</p>
15097
15817
 
15098
15818
  <div class="doc doc-contents ">
15099
15819
 
15100
- <p>Return a JSON serialized representation of an object using obj's serializer.</p>
15820
+ <p>Return a JSON serialized representation of an object using obj's serializer.</p>
15101
15821
 
15102
15822
  </div>
15103
15823
 
@@ -15114,7 +15834,7 @@ implicitly excluded.</p>
15114
15834
 
15115
15835
  <div class="doc doc-contents ">
15116
15836
 
15117
- <p>Custom slugify_function - use underscores instead of dashes; resulting slug can be used as a variable name,
15837
+ <p>Custom slugify_function - use underscores instead of dashes; resulting slug can be used as a variable name,
15118
15838
  as well as a graphql safe string.
15119
15839
  Note: If content starts with a non graphql-safe character, e.g. a digit
15120
15840
  This method will prepend an "a" to content to make it graphql-safe
@@ -15136,7 +15856,7 @@ e.g:
15136
15856
 
15137
15857
  <div class="doc doc-contents ">
15138
15858
 
15139
- <p>Custom slugify_function - convert '.' to '-' instead of removing dots outright.</p>
15859
+ <p>Custom slugify_function - convert '.' to '-' instead of removing dots outright.</p>
15140
15860
 
15141
15861
  </div>
15142
15862
 
@@ -15292,7 +16012,7 @@ e.g:
15292
16012
  </div>
15293
16013
 
15294
16014
 
15295
- <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>
16015
+ <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>
15296
16016
 
15297
16017
 
15298
16018
  <script src="../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>