nautobot 2.4.17__py3-none-any.whl → 2.4.19__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 (627) hide show
  1. nautobot/apps/ui.py +6 -0
  2. nautobot/apps/views.py +2 -0
  3. nautobot/circuits/tables.py +1 -1
  4. nautobot/circuits/templates/circuits/circuit_create.html +7 -7
  5. nautobot/circuits/templates/circuits/circuit_retrieve.html +1 -5
  6. nautobot/circuits/templates/circuits/circuittermination_create.html +26 -26
  7. nautobot/circuits/templates/circuits/circuittermination_retrieve.html +1 -8
  8. nautobot/circuits/templates/circuits/inc/circuit_termination.html +20 -20
  9. nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +3 -3
  10. nautobot/circuits/templates/circuits/inc/circuit_termination_speed_fragment.html +9 -0
  11. nautobot/circuits/templates/circuits/providernetwork_retrieve.html +1 -3
  12. nautobot/circuits/tests/integration/test_circuit.py +2 -2
  13. nautobot/circuits/views.py +49 -15
  14. nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +1 -4
  15. nautobot/cloud/templates/cloud/cloudnetwork_retrieve.html +1 -7
  16. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +1 -3
  17. nautobot/cloud/templates/cloud/cloudservice_retrieve.html +1 -5
  18. nautobot/cloud/views.py +45 -0
  19. nautobot/core/filters.py +2 -2
  20. nautobot/core/graphql/generators.py +5 -2
  21. nautobot/core/jobs/bulk_actions.py +48 -85
  22. nautobot/core/models/querysets.py +2 -1
  23. nautobot/core/settings.py +1 -0
  24. nautobot/core/settings.yaml +9 -0
  25. nautobot/core/tables.py +21 -23
  26. nautobot/core/templates/40x.html +15 -15
  27. nautobot/core/templates/500.html +21 -21
  28. nautobot/core/templates/admin/app_index.html +8 -8
  29. nautobot/core/templates/admin/base.html +104 -104
  30. nautobot/core/templates/admin/change_form.html +65 -65
  31. nautobot/core/templates/admin/change_list.html +60 -60
  32. nautobot/core/templates/admin/change_list_results.html +39 -39
  33. nautobot/core/templates/admin/config/config.html +47 -47
  34. nautobot/core/templates/admin/delete_confirmation.html +47 -47
  35. nautobot/core/templates/admin/edit_inline/stacked.html +124 -124
  36. nautobot/core/templates/admin/edit_inline/tabular.html +60 -60
  37. nautobot/core/templates/admin/includes/fieldset.html +4 -4
  38. nautobot/core/templates/admin/index.html +60 -60
  39. nautobot/core/templates/admin/prepopulated_fields_js.html +18 -18
  40. nautobot/core/templates/admin/submit_line.html +4 -4
  41. nautobot/core/templates/base_django.html +46 -46
  42. nautobot/core/templates/buttons/consolidated_bulk_action_buttons.html +8 -8
  43. nautobot/core/templates/buttons/consolidated_detail_view_action_buttons.html +8 -8
  44. nautobot/core/templates/buttons/export.html +3 -3
  45. nautobot/core/templates/components/breadcrumbs.html +19 -0
  46. nautobot/core/templates/components/button/default.html +3 -3
  47. nautobot/core/templates/components/button/dropdown.html +7 -7
  48. nautobot/core/templates/components/button/formbutton.html +4 -4
  49. nautobot/core/templates/components/panel/body_content_data_table.html +1 -1
  50. nautobot/core/templates/components/panel/body_wrapper_generic_table.html +3 -0
  51. nautobot/core/templates/components/panel/footer_content_table.html +3 -1
  52. nautobot/core/templates/components/panel/header_extra_content_table.html +10 -1
  53. nautobot/core/templates/components/tab/content_wrapper.html +1 -1
  54. nautobot/core/templates/components/tab/label_wrapper.html +1 -1
  55. nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +10 -3
  56. nautobot/core/templates/generic/object_bulk_add_component.html +40 -40
  57. nautobot/core/templates/generic/object_bulk_create.html +3 -3
  58. nautobot/core/templates/generic/object_bulk_destroy.html +6 -6
  59. nautobot/core/templates/generic/object_bulk_update.html +52 -52
  60. nautobot/core/templates/generic/object_changelog.html +0 -2
  61. nautobot/core/templates/generic/object_import.html +33 -33
  62. nautobot/core/templates/generic/object_list.html +271 -268
  63. nautobot/core/templates/generic/object_notes.html +0 -2
  64. nautobot/core/templates/generic/object_retrieve.html +264 -257
  65. nautobot/core/templates/graphene/graphiql.html +127 -127
  66. nautobot/core/templates/home.html +62 -62
  67. nautobot/core/templates/inc/computed_fields/panel_data.html +13 -13
  68. nautobot/core/templates/inc/created_updated.html +8 -8
  69. nautobot/core/templates/inc/custom_fields/panel_data.html +13 -13
  70. nautobot/core/templates/inc/dynamic_groups_panel.html +11 -11
  71. nautobot/core/templates/inc/footer.html +19 -19
  72. nautobot/core/templates/inc/javascript.html +1 -1
  73. nautobot/core/templates/inc/media.html +46 -46
  74. nautobot/core/templates/inc/nav_menu.html +1 -1
  75. nautobot/core/templates/inc/relationships_table_rows.html +22 -22
  76. nautobot/core/templates/inc/tenant_table_row.html +1 -1
  77. nautobot/core/templates/login.html +77 -77
  78. nautobot/core/templates/media_failure.html +38 -38
  79. nautobot/core/templates/panel_table.html +1 -1
  80. nautobot/core/templates/rest_framework/api.html +3 -3
  81. nautobot/core/templates/search.html +1 -1
  82. nautobot/core/templates/swagger_ui.html +9 -9
  83. nautobot/core/templates/utilities/confirmation_form.html +18 -18
  84. nautobot/core/templates/utilities/render_field.html +1 -1
  85. nautobot/core/templates/utilities/render_jinja2.html +43 -43
  86. nautobot/core/templates/utilities/templatetags/filter_form_modal.html +56 -56
  87. nautobot/core/templates/utilities/templatetags/utilization_graph.html +1 -1
  88. nautobot/core/templates/utilities/theme_preview.html +799 -799
  89. nautobot/core/templates/utilities/worker_status.html +122 -122
  90. nautobot/core/templates/widgets/clearable_file.html +3 -3
  91. nautobot/core/templates/widgets/sluginput.html +1 -1
  92. nautobot/core/templatetags/buttons.py +8 -2
  93. nautobot/core/templatetags/helpers.py +24 -0
  94. nautobot/core/templatetags/ui_framework.py +40 -5
  95. nautobot/core/testing/filters.py +37 -21
  96. nautobot/core/testing/integration.py +7 -4
  97. nautobot/core/testing/views.py +49 -5
  98. nautobot/core/tests/test_breadcrumbs.py +78 -4
  99. nautobot/core/tests/test_commands.py +7 -4
  100. nautobot/core/tests/test_graphql.py +20 -5
  101. nautobot/core/tests/test_jobs.py +34 -21
  102. nautobot/core/tests/test_tables.py +43 -6
  103. nautobot/core/tests/test_templatetags_ui_framework.py +146 -0
  104. nautobot/core/tests/test_titles.py +2 -2
  105. nautobot/core/tests/test_ui.py +188 -1
  106. nautobot/core/tests/test_utils.py +35 -0
  107. nautobot/core/tests/test_views.py +45 -0
  108. nautobot/core/tests/test_views_generic.py +43 -0
  109. nautobot/core/tests/test_views_utils.py +239 -5
  110. nautobot/core/ui/breadcrumbs.py +220 -28
  111. nautobot/core/ui/bulk_buttons.py +8 -0
  112. nautobot/core/ui/object_detail.py +181 -60
  113. nautobot/core/ui/titles.py +10 -5
  114. nautobot/core/utils/requests.py +27 -2
  115. nautobot/core/views/__init__.py +24 -3
  116. nautobot/core/views/generic.py +70 -35
  117. nautobot/core/views/mixins.py +226 -122
  118. nautobot/core/views/utils.py +270 -1
  119. nautobot/dcim/api/serializers.py +8 -2
  120. nautobot/dcim/constants.py +1 -0
  121. nautobot/dcim/factory.py +4 -3
  122. nautobot/dcim/filters/mixins.py +1 -2
  123. nautobot/dcim/forms.py +5 -1
  124. nautobot/dcim/migrations/0074_alter_rack_u_height.py +21 -0
  125. nautobot/dcim/models/devices.py +30 -1
  126. nautobot/dcim/models/racks.py +2 -2
  127. nautobot/dcim/tables/__init__.py +2 -0
  128. nautobot/dcim/tables/devices.py +24 -0
  129. nautobot/dcim/tables/power.py +2 -2
  130. nautobot/dcim/templates/dcim/cable.html +53 -53
  131. nautobot/dcim/templates/dcim/cable_connect.html +182 -182
  132. nautobot/dcim/templates/dcim/cable_trace.html +1 -1
  133. nautobot/dcim/templates/dcim/console_port_connection_list.html +5 -5
  134. nautobot/dcim/templates/dcim/consoleport.html +86 -86
  135. nautobot/dcim/templates/dcim/consoleserverport.html +86 -86
  136. nautobot/dcim/templates/dcim/controller_create.html +34 -34
  137. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +68 -68
  138. nautobot/dcim/templates/dcim/device/base.html +1 -114
  139. nautobot/dcim/templates/dcim/device/config.html +17 -17
  140. nautobot/dcim/templates/dcim/device/consoleports.html +1 -52
  141. nautobot/dcim/templates/dcim/device/consoleserverports.html +1 -52
  142. nautobot/dcim/templates/dcim/device/devicebays.html +1 -48
  143. nautobot/dcim/templates/dcim/device/frontports.html +1 -52
  144. nautobot/dcim/templates/dcim/device/interfaces.html +1 -56
  145. nautobot/dcim/templates/dcim/device/inventory.html +1 -48
  146. nautobot/dcim/templates/dcim/device/lldp_neighbors.html +64 -64
  147. nautobot/dcim/templates/dcim/device/modulebays.html +1 -48
  148. nautobot/dcim/templates/dcim/device/poweroutlets.html +1 -52
  149. nautobot/dcim/templates/dcim/device/powerports.html +1 -52
  150. nautobot/dcim/templates/dcim/device/rearports.html +1 -52
  151. nautobot/dcim/templates/dcim/device/status.html +66 -66
  152. nautobot/dcim/templates/dcim/device/wireless.html +1 -72
  153. nautobot/dcim/templates/dcim/device.html +4 -422
  154. nautobot/dcim/templates/dcim/device_component.html +0 -19
  155. nautobot/dcim/templates/dcim/device_component_add.html +25 -25
  156. nautobot/dcim/templates/dcim/device_create.html +229 -0
  157. nautobot/dcim/templates/dcim/device_edit.html +2 -227
  158. nautobot/dcim/templates/dcim/devicebay.html +41 -41
  159. nautobot/dcim/templates/dcim/devicebay_populate.html +32 -32
  160. nautobot/dcim/templates/dcim/devicetype_component_add.html +28 -28
  161. nautobot/dcim/templates/dcim/devicetype_retrieve.html +1 -3
  162. nautobot/dcim/templates/dcim/frontport.html +84 -84
  163. nautobot/dcim/templates/dcim/inc/cable_toggle_buttons.html +1 -1
  164. nautobot/dcim/templates/dcim/inc/device_interface_filter.html +8 -0
  165. nautobot/dcim/templates/dcim/inc/device_napalm_tabs.html +1 -15
  166. nautobot/dcim/templates/dcim/inc/location_hierarchy.html +22 -22
  167. nautobot/dcim/templates/dcim/interface.html +206 -206
  168. nautobot/dcim/templates/dcim/interface_connection_list.html +5 -5
  169. nautobot/dcim/templates/dcim/interfaceredundancygroupassociation_create.html +6 -6
  170. nautobot/dcim/templates/dcim/inventoryitem.html +44 -44
  171. nautobot/dcim/templates/dcim/inventoryitem_add.html +32 -32
  172. nautobot/dcim/templates/dcim/inventoryitem_edit.html +22 -22
  173. nautobot/dcim/templates/dcim/location_migrate_data_to_contact.html +46 -46
  174. nautobot/dcim/templates/dcim/location_retrieve.html +1 -7
  175. nautobot/dcim/templates/dcim/locationtype.html +1 -6
  176. nautobot/dcim/templates/dcim/locationtype_retrieve.html +1 -7
  177. nautobot/dcim/templates/dcim/module/base.html +85 -85
  178. nautobot/dcim/templates/dcim/module_interfaces.html +1 -1
  179. nautobot/dcim/templates/dcim/module_modulebays.html +1 -1
  180. nautobot/dcim/templates/dcim/module_retrieve.html +52 -52
  181. nautobot/dcim/templates/dcim/module_update.html +61 -61
  182. nautobot/dcim/templates/dcim/modulebay_destroy.html +1 -1
  183. nautobot/dcim/templates/dcim/modulebay_retrieve.html +83 -99
  184. nautobot/dcim/templates/dcim/modulebay_update.html +33 -33
  185. nautobot/dcim/templates/dcim/modulefamily_retrieve.html +1 -1
  186. nautobot/dcim/templates/dcim/moduletype_retrieve.html +140 -144
  187. nautobot/dcim/templates/dcim/platform_create.html +38 -38
  188. nautobot/dcim/templates/dcim/power_port_connection_list.html +5 -5
  189. nautobot/dcim/templates/dcim/powerfeed_retrieve.html +1 -8
  190. nautobot/dcim/templates/dcim/poweroutlet.html +85 -85
  191. nautobot/dcim/templates/dcim/powerpanel_retrieve.html +1 -8
  192. nautobot/dcim/templates/dcim/powerport.html +91 -91
  193. nautobot/dcim/templates/dcim/rack_elevation_list.html +18 -18
  194. nautobot/dcim/templates/dcim/rack_retrieve.html +264 -274
  195. nautobot/dcim/templates/dcim/rackreservation_retrieve.html +0 -3
  196. nautobot/dcim/templates/dcim/rearport.html +78 -78
  197. nautobot/dcim/templates/dcim/virtualchassis_retrieve.html +1 -50
  198. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +1 -5
  199. nautobot/dcim/tests/integration/test_device_bulk_operations.py +3 -2
  200. nautobot/dcim/tests/integration/test_location_bulk_operations.py +6 -2
  201. nautobot/dcim/tests/test_api.py +33 -1
  202. nautobot/dcim/tests/test_views.py +189 -4
  203. nautobot/dcim/ui.py +29 -0
  204. nautobot/dcim/urls.py +1 -109
  205. nautobot/dcim/utils.py +30 -0
  206. nautobot/dcim/views.py +1149 -550
  207. nautobot/extras/filters/mixins.py +1 -1
  208. nautobot/extras/forms/forms.py +15 -0
  209. nautobot/extras/models/groups.py +10 -1
  210. nautobot/extras/models/jobs.py +2 -2
  211. nautobot/extras/plugins/views.py +18 -5
  212. nautobot/extras/tables.py +24 -2
  213. nautobot/extras/templates/extras/computedfield_edit.html +4 -4
  214. nautobot/extras/templates/extras/configcontext_update.html +1 -1
  215. nautobot/extras/templates/extras/configcontextschema_retrieve.html +32 -32
  216. nautobot/extras/templates/extras/customfield_retrieve.html +1 -128
  217. nautobot/extras/templates/extras/customfield_update.html +23 -23
  218. nautobot/extras/templates/extras/dynamicgroup.html +2 -99
  219. nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -199
  220. nautobot/extras/templates/extras/dynamicgroup_retrieve.html +99 -0
  221. nautobot/extras/templates/extras/dynamicgroup_update.html +199 -0
  222. nautobot/extras/templates/extras/gitrepository.html +2 -82
  223. nautobot/extras/templates/extras/gitrepository_list.html +10 -10
  224. nautobot/extras/templates/extras/gitrepository_object_edit.html +2 -13
  225. nautobot/extras/templates/extras/gitrepository_retrieve.html +82 -0
  226. nautobot/extras/templates/extras/gitrepository_update.html +13 -0
  227. nautobot/extras/templates/extras/graphqlquery_retrieve.html +73 -73
  228. nautobot/extras/templates/extras/inc/configcontext_format.html +2 -2
  229. nautobot/extras/templates/extras/inc/job_table.html +10 -10
  230. nautobot/extras/templates/extras/inc/jobresult.html +21 -21
  231. nautobot/extras/templates/extras/inc/jobresult_js.html +6 -6
  232. nautobot/extras/templates/extras/inc/tags_panel.html +10 -10
  233. nautobot/extras/templates/extras/job.html +64 -64
  234. nautobot/extras/templates/extras/job_approval_request.html +9 -9
  235. nautobot/extras/templates/extras/job_bulk_edit.html +13 -13
  236. nautobot/extras/templates/extras/job_edit.html +45 -45
  237. nautobot/extras/templates/extras/job_list.html +4 -4
  238. nautobot/extras/templates/extras/jobresult_retrieve.html +0 -25
  239. nautobot/extras/templates/extras/marketplace.html +101 -101
  240. nautobot/extras/templates/extras/metadatatype_create.html +20 -20
  241. nautobot/extras/templates/extras/note_retrieve.html +0 -52
  242. nautobot/extras/templates/extras/object_assign_contact_or_team.html +18 -18
  243. nautobot/extras/templates/extras/object_configcontext.html +1 -3
  244. nautobot/extras/templates/extras/objectchange.html +2 -165
  245. nautobot/extras/templates/extras/objectchange_retrieve.html +165 -0
  246. nautobot/extras/templates/extras/plugin_detail.html +44 -48
  247. nautobot/extras/templates/extras/plugins_list.html +9 -11
  248. nautobot/extras/templates/extras/plugins_tiles.html +26 -26
  249. nautobot/extras/templates/extras/relationship_edit.html +4 -4
  250. nautobot/extras/templates/extras/role_retrieve.html +13 -13
  251. nautobot/extras/templates/extras/scheduled_jobs_approval_queue_list.html +21 -21
  252. nautobot/extras/templates/extras/scheduledjob.html +128 -128
  253. nautobot/extras/templates/extras/secret_create.html +53 -53
  254. nautobot/extras/templates/extras/secretsgroup_update.html +13 -13
  255. nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +3 -3
  256. nautobot/extras/templates/extras/webhook.html +79 -79
  257. nautobot/extras/tests/integration/test_relationships.py +6 -6
  258. nautobot/extras/tests/test_dynamicgroups.py +73 -18
  259. nautobot/extras/tests/test_filters.py +1 -1
  260. nautobot/extras/tests/test_jobs.py +2 -0
  261. nautobot/extras/tests/test_views.py +8 -3
  262. nautobot/extras/urls.py +3 -97
  263. nautobot/extras/views.py +524 -456
  264. nautobot/ipam/filters.py +2 -2
  265. nautobot/ipam/migrations/0053_alter_vrfdeviceassignment_options_and_more.py +20 -0
  266. nautobot/ipam/models.py +34 -0
  267. nautobot/ipam/querysets.py +3 -3
  268. nautobot/ipam/signals.py +6 -1
  269. nautobot/ipam/tables.py +3 -1
  270. nautobot/ipam/templates/ipam/inc/prefix_header_extra_content_table.html +4 -0
  271. nautobot/ipam/templates/ipam/inc/toggle_available.html +8 -8
  272. nautobot/ipam/templates/ipam/inc/vlangroup_header.html +4 -4
  273. nautobot/ipam/templates/ipam/ipaddress.html +119 -123
  274. nautobot/ipam/templates/ipam/ipaddress_assign.html +10 -10
  275. nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -1
  276. nautobot/ipam/templates/ipam/ipaddress_merge.html +180 -180
  277. nautobot/ipam/templates/ipam/ipaddresstointerface_retrieve.html +48 -48
  278. nautobot/ipam/templates/ipam/prefix.html +2 -115
  279. nautobot/ipam/templates/ipam/prefix_create.html +34 -0
  280. nautobot/ipam/templates/ipam/prefix_edit.html +1 -34
  281. nautobot/ipam/templates/ipam/prefix_retrieve.html +3 -0
  282. nautobot/ipam/templates/ipam/service_retrieve.html +1 -6
  283. nautobot/ipam/templates/ipam/vlan_retrieve.html +1 -7
  284. nautobot/ipam/templates/ipam/vrf_edit.html +1 -1
  285. nautobot/ipam/tests/test_api.py +5 -0
  286. nautobot/ipam/tests/test_models.py +387 -0
  287. nautobot/ipam/tests/test_querysets.py +46 -0
  288. nautobot/ipam/tests/test_views.py +34 -0
  289. nautobot/ipam/ui.py +145 -0
  290. nautobot/ipam/urls.py +1 -46
  291. nautobot/ipam/utils/__init__.py +26 -0
  292. nautobot/ipam/utils/migrations.py +1 -1
  293. nautobot/ipam/views.py +234 -112
  294. nautobot/project-static/docs/404.html +11 -11
  295. nautobot/project-static/docs/apps/index.html +11 -11
  296. nautobot/project-static/docs/apps/nautobot-apps.html +11 -11
  297. nautobot/project-static/docs/assets/javascripts/{bundle.92b07e13.min.js → bundle.f55a23d4.min.js} +2 -2
  298. nautobot/project-static/docs/assets/javascripts/{bundle.92b07e13.min.js.map → bundle.f55a23d4.min.js.map} +2 -2
  299. nautobot/project-static/docs/assets/stylesheets/{main.7e37652d.min.css → main.e53b48f4.min.css} +1 -1
  300. nautobot/project-static/docs/assets/stylesheets/{main.7e37652d.min.css.map → main.e53b48f4.min.css.map} +1 -1
  301. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +11 -11
  302. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +11 -11
  303. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +11 -11
  304. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +11 -11
  305. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +11 -11
  306. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +11 -11
  307. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +11 -11
  308. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +11 -11
  309. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +11 -11
  310. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +11 -11
  311. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +11 -11
  312. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +11 -11
  313. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +11 -11
  314. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +11 -11
  315. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +11 -11
  316. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +11 -11
  317. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +11 -11
  318. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +11 -11
  319. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +11 -11
  320. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +83 -11
  321. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +1265 -281
  322. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +11 -11
  323. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +12 -12
  324. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +452 -29
  325. nautobot/project-static/docs/development/apps/api/configuration-view.html +11 -11
  326. nautobot/project-static/docs/development/apps/api/database-backend-config.html +11 -11
  327. nautobot/project-static/docs/development/apps/api/models/django-admin.html +11 -11
  328. nautobot/project-static/docs/development/apps/api/models/global-search.html +11 -11
  329. nautobot/project-static/docs/development/apps/api/models/graphql.html +11 -11
  330. nautobot/project-static/docs/development/apps/api/models/index.html +11 -11
  331. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +12 -12
  332. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +11 -11
  333. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +11 -11
  334. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +11 -11
  335. nautobot/project-static/docs/development/apps/api/platform-features/index.html +11 -11
  336. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +11 -11
  337. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +11 -11
  338. nautobot/project-static/docs/development/apps/api/platform-features/prepopulating-data.html +11 -11
  339. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +11 -11
  340. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +11 -11
  341. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +11 -11
  342. nautobot/project-static/docs/development/apps/api/prometheus.html +11 -11
  343. nautobot/project-static/docs/development/apps/api/setup.html +11 -11
  344. nautobot/project-static/docs/development/apps/api/testing.html +11 -11
  345. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +11 -11
  346. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +11 -11
  347. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +11 -11
  348. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +11 -11
  349. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +11 -11
  350. nautobot/project-static/docs/development/apps/api/views/base-template.html +11 -11
  351. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +11 -11
  352. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +11 -11
  353. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +11 -11
  354. nautobot/project-static/docs/development/apps/api/views/index.html +11 -11
  355. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +11 -11
  356. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +11 -11
  357. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +11 -11
  358. nautobot/project-static/docs/development/apps/api/views/notes.html +11 -11
  359. nautobot/project-static/docs/development/apps/api/views/rest-api.html +11 -11
  360. nautobot/project-static/docs/development/apps/api/views/urls.html +11 -11
  361. nautobot/project-static/docs/development/apps/index.html +11 -11
  362. nautobot/project-static/docs/development/apps/migration/code-updates.html +11 -11
  363. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +11 -11
  364. nautobot/project-static/docs/development/apps/migration/from-v1.html +11 -11
  365. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +11 -11
  366. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +11 -11
  367. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +11 -11
  368. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +11 -11
  369. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +11 -11
  370. nautobot/project-static/docs/development/apps/migration/ui-component-framework/breadcrumbs-titles.html +11 -11
  371. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +11 -11
  372. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +11 -11
  373. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +11 -11
  374. nautobot/project-static/docs/development/apps/porting-from-netbox.html +11 -11
  375. nautobot/project-static/docs/development/core/application-registry.html +11 -11
  376. nautobot/project-static/docs/development/core/best-practices.html +11 -11
  377. nautobot/project-static/docs/development/core/bootstrap-ui.html +11 -11
  378. nautobot/project-static/docs/development/core/caching.html +11 -11
  379. nautobot/project-static/docs/development/core/controllers.html +11 -11
  380. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +11 -11
  381. nautobot/project-static/docs/development/core/generic-views.html +11 -11
  382. nautobot/project-static/docs/development/core/getting-started.html +50 -63
  383. nautobot/project-static/docs/development/core/homepage.html +11 -11
  384. nautobot/project-static/docs/development/core/index.html +11 -11
  385. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +11 -11
  386. nautobot/project-static/docs/development/core/model-checklist.html +11 -11
  387. nautobot/project-static/docs/development/core/model-features.html +11 -11
  388. nautobot/project-static/docs/development/core/natural-keys.html +11 -11
  389. nautobot/project-static/docs/development/core/navigation-menu.html +11 -11
  390. nautobot/project-static/docs/development/core/release-checklist.html +11 -11
  391. nautobot/project-static/docs/development/core/role-internals.html +11 -11
  392. nautobot/project-static/docs/development/core/settings.html +11 -11
  393. nautobot/project-static/docs/development/core/style-guide.html +15 -11
  394. nautobot/project-static/docs/development/core/templates.html +11 -11
  395. nautobot/project-static/docs/development/core/testing.html +11 -11
  396. nautobot/project-static/docs/development/core/ui-component-framework.html +17 -22
  397. nautobot/project-static/docs/development/core/user-preferences.html +11 -11
  398. nautobot/project-static/docs/development/index.html +11 -11
  399. nautobot/project-static/docs/development/jobs/getting-started.html +11 -11
  400. nautobot/project-static/docs/development/jobs/index.html +11 -11
  401. nautobot/project-static/docs/development/jobs/installation.html +11 -11
  402. nautobot/project-static/docs/development/jobs/job-extensions.html +11 -11
  403. nautobot/project-static/docs/development/jobs/job-logging.html +11 -11
  404. nautobot/project-static/docs/development/jobs/job-patterns.html +11 -11
  405. nautobot/project-static/docs/development/jobs/job-structure.html +11 -11
  406. nautobot/project-static/docs/development/jobs/migration/from-v1.html +11 -11
  407. nautobot/project-static/docs/development/jobs/testing.html +11 -11
  408. nautobot/project-static/docs/index.html +11 -11
  409. nautobot/project-static/docs/objects.inv +0 -0
  410. nautobot/project-static/docs/overview/application_stack.html +11 -11
  411. nautobot/project-static/docs/overview/design_philosophy.html +11 -11
  412. nautobot/project-static/docs/release-notes/index.html +11 -11
  413. nautobot/project-static/docs/release-notes/version-1.0.html +11 -11
  414. nautobot/project-static/docs/release-notes/version-1.1.html +11 -11
  415. nautobot/project-static/docs/release-notes/version-1.2.html +11 -11
  416. nautobot/project-static/docs/release-notes/version-1.3.html +11 -11
  417. nautobot/project-static/docs/release-notes/version-1.4.html +11 -11
  418. nautobot/project-static/docs/release-notes/version-1.5.html +11 -11
  419. nautobot/project-static/docs/release-notes/version-1.6.html +11 -11
  420. nautobot/project-static/docs/release-notes/version-2.0.html +11 -11
  421. nautobot/project-static/docs/release-notes/version-2.1.html +11 -11
  422. nautobot/project-static/docs/release-notes/version-2.2.html +11 -11
  423. nautobot/project-static/docs/release-notes/version-2.3.html +11 -11
  424. nautobot/project-static/docs/release-notes/version-2.4.html +418 -11
  425. nautobot/project-static/docs/search/search_index.json +1 -1
  426. nautobot/project-static/docs/sitemap.xml +300 -300
  427. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  428. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +11 -11
  429. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +11 -11
  430. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +11 -11
  431. nautobot/project-static/docs/user-guide/administration/configuration/index.html +11 -11
  432. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +11 -11
  433. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +38 -11
  434. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +11 -11
  435. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +89 -14
  436. nautobot/project-static/docs/user-guide/administration/guides/docker.html +11 -11
  437. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +11 -11
  438. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +11 -11
  439. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +11 -11
  440. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +11 -11
  441. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +11 -11
  442. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +11 -11
  443. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +11 -11
  444. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +11 -11
  445. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +11 -11
  446. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +11 -11
  447. nautobot/project-static/docs/user-guide/administration/installation/index.html +11 -11
  448. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +11 -11
  449. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +11 -11
  450. nautobot/project-static/docs/user-guide/administration/installation/services.html +11 -11
  451. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +11 -11
  452. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +11 -11
  453. nautobot/project-static/docs/user-guide/administration/security/index.html +11 -11
  454. nautobot/project-static/docs/user-guide/administration/security/notices.html +11 -11
  455. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +11 -11
  456. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +11 -11
  457. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +11 -11
  458. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +11 -11
  459. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +11 -11
  460. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +11 -11
  461. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +11 -11
  462. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +11 -11
  463. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +11 -11
  464. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +11 -11
  465. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +11 -11
  466. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +11 -11
  467. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +11 -11
  468. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +11 -11
  469. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +11 -11
  470. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +11 -11
  471. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +11 -11
  472. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +11 -11
  473. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +11 -11
  474. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +11 -11
  475. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +11 -11
  476. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +11 -11
  477. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +11 -11
  478. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +11 -11
  479. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +11 -11
  480. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +11 -11
  481. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +11 -11
  482. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +11 -11
  483. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +11 -11
  484. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +11 -11
  485. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +11 -11
  486. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +11 -11
  487. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +11 -11
  488. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +11 -11
  489. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +11 -11
  490. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +11 -11
  491. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +11 -11
  492. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +11 -11
  493. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +11 -11
  494. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +11 -11
  495. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +11 -11
  496. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +11 -11
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +11 -11
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +11 -11
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +11 -11
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +11 -11
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +11 -11
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +11 -11
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +11 -11
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +11 -11
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +11 -11
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +11 -11
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +11 -11
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +11 -11
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +11 -11
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +11 -11
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +11 -11
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +11 -11
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +11 -11
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +11 -11
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +11 -11
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +11 -11
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +11 -11
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +11 -11
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +11 -11
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +11 -11
  521. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +11 -11
  522. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +11 -11
  523. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +11 -11
  524. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +11 -11
  525. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +11 -11
  526. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +11 -11
  527. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +11 -11
  528. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +11 -11
  529. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +11 -11
  530. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +11 -11
  531. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +11 -11
  532. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +11 -11
  533. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +11 -11
  534. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +11 -11
  535. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +11 -11
  536. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +11 -11
  537. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +11 -11
  538. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +11 -11
  539. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +11 -11
  540. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +11 -11
  541. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +11 -11
  542. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +11 -11
  543. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +11 -11
  544. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +11 -11
  545. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +11 -11
  546. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +11 -11
  547. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +11 -11
  548. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +11 -11
  549. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +11 -11
  550. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +11 -11
  551. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +11 -11
  552. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +11 -11
  553. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +11 -11
  554. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +11 -11
  555. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +11 -11
  556. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +11 -11
  557. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +11 -11
  558. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +11 -11
  559. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +11 -11
  560. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +11 -11
  561. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +11 -11
  562. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +11 -11
  563. nautobot/project-static/docs/user-guide/index.html +11 -11
  564. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +11 -11
  565. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +11 -11
  566. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +11 -11
  567. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +11 -11
  568. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +11 -11
  569. nautobot/project-static/docs/user-guide/platform-functionality/events.html +11 -11
  570. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +11 -11
  571. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +11 -11
  572. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +11 -11
  573. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +11 -11
  574. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +11 -11
  575. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +11 -11
  576. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +11 -11
  577. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +11 -11
  578. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +11 -11
  579. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +11 -11
  580. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +11 -11
  581. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +11 -11
  582. nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +11 -11
  583. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +11 -11
  584. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +11 -11
  585. nautobot/project-static/docs/user-guide/platform-functionality/note.html +11 -11
  586. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +11 -11
  587. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +11 -11
  588. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +11 -11
  589. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +11 -11
  590. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +11 -11
  591. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +11 -11
  592. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +11 -11
  593. nautobot/project-static/docs/user-guide/platform-functionality/role.html +11 -11
  594. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +11 -11
  595. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +11 -11
  596. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +11 -11
  597. nautobot/project-static/docs/user-guide/platform-functionality/status.html +11 -11
  598. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +11 -11
  599. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +11 -11
  600. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +11 -11
  601. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +11 -11
  602. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +11 -11
  603. nautobot/project-static/img/nautobot_icon.svg +32 -34
  604. nautobot/project-static/js/table_sorting_indicator.js +0 -2
  605. nautobot/tenancy/templates/tenancy/tenant.html +1 -7
  606. nautobot/tenancy/views.py +13 -0
  607. nautobot/users/templates/users/api_tokens.html +4 -4
  608. nautobot/users/templates/users/base.html +28 -28
  609. nautobot/virtualization/templates/virtualization/cluster.html +64 -64
  610. nautobot/virtualization/templates/virtualization/inc/virtualmachine_vminterface_filter.html +8 -0
  611. nautobot/virtualization/templates/virtualization/virtualmachine_component_add.html +25 -25
  612. nautobot/virtualization/templates/virtualization/virtualmachine_retrieve.html +1 -251
  613. nautobot/virtualization/templates/virtualization/vminterface.html +70 -70
  614. nautobot/virtualization/urls.py +0 -12
  615. nautobot/virtualization/views.py +158 -54
  616. nautobot/wireless/templates/wireless/wirelessnetwork_create.html +13 -13
  617. nautobot/wireless/tests/integration/test_radio_profile.py +1 -1
  618. {nautobot-2.4.17.dist-info → nautobot-2.4.19.dist-info}/METADATA +4 -4
  619. {nautobot-2.4.17.dist-info → nautobot-2.4.19.dist-info}/RECORD +623 -607
  620. nautobot/core/templates/inc/breadcrumbs.html +0 -14
  621. nautobot/ipam/templates/ipam/prefix_ipaddresses.html +0 -11
  622. nautobot/ipam/templates/ipam/prefix_prefixes.html +0 -11
  623. nautobot/project-static/docs/requirements.txt +0 -14
  624. {nautobot-2.4.17.dist-info → nautobot-2.4.19.dist-info}/LICENSE.txt +0 -0
  625. {nautobot-2.4.17.dist-info → nautobot-2.4.19.dist-info}/NOTICE +0 -0
  626. {nautobot-2.4.17.dist-info → nautobot-2.4.19.dist-info}/WHEEL +0 -0
  627. {nautobot-2.4.17.dist-info → nautobot-2.4.19.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.20">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.7e37652d.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.e53b48f4.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.0.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M288%200H128c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032v151.5L7.5%20426.3C2.6%20435%200%20444.7%200%20454.7%200%20486.4%2025.6%20512%2057.3%20512h333.4c31.6%200%2057.3-25.6%2057.3-57.3%200-10-2.6-19.8-7.5-28.4L320%20215.5V64c17.7%200%2032-14.3%2032-32S337.7%200%20320%200zm-96%20215.5V64h64v151.5c0%2011.1%202.9%2022.1%208.4%2031.8L306%20320H142l41.6-72.7c5.5-9.7%208.4-20.6%208.4-31.8%22/%3E%3C/svg%3E');}</style>
43
+ <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.0.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M288%200H128c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032v151.5L7.5%20426.3C2.6%20435%200%20444.7%200%20454.7%200%20486.4%2025.6%20512%2057.3%20512h333.4c31.6%200%2057.3-25.6%2057.3-57.3%200-10-2.6-19.8-7.5-28.4L320%20215.5V64c17.7%200%2032-14.3%2032-32S337.7%200%20320%200zm-96%20215.5V64h64v151.5c0%2011.1%202.9%2022.1%208.4%2031.8L306%20320H142l41.6-72.7c5.5-9.7%208.4-20.6%208.4-31.8%22/%3E%3C/svg%3E');}</style>
44
44
 
45
45
 
46
46
 
@@ -222,7 +222,7 @@
222
222
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
223
223
  <div class="md-source__icon md-icon">
224
224
 
225
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
225
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
226
226
  </div>
227
227
  <div class="md-source__repository">
228
228
  GitHub
@@ -394,7 +394,7 @@
394
394
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
395
395
  <div class="md-source__icon md-icon">
396
396
 
397
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
397
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
398
398
  </div>
399
399
  <div class="md-source__repository">
400
400
  GitHub
@@ -8267,6 +8267,48 @@
8267
8267
  </label>
8268
8268
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
8269
8269
 
8270
+ <li class="md-nav__item">
8271
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs" class="md-nav__link">
8272
+ <span class="md-ellipsis">
8273
+ AncestorsBreadcrumbs
8274
+ </span>
8275
+ </a>
8276
+
8277
+ <nav class="md-nav" aria-label="AncestorsBreadcrumbs">
8278
+ <ul class="md-nav__list">
8279
+
8280
+ <li class="md-nav__item">
8281
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_ancestors_items" class="md-nav__link">
8282
+ <span class="md-ellipsis">
8283
+ get_ancestors_items
8284
+ </span>
8285
+ </a>
8286
+
8287
+ </li>
8288
+
8289
+ <li class="md-nav__item">
8290
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_detail_items" class="md-nav__link">
8291
+ <span class="md-ellipsis">
8292
+ get_detail_items
8293
+ </span>
8294
+ </a>
8295
+
8296
+ </li>
8297
+
8298
+ <li class="md-nav__item">
8299
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_items_for_action" class="md-nav__link">
8300
+ <span class="md-ellipsis">
8301
+ get_items_for_action
8302
+ </span>
8303
+ </a>
8304
+
8305
+ </li>
8306
+
8307
+ </ul>
8308
+ </nav>
8309
+
8310
+ </li>
8311
+
8270
8312
  <li class="md-nav__item">
8271
8313
  <a href="#nautobot.apps.ui.Banner" class="md-nav__link">
8272
8314
  <span class="md-ellipsis">
@@ -8500,15 +8542,6 @@
8500
8542
  </span>
8501
8543
  </a>
8502
8544
 
8503
- </li>
8504
-
8505
- <li class="md-nav__item">
8506
- <a href="#nautobot.apps.ui.Button.should_render" class="md-nav__link">
8507
- <span class="md-ellipsis">
8508
- should_render
8509
- </span>
8510
- </a>
8511
-
8512
8545
  </li>
8513
8546
 
8514
8547
  </ul>
@@ -8607,6 +8640,21 @@
8607
8640
  </span>
8608
8641
  </a>
8609
8642
 
8643
+ <nav class="md-nav" aria-label="DistinctViewTab">
8644
+ <ul class="md-nav__list">
8645
+
8646
+ <li class="md-nav__item">
8647
+ <a href="#nautobot.apps.ui.DistinctViewTab.should_render_content" class="md-nav__link">
8648
+ <span class="md-ellipsis">
8649
+ should_render_content
8650
+ </span>
8651
+ </a>
8652
+
8653
+ </li>
8654
+
8655
+ </ul>
8656
+ </nav>
8657
+
8610
8658
  </li>
8611
8659
 
8612
8660
  <li class="md-nav__item">
@@ -8796,6 +8844,48 @@
8796
8844
  </ul>
8797
8845
  </nav>
8798
8846
 
8847
+ </li>
8848
+
8849
+ <li class="md-nav__item">
8850
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem" class="md-nav__link">
8851
+ <span class="md-ellipsis">
8852
+ InstanceParentBreadcrumbItem
8853
+ </span>
8854
+ </a>
8855
+
8856
+ <nav class="md-nav" aria-label="InstanceParentBreadcrumbItem">
8857
+ <ul class="md-nav__list">
8858
+
8859
+ <li class="md-nav__item">
8860
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.__post_init__" class="md-nav__link">
8861
+ <span class="md-ellipsis">
8862
+ __post_init__
8863
+ </span>
8864
+ </a>
8865
+
8866
+ </li>
8867
+
8868
+ <li class="md-nav__item">
8869
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.get_label" class="md-nav__link">
8870
+ <span class="md-ellipsis">
8871
+ get_label
8872
+ </span>
8873
+ </a>
8874
+
8875
+ </li>
8876
+
8877
+ <li class="md-nav__item">
8878
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.get_url" class="md-nav__link">
8879
+ <span class="md-ellipsis">
8880
+ get_url
8881
+ </span>
8882
+ </a>
8883
+
8884
+ </li>
8885
+
8886
+ </ul>
8887
+ </nav>
8888
+
8799
8889
  </li>
8800
8890
 
8801
8891
  <li class="md-nav__item">
@@ -9499,6 +9589,15 @@
9499
9589
  </span>
9500
9590
  </a>
9501
9591
 
9592
+ </li>
9593
+
9594
+ <li class="md-nav__item">
9595
+ <a href="#nautobot.apps.ui.Tab.should_render_content" class="md-nav__link">
9596
+ <span class="md-ellipsis">
9597
+ should_render_content
9598
+ </span>
9599
+ </a>
9600
+
9502
9601
  </li>
9503
9602
 
9504
9603
  </ul>
@@ -9720,6 +9819,15 @@
9720
9819
  </ul>
9721
9820
  </nav>
9722
9821
 
9822
+ </li>
9823
+
9824
+ <li class="md-nav__item">
9825
+ <a href="#nautobot.apps.ui.context_object_attr" class="md-nav__link">
9826
+ <span class="md-ellipsis">
9827
+ context_object_attr
9828
+ </span>
9829
+ </a>
9830
+
9723
9831
  </li>
9724
9832
 
9725
9833
  <li class="md-nav__item">
@@ -11586,6 +11694,48 @@
11586
11694
  </label>
11587
11695
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
11588
11696
 
11697
+ <li class="md-nav__item">
11698
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs" class="md-nav__link">
11699
+ <span class="md-ellipsis">
11700
+ AncestorsBreadcrumbs
11701
+ </span>
11702
+ </a>
11703
+
11704
+ <nav class="md-nav" aria-label="AncestorsBreadcrumbs">
11705
+ <ul class="md-nav__list">
11706
+
11707
+ <li class="md-nav__item">
11708
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_ancestors_items" class="md-nav__link">
11709
+ <span class="md-ellipsis">
11710
+ get_ancestors_items
11711
+ </span>
11712
+ </a>
11713
+
11714
+ </li>
11715
+
11716
+ <li class="md-nav__item">
11717
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_detail_items" class="md-nav__link">
11718
+ <span class="md-ellipsis">
11719
+ get_detail_items
11720
+ </span>
11721
+ </a>
11722
+
11723
+ </li>
11724
+
11725
+ <li class="md-nav__item">
11726
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_items_for_action" class="md-nav__link">
11727
+ <span class="md-ellipsis">
11728
+ get_items_for_action
11729
+ </span>
11730
+ </a>
11731
+
11732
+ </li>
11733
+
11734
+ </ul>
11735
+ </nav>
11736
+
11737
+ </li>
11738
+
11589
11739
  <li class="md-nav__item">
11590
11740
  <a href="#nautobot.apps.ui.Banner" class="md-nav__link">
11591
11741
  <span class="md-ellipsis">
@@ -11819,15 +11969,6 @@
11819
11969
  </span>
11820
11970
  </a>
11821
11971
 
11822
- </li>
11823
-
11824
- <li class="md-nav__item">
11825
- <a href="#nautobot.apps.ui.Button.should_render" class="md-nav__link">
11826
- <span class="md-ellipsis">
11827
- should_render
11828
- </span>
11829
- </a>
11830
-
11831
11972
  </li>
11832
11973
 
11833
11974
  </ul>
@@ -11926,6 +12067,21 @@
11926
12067
  </span>
11927
12068
  </a>
11928
12069
 
12070
+ <nav class="md-nav" aria-label="DistinctViewTab">
12071
+ <ul class="md-nav__list">
12072
+
12073
+ <li class="md-nav__item">
12074
+ <a href="#nautobot.apps.ui.DistinctViewTab.should_render_content" class="md-nav__link">
12075
+ <span class="md-ellipsis">
12076
+ should_render_content
12077
+ </span>
12078
+ </a>
12079
+
12080
+ </li>
12081
+
12082
+ </ul>
12083
+ </nav>
12084
+
11929
12085
  </li>
11930
12086
 
11931
12087
  <li class="md-nav__item">
@@ -12115,6 +12271,48 @@
12115
12271
  </ul>
12116
12272
  </nav>
12117
12273
 
12274
+ </li>
12275
+
12276
+ <li class="md-nav__item">
12277
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem" class="md-nav__link">
12278
+ <span class="md-ellipsis">
12279
+ InstanceParentBreadcrumbItem
12280
+ </span>
12281
+ </a>
12282
+
12283
+ <nav class="md-nav" aria-label="InstanceParentBreadcrumbItem">
12284
+ <ul class="md-nav__list">
12285
+
12286
+ <li class="md-nav__item">
12287
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.__post_init__" class="md-nav__link">
12288
+ <span class="md-ellipsis">
12289
+ __post_init__
12290
+ </span>
12291
+ </a>
12292
+
12293
+ </li>
12294
+
12295
+ <li class="md-nav__item">
12296
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.get_label" class="md-nav__link">
12297
+ <span class="md-ellipsis">
12298
+ get_label
12299
+ </span>
12300
+ </a>
12301
+
12302
+ </li>
12303
+
12304
+ <li class="md-nav__item">
12305
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.get_url" class="md-nav__link">
12306
+ <span class="md-ellipsis">
12307
+ get_url
12308
+ </span>
12309
+ </a>
12310
+
12311
+ </li>
12312
+
12313
+ </ul>
12314
+ </nav>
12315
+
12118
12316
  </li>
12119
12317
 
12120
12318
  <li class="md-nav__item">
@@ -12818,6 +13016,15 @@
12818
13016
  </span>
12819
13017
  </a>
12820
13018
 
13019
+ </li>
13020
+
13021
+ <li class="md-nav__item">
13022
+ <a href="#nautobot.apps.ui.Tab.should_render_content" class="md-nav__link">
13023
+ <span class="md-ellipsis">
13024
+ should_render_content
13025
+ </span>
13026
+ </a>
13027
+
12821
13028
  </li>
12822
13029
 
12823
13030
  </ul>
@@ -13039,6 +13246,15 @@
13039
13246
  </ul>
13040
13247
  </nav>
13041
13248
 
13249
+ </li>
13250
+
13251
+ <li class="md-nav__item">
13252
+ <a href="#nautobot.apps.ui.context_object_attr" class="md-nav__link">
13253
+ <span class="md-ellipsis">
13254
+ context_object_attr
13255
+ </span>
13256
+ </a>
13257
+
13042
13258
  </li>
13043
13259
 
13044
13260
  <li class="md-nav__item">
@@ -13104,17 +13320,23 @@
13104
13320
 
13105
13321
 
13106
13322
 
13107
- <h2 id="nautobot.apps.ui.Banner" class="doc doc-heading">
13108
- <code>nautobot.apps.ui.Banner</code>
13323
+ <h2 id="nautobot.apps.ui.AncestorsBreadcrumbs" class="doc doc-heading">
13324
+ <code>nautobot.apps.ui.AncestorsBreadcrumbs</code>
13109
13325
 
13110
13326
 
13111
- <a href="#nautobot.apps.ui.Banner" class="headerlink" title="Permanent link">&para;</a></h2>
13327
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs" class="headerlink" title="Permanent link">&para;</a></h2>
13112
13328
 
13113
13329
 
13114
13330
  <div class="doc doc-contents ">
13331
+ <p class="doc doc-class-bases">
13332
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.Breadcrumbs (nautobot.core.ui.breadcrumbs.Breadcrumbs)" href="#nautobot.apps.ui.Breadcrumbs">Breadcrumbs</a></code></p>
13115
13333
 
13116
13334
 
13117
- <p>Class that may be returned by a registered plugin_banners function.</p>
13335
+ <p>Breadcrumbs class which can render list of ancestors of given instance.</p>
13336
+ <p>Default behavior:
13337
+ - render breadcrumb item with link to the list view
13338
+ - dynamically add list of <code>InstanceBreadcrumbItem</code> from <code>ancestors()</code>
13339
+ - adds standard breadcrumb item with link to the details</p>
13118
13340
 
13119
13341
 
13120
13342
 
@@ -13135,31 +13357,354 @@
13135
13357
 
13136
13358
 
13137
13359
 
13360
+ <div class="doc doc-object doc-function">
13138
13361
 
13139
13362
 
13140
- </div>
13141
-
13142
- </div>
13143
-
13144
- </div>
13145
-
13146
- <div class="doc doc-object doc-class">
13147
-
13148
-
13149
-
13150
- <h2 id="nautobot.apps.ui.BannerClassChoices" class="doc doc-heading">
13151
- <code>nautobot.apps.ui.BannerClassChoices</code>
13152
-
13363
+ <h3 id="nautobot.apps.ui.AncestorsBreadcrumbs.get_ancestors_items" class="doc doc-heading">
13364
+ <code class="highlight language-python"><span class="n">get_ancestors_items</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span></code>
13153
13365
 
13154
- <a href="#nautobot.apps.ui.BannerClassChoices" class="headerlink" title="Permanent link">&para;</a></h2>
13366
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_ancestors_items" class="headerlink" title="Permanent link">&para;</a></h3>
13155
13367
 
13156
13368
 
13157
13369
  <div class="doc doc-contents ">
13158
- <p class="doc doc-class-bases">
13159
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.choices.ChoiceSet (nautobot.core.choices.ChoiceSet)" href="choices.html#nautobot.apps.choices.ChoiceSet">ChoiceSet</a></code></p>
13160
13370
 
13161
-
13162
- <p>Styling choices for custom banners.</p>
13371
+ <p>Create breadcrumb items for all ancestor objects of the given instance.</p>
13372
+
13373
+
13374
+ <p><span class="doc-section-title">Parameters:</span></p>
13375
+ <table>
13376
+ <thead>
13377
+ <tr>
13378
+ <th>Name</th>
13379
+ <th>Type</th>
13380
+ <th>Description</th>
13381
+ <th>Default</th>
13382
+ </tr>
13383
+ </thead>
13384
+ <tbody>
13385
+ <tr class="doc-section-item">
13386
+ <td>
13387
+ <code>instance</code>
13388
+ </td>
13389
+ <td>
13390
+ <code><a class="autorefs autorefs-internal" title="nautobot.apps.models.TreeModel (nautobot.core.models.tree_queries.TreeModel)" href="models.html#nautobot.apps.models.TreeModel">TreeModel</a></code>
13391
+ </td>
13392
+ <td>
13393
+ <div class="doc-md-description">
13394
+ <p>Object from context.</p>
13395
+ </div>
13396
+ </td>
13397
+ <td>
13398
+ <em>required</em>
13399
+ </td>
13400
+ </tr>
13401
+ </tbody>
13402
+ </table>
13403
+
13404
+
13405
+ <p><span class="doc-section-title">Returns:</span></p>
13406
+ <table>
13407
+ <thead>
13408
+ <tr>
13409
+ <th>Type</th>
13410
+ <th>Description</th>
13411
+ </tr>
13412
+ </thead>
13413
+ <tbody>
13414
+ <tr class="doc-section-item">
13415
+ <td>
13416
+ <code><span title="list">list</span>[<a class="autorefs autorefs-internal" title="nautobot.apps.ui.BaseBreadcrumbItem
13417
+
13418
+
13419
+
13420
+ dataclass
13421
+ (nautobot.core.ui.breadcrumbs.BaseBreadcrumbItem)" href="#nautobot.apps.ui.BaseBreadcrumbItem">BaseBreadcrumbItem</a>]</code>
13422
+ </td>
13423
+ <td>
13424
+ <div class="doc-md-description">
13425
+ <p>list[BaseBreadcrumbItem]: Breadcrumb items for each ancestor of the instance.</p>
13426
+ </div>
13427
+ </td>
13428
+ </tr>
13429
+ </tbody>
13430
+ </table>
13431
+
13432
+
13433
+ </div>
13434
+
13435
+ </div>
13436
+
13437
+ <div class="doc doc-object doc-function">
13438
+
13439
+
13440
+ <h3 id="nautobot.apps.ui.AncestorsBreadcrumbs.get_detail_items" class="doc doc-heading">
13441
+ <code class="highlight language-python"><span class="n">get_detail_items</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
13442
+
13443
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_detail_items" class="headerlink" title="Permanent link">&para;</a></h3>
13444
+
13445
+
13446
+ <div class="doc doc-contents ">
13447
+
13448
+ <p>Build breadcrumb items for a detail view, including the model, its ancestors, and the instance itself.</p>
13449
+
13450
+
13451
+ <p><span class="doc-section-title">Parameters:</span></p>
13452
+ <table>
13453
+ <thead>
13454
+ <tr>
13455
+ <th>Name</th>
13456
+ <th>Type</th>
13457
+ <th>Description</th>
13458
+ <th>Default</th>
13459
+ </tr>
13460
+ </thead>
13461
+ <tbody>
13462
+ <tr class="doc-section-item">
13463
+ <td>
13464
+ <code>context</code>
13465
+ </td>
13466
+ <td>
13467
+ <code><span title="django.template.Context">Context</span></code>
13468
+ </td>
13469
+ <td>
13470
+ <div class="doc-md-description">
13471
+ <p>Template or view context containing the current object.</p>
13472
+ </div>
13473
+ </td>
13474
+ <td>
13475
+ <em>required</em>
13476
+ </td>
13477
+ </tr>
13478
+ </tbody>
13479
+ </table>
13480
+
13481
+
13482
+ <p><span class="doc-section-title">Returns:</span></p>
13483
+ <table>
13484
+ <thead>
13485
+ <tr>
13486
+ <th>Type</th>
13487
+ <th>Description</th>
13488
+ </tr>
13489
+ </thead>
13490
+ <tbody>
13491
+ <tr class="doc-section-item">
13492
+ <td>
13493
+ <code><span title="list">list</span>[<a class="autorefs autorefs-internal" title="nautobot.apps.ui.BaseBreadcrumbItem
13494
+
13495
+
13496
+
13497
+ dataclass
13498
+ (nautobot.core.ui.breadcrumbs.BaseBreadcrumbItem)" href="#nautobot.apps.ui.BaseBreadcrumbItem">BaseBreadcrumbItem</a>]</code>
13499
+ </td>
13500
+ <td>
13501
+ <div class="doc-md-description">
13502
+ <p>list[BaseBreadcrumbItem]: Ordered breadcrumb items for the given instance.</p>
13503
+ </div>
13504
+ </td>
13505
+ </tr>
13506
+ </tbody>
13507
+ </table>
13508
+
13509
+
13510
+ </div>
13511
+
13512
+ </div>
13513
+
13514
+ <div class="doc doc-object doc-function">
13515
+
13516
+
13517
+ <h3 id="nautobot.apps.ui.AncestorsBreadcrumbs.get_items_for_action" class="doc doc-heading">
13518
+ <code class="highlight language-python"><span class="n">get_items_for_action</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">detail</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></code>
13519
+
13520
+ <a href="#nautobot.apps.ui.AncestorsBreadcrumbs.get_items_for_action" class="headerlink" title="Permanent link">&para;</a></h3>
13521
+
13522
+
13523
+ <div class="doc doc-contents ">
13524
+
13525
+ <p>Get the breadcrumb items for a specific action, 'detail' or to asterisk (*) if present.</p>
13526
+ <p>For detail action it calls <code>self.get_detail_items()</code> method. For other actions, it calls parent class method.</p>
13527
+
13528
+
13529
+ <p><span class="doc-section-title">Parameters:</span></p>
13530
+ <table>
13531
+ <thead>
13532
+ <tr>
13533
+ <th>Name</th>
13534
+ <th>Type</th>
13535
+ <th>Description</th>
13536
+ <th>Default</th>
13537
+ </tr>
13538
+ </thead>
13539
+ <tbody>
13540
+ <tr class="doc-section-item">
13541
+ <td>
13542
+ <code>items</code>
13543
+ </td>
13544
+ <td>
13545
+ <code><span title="nautobot.core.ui.breadcrumbs.BreadcrumbItemsType">BreadcrumbItemsType</span></code>
13546
+ </td>
13547
+ <td>
13548
+ <div class="doc-md-description">
13549
+ <p>Dictionary mapping action names to breadcrumb item lists.</p>
13550
+ </div>
13551
+ </td>
13552
+ <td>
13553
+ <em>required</em>
13554
+ </td>
13555
+ </tr>
13556
+ <tr class="doc-section-item">
13557
+ <td>
13558
+ <code>action</code>
13559
+ </td>
13560
+ <td>
13561
+ <code><span title="str">str</span></code>
13562
+ </td>
13563
+ <td>
13564
+ <div class="doc-md-description">
13565
+ <p>Current action name (e.g., "list", "detail").</p>
13566
+ </div>
13567
+ </td>
13568
+ <td>
13569
+ <em>required</em>
13570
+ </td>
13571
+ </tr>
13572
+ <tr class="doc-section-item">
13573
+ <td>
13574
+ <code>detail</code>
13575
+ </td>
13576
+ <td>
13577
+ <code><span title="bool">bool</span></code>
13578
+ </td>
13579
+ <td>
13580
+ <div class="doc-md-description">
13581
+ <p>Whether this is a detail view (for fallback).</p>
13582
+ </div>
13583
+ </td>
13584
+ <td>
13585
+ <em>required</em>
13586
+ </td>
13587
+ </tr>
13588
+ <tr class="doc-section-item">
13589
+ <td>
13590
+ <code>context</code>
13591
+ </td>
13592
+ <td>
13593
+ <code><span title="django.template.Context">Context</span></code>
13594
+ </td>
13595
+ <td>
13596
+ <div class="doc-md-description">
13597
+ <p>The view or template context.</p>
13598
+ </div>
13599
+ </td>
13600
+ <td>
13601
+ <em>required</em>
13602
+ </td>
13603
+ </tr>
13604
+ </tbody>
13605
+ </table>
13606
+
13607
+
13608
+ <p><span class="doc-section-title">Returns:</span></p>
13609
+ <table>
13610
+ <thead>
13611
+ <tr>
13612
+ <th>Type</th>
13613
+ <th>Description</th>
13614
+ </tr>
13615
+ </thead>
13616
+ <tbody>
13617
+ <tr class="doc-section-item">
13618
+ <td>
13619
+ <code><span title="list">list</span>[<a class="autorefs autorefs-internal" title="nautobot.apps.ui.BaseBreadcrumbItem
13620
+
13621
+
13622
+
13623
+ dataclass
13624
+ (nautobot.core.ui.breadcrumbs.BaseBreadcrumbItem)" href="#nautobot.apps.ui.BaseBreadcrumbItem">BaseBreadcrumbItem</a>]</code>
13625
+ </td>
13626
+ <td>
13627
+ <div class="doc-md-description">
13628
+ <p>list[BaseBreadcrumbItem]: List of breadcrumb items for the action.</p>
13629
+ </div>
13630
+ </td>
13631
+ </tr>
13632
+ </tbody>
13633
+ </table>
13634
+
13635
+
13636
+ </div>
13637
+
13638
+ </div>
13639
+
13640
+
13641
+
13642
+ </div>
13643
+
13644
+ </div>
13645
+
13646
+ </div>
13647
+
13648
+ <div class="doc doc-object doc-class">
13649
+
13650
+
13651
+
13652
+ <h2 id="nautobot.apps.ui.Banner" class="doc doc-heading">
13653
+ <code>nautobot.apps.ui.Banner</code>
13654
+
13655
+
13656
+ <a href="#nautobot.apps.ui.Banner" class="headerlink" title="Permanent link">&para;</a></h2>
13657
+
13658
+
13659
+ <div class="doc doc-contents ">
13660
+
13661
+
13662
+ <p>Class that may be returned by a registered plugin_banners function.</p>
13663
+
13664
+
13665
+
13666
+
13667
+
13668
+
13669
+
13670
+
13671
+
13672
+
13673
+ <div class="doc doc-children">
13674
+
13675
+
13676
+
13677
+
13678
+
13679
+
13680
+
13681
+
13682
+
13683
+
13684
+
13685
+ </div>
13686
+
13687
+ </div>
13688
+
13689
+ </div>
13690
+
13691
+ <div class="doc doc-object doc-class">
13692
+
13693
+
13694
+
13695
+ <h2 id="nautobot.apps.ui.BannerClassChoices" class="doc doc-heading">
13696
+ <code>nautobot.apps.ui.BannerClassChoices</code>
13697
+
13698
+
13699
+ <a href="#nautobot.apps.ui.BannerClassChoices" class="headerlink" title="Permanent link">&para;</a></h2>
13700
+
13701
+
13702
+ <div class="doc doc-contents ">
13703
+ <p class="doc doc-class-bases">
13704
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.choices.ChoiceSet (nautobot.core.choices.ChoiceSet)" href="choices.html#nautobot.apps.choices.ChoiceSet">ChoiceSet</a></code></p>
13705
+
13706
+
13707
+ <p>Styling choices for custom banners.</p>
13163
13708
 
13164
13709
 
13165
13710
 
@@ -13286,7 +13831,7 @@
13286
13831
  <div class="doc doc-contents ">
13287
13832
 
13288
13833
  <p>Construct the (URL, label) pair for the breadcrumb.</p>
13289
- <p>Combines <code>get_url()</code> and <code>get_label()</code> and applies title casing to the label.</p>
13834
+ <p>Combines <code>get_url()</code> and <code>get_label()</code> and applies formatting to the label.</p>
13290
13835
 
13291
13836
 
13292
13837
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -13345,7 +13890,7 @@
13345
13890
  </td>
13346
13891
  <td>
13347
13892
  <div class="doc-md-description">
13348
- <p>if unresolved, and label is title-cased.</p>
13893
+ <p>if unresolved, and label.</p>
13349
13894
  </div>
13350
13895
  </td>
13351
13896
  </tr>
@@ -14076,7 +14621,7 @@ if you need them in your custom action.</p>
14076
14621
 
14077
14622
 
14078
14623
  <h3 id="nautobot.apps.ui.Breadcrumbs.__init__" class="doc doc-heading">
14079
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">items</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">template</span><span class="o">=</span><span class="s1">&#39;inc/breadcrumbs.html&#39;</span><span class="p">)</span></code>
14624
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">items</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">template</span><span class="o">=</span><span class="s1">&#39;components/breadcrumbs.html&#39;</span><span class="p">,</span> <span class="n">detail_item_label</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
14080
14625
 
14081
14626
  <a href="#nautobot.apps.ui.Breadcrumbs.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
14082
14627
 
@@ -14126,7 +14671,23 @@ if you need them in your custom action.</p>
14126
14671
  </div>
14127
14672
  </td>
14128
14673
  <td>
14129
- <code>&#39;inc/breadcrumbs.html&#39;</code>
14674
+ <code>&#39;components/breadcrumbs.html&#39;</code>
14675
+ </td>
14676
+ </tr>
14677
+ <tr class="doc-section-item">
14678
+ <td>
14679
+ <code>detail_item_label</code>
14680
+ </td>
14681
+ <td>
14682
+ <code><span title="typing.Union">Union</span>[<span title="typing.Callable">Callable</span>[[<span title="django.template.Context">Context</span>], <span title="str">str</span>], <span title="nautobot.core.ui.breadcrumbs.WithStr">WithStr</span>, None]</code>
14683
+ </td>
14684
+ <td>
14685
+ <div class="doc-md-description">
14686
+ <p>Custom label for last built-in breadcrumb item with link to the object details.</p>
14687
+ </div>
14688
+ </td>
14689
+ <td>
14690
+ <code>None</code>
14130
14691
  </td>
14131
14692
  </tr>
14132
14693
  </tbody>
@@ -14171,7 +14732,7 @@ if you need them in your custom action.</p>
14171
14732
  </td>
14172
14733
  <td>
14173
14734
  <div class="doc-md-description">
14174
- <p>breadcrumb items pair.s</p>
14735
+ <p>breadcrumb items pairs.</p>
14175
14736
  </div>
14176
14737
  </td>
14177
14738
  <td>
@@ -14375,20 +14936,15 @@ Please ote that you can't override <code>breadcrumb_items</code> here because it
14375
14936
  <div class="doc doc-object doc-function">
14376
14937
 
14377
14938
 
14378
- <h3 id="nautobot.apps.ui.Breadcrumbs.get_items_for_action" class="doc doc-heading">
14379
- <code class="highlight language-python"><span class="n">get_items_for_action</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">detail</span><span class="p">)</span></code>
14380
-
14381
- <span class="doc doc-labels">
14382
- <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
14383
- </span>
14939
+ <h3 id="nautobot.apps.ui.Breadcrumbs.get_items_for_action" class="doc doc-heading">
14940
+ <code class="highlight language-python"><span class="n">get_items_for_action</span><span class="p">(</span><span class="n">items</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">detail</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></code>
14384
14941
 
14385
14942
  <a href="#nautobot.apps.ui.Breadcrumbs.get_items_for_action" class="headerlink" title="Permanent link">&para;</a></h3>
14386
14943
 
14387
14944
 
14388
14945
  <div class="doc doc-contents ">
14389
14946
 
14390
- <p>Get the breadcrumb items for a specific action, with fallback to 'detail' if not found
14391
- and to asterisk (*) if present.</p>
14947
+ <p>Get the breadcrumb items for a specific action, 'detail' or to asterisk (*) if present.</p>
14392
14948
 
14393
14949
 
14394
14950
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -14450,6 +15006,22 @@ and to asterisk (*) if present.</p>
14450
15006
  <em>required</em>
14451
15007
  </td>
14452
15008
  </tr>
15009
+ <tr class="doc-section-item">
15010
+ <td>
15011
+ <code>context</code>
15012
+ </td>
15013
+ <td>
15014
+ <code><span title="django.template.Context">Context</span></code>
15015
+ </td>
15016
+ <td>
15017
+ <div class="doc-md-description">
15018
+ <p>The view or template context.</p>
15019
+ </div>
15020
+ </td>
15021
+ <td>
15022
+ <em>required</em>
15023
+ </td>
15024
+ </tr>
14453
15025
  </tbody>
14454
15026
  </table>
14455
15027
 
@@ -14684,7 +15256,7 @@ and to asterisk (*) if present.</p>
14684
15256
 
14685
15257
 
14686
15258
  <h3 id="nautobot.apps.ui.Button.__init__" class="doc doc-heading">
14687
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">ButtonColorChoices</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> <span class="n">link_name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">icon</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">template_path</span><span class="o">=</span><span class="s1">&#39;components/button/default.html&#39;</span><span class="p">,</span> <span class="n">required_permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">javascript_template_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">attributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">link_includes_pk</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">context_object_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
15259
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">ButtonColorChoices</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> <span class="n">link_name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">icon</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">template_path</span><span class="o">=</span><span class="s1">&#39;components/button/default.html&#39;</span><span class="p">,</span> <span class="n">javascript_template_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">attributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">link_includes_pk</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">context_object_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">render_on_tab_id</span><span class="o">=</span><span class="s1">&#39;main&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
14688
15260
 
14689
15261
  <a href="#nautobot.apps.ui.Button.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
14690
15262
 
@@ -14806,15 +15378,15 @@ and override the <code>get_link()</code> method.</p>
14806
15378
  </tr>
14807
15379
  <tr class="doc-section-item">
14808
15380
  <td>
14809
- <code>required_permissions</code>
15381
+ <code>javascript_template_path</code>
14810
15382
  </td>
14811
15383
  <td>
14812
- <code><span title="list">list</span></code>
15384
+ <code><span title="str">str</span></code>
14813
15385
  </td>
14814
15386
  <td>
14815
15387
  <div class="doc-md-description">
14816
- <p>Permissions such as <code>["dcim.add_consoleport"]</code>.
14817
- The button will only be rendered if the user has these permissions.</p>
15388
+ <p>JavaScript template to render and include with this button.
15389
+ Does not need to include the wrapping <code>&lt;script&gt;...&lt;/script&gt;</code> tags as those will be added automatically.</p>
14818
15390
  </div>
14819
15391
  </td>
14820
15392
  <td>
@@ -14823,15 +15395,14 @@ The button will only be rendered if the user has these permissions.</p>
14823
15395
  </tr>
14824
15396
  <tr class="doc-section-item">
14825
15397
  <td>
14826
- <code>javascript_template_path</code>
15398
+ <code>attributes</code>
14827
15399
  </td>
14828
15400
  <td>
14829
- <code><span title="str">str</span></code>
15401
+ <code><span title="dict">dict</span></code>
14830
15402
  </td>
14831
15403
  <td>
14832
15404
  <div class="doc-md-description">
14833
- <p>JavaScript template to render and include with this button.
14834
- Does not need to include the wrapping <code>&lt;script&gt;...&lt;/script&gt;</code> tags as those will be added automatically.</p>
15405
+ <p>Additional HTML attributes and their values to attach to the button.</p>
14835
15406
  </div>
14836
15407
  </td>
14837
15408
  <td>
@@ -14840,14 +15411,14 @@ Does not need to include the wrapping <code>&lt;script&gt;...&lt;/script&gt;</co
14840
15411
  </tr>
14841
15412
  <tr class="doc-section-item">
14842
15413
  <td>
14843
- <code>attributes</code>
15414
+ <code>size</code>
14844
15415
  </td>
14845
15416
  <td>
14846
- <code><span title="dict">dict</span></code>
15417
+ <code><span title="str">str</span></code>
14847
15418
  </td>
14848
15419
  <td>
14849
15420
  <div class="doc-md-description">
14850
- <p>Additional HTML attributes and their values to attach to the button.</p>
15421
+ <p>The size of the button (e.g. <code>xs</code> or <code>sm</code>), used to apply a Bootstrap-style sizing.</p>
14851
15422
  </div>
14852
15423
  </td>
14853
15424
  <td>
@@ -14856,18 +15427,18 @@ Does not need to include the wrapping <code>&lt;script&gt;...&lt;/script&gt;</co
14856
15427
  </tr>
14857
15428
  <tr class="doc-section-item">
14858
15429
  <td>
14859
- <code>size</code>
15430
+ <code>render_on_tab_id</code>
14860
15431
  </td>
14861
15432
  <td>
14862
15433
  <code><span title="str">str</span></code>
14863
15434
  </td>
14864
15435
  <td>
14865
15436
  <div class="doc-md-description">
14866
- <p>The size of the button (e.g. <code>xs</code> or <code>sm</code>), used to apply a Bootstrap-style sizing.</p>
15437
+ <p>The (only) tab that this button should appear on.</p>
14867
15438
  </div>
14868
15439
  </td>
14869
15440
  <td>
14870
- <code>None</code>
15441
+ <code>&#39;main&#39;</code>
14871
15442
  </td>
14872
15443
  </tr>
14873
15444
  </tbody>
@@ -14934,24 +15505,6 @@ more advanced link construction.</p>
14934
15505
 
14935
15506
  </div>
14936
15507
 
14937
- <div class="doc doc-object doc-function">
14938
-
14939
-
14940
- <h3 id="nautobot.apps.ui.Button.should_render" class="doc doc-heading">
14941
- <code class="highlight language-python"><span class="n">should_render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
14942
-
14943
- <a href="#nautobot.apps.ui.Button.should_render" class="headerlink" title="Permanent link">&para;</a></h3>
14944
-
14945
-
14946
- <div class="doc doc-contents ">
14947
-
14948
- <p>Render if and only if the requesting user has appropriate permissions (if any).</p>
14949
-
14950
-
14951
- </div>
14952
-
14953
- </div>
14954
-
14955
15508
 
14956
15509
 
14957
15510
  </div>
@@ -15044,7 +15597,7 @@ more advanced link construction.</p>
15044
15597
 
15045
15598
 
15046
15599
  <h3 id="nautobot.apps.ui.Component.__init__" class="doc doc-heading">
15047
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">weight</span><span class="p">)</span></code>
15600
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">weight</span><span class="p">,</span> <span class="n">required_permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
15048
15601
 
15049
15602
  <a href="#nautobot.apps.ui.Component.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
15050
15603
 
@@ -15082,6 +15635,23 @@ rendered "first", usually towards the top left of the page.</p>
15082
15635
  <em>required</em>
15083
15636
  </td>
15084
15637
  </tr>
15638
+ <tr class="doc-section-item">
15639
+ <td>
15640
+ <code>required_permissions</code>
15641
+ </td>
15642
+ <td>
15643
+ <code><span title="list">list</span></code>
15644
+ </td>
15645
+ <td>
15646
+ <div class="doc-md-description">
15647
+ <p>Permissions such as <code>["dcim.add_consoleport"]</code>.
15648
+ The component will only be rendered if the user has these permissions.</p>
15649
+ </div>
15650
+ </td>
15651
+ <td>
15652
+ <code>None</code>
15653
+ </td>
15654
+ </tr>
15085
15655
  </tbody>
15086
15656
  </table>
15087
15657
 
@@ -15189,6 +15759,7 @@ a Tab has a separate "label" that must be rendered by calling its <code>render_l
15189
15759
  <p>This API is designed to provide "short-circuit" logic for skipping what otherwise might be expensive rendering.
15190
15760
  In general most Components may also return an empty string when actually rendered, which is typically also a
15191
15761
  means to specify that they do not need to be rendered, but may be more expensive to derive.</p>
15762
+ <p>The default implementation here checks for <code>self.required_permissions</code> if any.</p>
15192
15763
 
15193
15764
 
15194
15765
  <p><span class="doc-section-title">Returns:</span></p>
@@ -15274,7 +15845,7 @@ means to specify that they do not need to be rendered, but may be more expensive
15274
15845
 
15275
15846
  <div class="doc doc-contents ">
15276
15847
 
15277
- <p>Instantiate a DataDictTablePanel.</p>
15848
+ <p>Instantiate a DataTablePanel.</p>
15278
15849
 
15279
15850
 
15280
15851
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -15468,6 +16039,22 @@ Mutually exclusive with <code>column_headers</code>.</p>
15468
16039
  <code>&#39;&#39;</code>
15469
16040
  </td>
15470
16041
  </tr>
16042
+ <tr class="doc-section-item">
16043
+ <td>
16044
+ <code>hide_if_empty</code>
16045
+ </td>
16046
+ <td>
16047
+ <code><span title="bool">bool</span></code>
16048
+ </td>
16049
+ <td>
16050
+ <div class="doc-md-description">
16051
+ <p>Do not render this tab if the related_object_attribute is an empty queryset.</p>
16052
+ </div>
16053
+ </td>
16054
+ <td>
16055
+ <code>False</code>
16056
+ </td>
16057
+ </tr>
15471
16058
  </tbody>
15472
16059
  </table>
15473
16060
 
@@ -15490,6 +16077,24 @@ Mutually exclusive with <code>column_headers</code>.</p>
15490
16077
 
15491
16078
 
15492
16079
 
16080
+ <div class="doc doc-object doc-function">
16081
+
16082
+
16083
+ <h3 id="nautobot.apps.ui.DistinctViewTab.should_render_content" class="doc doc-heading">
16084
+ <code class="highlight language-python"><span class="n">should_render_content</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
16085
+
16086
+ <a href="#nautobot.apps.ui.DistinctViewTab.should_render_content" class="headerlink" title="Permanent link">&para;</a></h3>
16087
+
16088
+
16089
+ <div class="doc doc-contents ">
16090
+
16091
+ <p>A DistinctViewTab should only render its content if the view in question is active.</p>
16092
+
16093
+
16094
+ </div>
16095
+
16096
+ </div>
16097
+
15493
16098
 
15494
16099
 
15495
16100
  </div>
@@ -15841,7 +16446,165 @@ Mutually exclusive with <code>column_headers</code>.</p>
15841
16446
  </td>
15842
16447
  <td>
15843
16448
  <div class="doc-md-description">
15844
- <p>The permissions required to view this group.</p>
16449
+ <p>The permissions required to view this group.</p>
16450
+ </div>
16451
+ </td>
16452
+ <td>
16453
+ <code>None</code>
16454
+ </td>
16455
+ </tr>
16456
+ <tr class="doc-section-item">
16457
+ <td>
16458
+ <code>items</code>
16459
+ </td>
16460
+ <td>
16461
+ <code><span title="list">list</span></code>
16462
+ </td>
16463
+ <td>
16464
+ <div class="doc-md-description">
16465
+ <p>List of items to be rendered in this group.</p>
16466
+ </div>
16467
+ </td>
16468
+ <td>
16469
+ <code>None</code>
16470
+ </td>
16471
+ </tr>
16472
+ <tr class="doc-section-item">
16473
+ <td>
16474
+ <code>weight</code>
16475
+ </td>
16476
+ <td>
16477
+ <code><span title="int">int</span></code>
16478
+ </td>
16479
+ <td>
16480
+ <div class="doc-md-description">
16481
+ <p>The weight of this group.</p>
16482
+ </div>
16483
+ </td>
16484
+ <td>
16485
+ <code>1000</code>
16486
+ </td>
16487
+ </tr>
16488
+ </tbody>
16489
+ </table>
16490
+
16491
+
16492
+ </div>
16493
+
16494
+ </div>
16495
+
16496
+
16497
+
16498
+ </div>
16499
+
16500
+ </div>
16501
+
16502
+ </div>
16503
+
16504
+ <div class="doc doc-object doc-class">
16505
+
16506
+
16507
+
16508
+ <h2 id="nautobot.apps.ui.HomePageItem" class="doc doc-heading">
16509
+ <code>nautobot.apps.ui.HomePageItem</code>
16510
+
16511
+
16512
+ <a href="#nautobot.apps.ui.HomePageItem" class="headerlink" title="Permanent link">&para;</a></h2>
16513
+
16514
+
16515
+ <div class="doc doc-contents ">
16516
+ <p class="doc doc-class-bases">
16517
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.HomePageBase (nautobot.core.ui.homepage.HomePageBase)" href="#nautobot.apps.ui.HomePageBase">HomePageBase</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.PermissionsMixin (nautobot.core.ui.base.PermissionsMixin)" href="#nautobot.apps.ui.PermissionsMixin">PermissionsMixin</a></code></p>
16518
+
16519
+
16520
+ <p>Defines properties that can be used for a panel item.</p>
16521
+
16522
+
16523
+
16524
+
16525
+
16526
+
16527
+
16528
+
16529
+
16530
+
16531
+ <div class="doc doc-children">
16532
+
16533
+
16534
+
16535
+
16536
+
16537
+
16538
+
16539
+
16540
+
16541
+ <div class="doc doc-object doc-function">
16542
+
16543
+
16544
+ <h3 id="nautobot.apps.ui.HomePageItem.__init__" class="doc doc-heading">
16545
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">link</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span></code>
16546
+
16547
+ <a href="#nautobot.apps.ui.HomePageItem.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
16548
+
16549
+
16550
+ <div class="doc doc-contents ">
16551
+
16552
+ <p>Ensure item properties.</p>
16553
+
16554
+
16555
+ <p><span class="doc-section-title">Parameters:</span></p>
16556
+ <table>
16557
+ <thead>
16558
+ <tr>
16559
+ <th>Name</th>
16560
+ <th>Type</th>
16561
+ <th>Description</th>
16562
+ <th>Default</th>
16563
+ </tr>
16564
+ </thead>
16565
+ <tbody>
16566
+ <tr class="doc-section-item">
16567
+ <td>
16568
+ <code>name</code>
16569
+ </td>
16570
+ <td>
16571
+ <code><span title="str">str</span></code>
16572
+ </td>
16573
+ <td>
16574
+ <div class="doc-md-description">
16575
+ <p>The name of the item.</p>
16576
+ </div>
16577
+ </td>
16578
+ <td>
16579
+ <em>required</em>
16580
+ </td>
16581
+ </tr>
16582
+ <tr class="doc-section-item">
16583
+ <td>
16584
+ <code>link</code>
16585
+ </td>
16586
+ <td>
16587
+ <code><span title="str">str</span></code>
16588
+ </td>
16589
+ <td>
16590
+ <div class="doc-md-description">
16591
+ <p>The link to be used for this item.</p>
16592
+ </div>
16593
+ </td>
16594
+ <td>
16595
+ <code>None</code>
16596
+ </td>
16597
+ </tr>
16598
+ <tr class="doc-section-item">
16599
+ <td>
16600
+ <code>model</code>
16601
+ </td>
16602
+ <td>
16603
+ <code><span title="str">str</span></code>
16604
+ </td>
16605
+ <td>
16606
+ <div class="doc-md-description">
16607
+ <p>The model to being used for this item to calculate the total count of objects.</p>
15845
16608
  </div>
15846
16609
  </td>
15847
16610
  <td>
@@ -15850,14 +16613,14 @@ Mutually exclusive with <code>column_headers</code>.</p>
15850
16613
  </tr>
15851
16614
  <tr class="doc-section-item">
15852
16615
  <td>
15853
- <code>items</code>
16616
+ <code>custom_template</code>
15854
16617
  </td>
15855
16618
  <td>
15856
- <code><span title="list">list</span></code>
16619
+ <code><span title="str">str</span></code>
15857
16620
  </td>
15858
16621
  <td>
15859
16622
  <div class="doc-md-description">
15860
- <p>List of items to be rendered in this group.</p>
16623
+ <p>Name of custom template.</p>
15861
16624
  </div>
15862
16625
  </td>
15863
16626
  <td>
@@ -15866,18 +16629,18 @@ Mutually exclusive with <code>column_headers</code>.</p>
15866
16629
  </tr>
15867
16630
  <tr class="doc-section-item">
15868
16631
  <td>
15869
- <code>weight</code>
16632
+ <code>custom_data</code>
15870
16633
  </td>
15871
16634
  <td>
15872
- <code><span title="int">int</span></code>
16635
+ <code><span title="dict">dict</span></code>
15873
16636
  </td>
15874
16637
  <td>
15875
16638
  <div class="doc-md-description">
15876
- <p>The weight of this group.</p>
16639
+ <p>Custom data to be passed to the custom template.</p>
15877
16640
  </div>
15878
16641
  </td>
15879
16642
  <td>
15880
- <code>1000</code>
16643
+ <code>None</code>
15881
16644
  </td>
15882
16645
  </tr>
15883
16646
  </tbody>
@@ -15900,11 +16663,11 @@ Mutually exclusive with <code>column_headers</code>.</p>
15900
16663
 
15901
16664
 
15902
16665
 
15903
- <h2 id="nautobot.apps.ui.HomePageItem" class="doc doc-heading">
15904
- <code>nautobot.apps.ui.HomePageItem</code>
16666
+ <h2 id="nautobot.apps.ui.HomePagePanel" class="doc doc-heading">
16667
+ <code>nautobot.apps.ui.HomePagePanel</code>
15905
16668
 
15906
16669
 
15907
- <a href="#nautobot.apps.ui.HomePageItem" class="headerlink" title="Permanent link">&para;</a></h2>
16670
+ <a href="#nautobot.apps.ui.HomePagePanel" class="headerlink" title="Permanent link">&para;</a></h2>
15908
16671
 
15909
16672
 
15910
16673
  <div class="doc doc-contents ">
@@ -15912,7 +16675,7 @@ Mutually exclusive with <code>column_headers</code>.</p>
15912
16675
  Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.HomePageBase (nautobot.core.ui.homepage.HomePageBase)" href="#nautobot.apps.ui.HomePageBase">HomePageBase</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.PermissionsMixin (nautobot.core.ui.base.PermissionsMixin)" href="#nautobot.apps.ui.PermissionsMixin">PermissionsMixin</a></code></p>
15913
16676
 
15914
16677
 
15915
- <p>Defines properties that can be used for a panel item.</p>
16678
+ <p>Defines properties that can be used for a panel.</p>
15916
16679
 
15917
16680
 
15918
16681
 
@@ -15936,15 +16699,15 @@ Mutually exclusive with <code>column_headers</code>.</p>
15936
16699
  <div class="doc doc-object doc-function">
15937
16700
 
15938
16701
 
15939
- <h3 id="nautobot.apps.ui.HomePageItem.__init__" class="doc doc-heading">
15940
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">link</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span></code>
16702
+ <h3 id="nautobot.apps.ui.HomePagePanel.__init__" class="doc doc-heading">
16703
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">items</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span></code>
15941
16704
 
15942
- <a href="#nautobot.apps.ui.HomePageItem.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
16705
+ <a href="#nautobot.apps.ui.HomePagePanel.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
15943
16706
 
15944
16707
 
15945
16708
  <div class="doc doc-contents ">
15946
16709
 
15947
- <p>Ensure item properties.</p>
16710
+ <p>Ensure panel properties.</p>
15948
16711
 
15949
16712
 
15950
16713
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -15967,7 +16730,7 @@ Mutually exclusive with <code>column_headers</code>.</p>
15967
16730
  </td>
15968
16731
  <td>
15969
16732
  <div class="doc-md-description">
15970
- <p>The name of the item.</p>
16733
+ <p>The name of the panel.</p>
15971
16734
  </div>
15972
16735
  </td>
15973
16736
  <td>
@@ -15976,14 +16739,14 @@ Mutually exclusive with <code>column_headers</code>.</p>
15976
16739
  </tr>
15977
16740
  <tr class="doc-section-item">
15978
16741
  <td>
15979
- <code>link</code>
16742
+ <code>permissions</code>
15980
16743
  </td>
15981
16744
  <td>
15982
- <code><span title="str">str</span></code>
16745
+ <code><span title="list">list</span></code>
15983
16746
  </td>
15984
16747
  <td>
15985
16748
  <div class="doc-md-description">
15986
- <p>The link to be used for this item.</p>
16749
+ <p>The permissions required to view this panel.</p>
15987
16750
  </div>
15988
16751
  </td>
15989
16752
  <td>
@@ -15992,14 +16755,14 @@ Mutually exclusive with <code>column_headers</code>.</p>
15992
16755
  </tr>
15993
16756
  <tr class="doc-section-item">
15994
16757
  <td>
15995
- <code>model</code>
16758
+ <code>custom_data</code>
15996
16759
  </td>
15997
16760
  <td>
15998
- <code><span title="str">str</span></code>
16761
+ <code><span title="dict">dict</span></code>
15999
16762
  </td>
16000
16763
  <td>
16001
16764
  <div class="doc-md-description">
16002
- <p>The model to being used for this item to calculate the total count of objects.</p>
16765
+ <p>Custom data to be passed to the custom template.</p>
16003
16766
  </div>
16004
16767
  </td>
16005
16768
  <td>
@@ -16024,20 +16787,36 @@ Mutually exclusive with <code>column_headers</code>.</p>
16024
16787
  </tr>
16025
16788
  <tr class="doc-section-item">
16026
16789
  <td>
16027
- <code>custom_data</code>
16790
+ <code>items</code>
16028
16791
  </td>
16029
16792
  <td>
16030
- <code><span title="dict">dict</span></code>
16793
+ <code><span title="list">list</span></code>
16031
16794
  </td>
16032
16795
  <td>
16033
16796
  <div class="doc-md-description">
16034
- <p>Custom data to be passed to the custom template.</p>
16797
+ <p>List of items to be rendered in this panel.</p>
16035
16798
  </div>
16036
16799
  </td>
16037
16800
  <td>
16038
16801
  <code>None</code>
16039
16802
  </td>
16040
16803
  </tr>
16804
+ <tr class="doc-section-item">
16805
+ <td>
16806
+ <code>weight</code>
16807
+ </td>
16808
+ <td>
16809
+ <code><span title="int">int</span></code>
16810
+ </td>
16811
+ <td>
16812
+ <div class="doc-md-description">
16813
+ <p>The weight of this panel.</p>
16814
+ </div>
16815
+ </td>
16816
+ <td>
16817
+ <code>1000</code>
16818
+ </td>
16819
+ </tr>
16041
16820
  </tbody>
16042
16821
  </table>
16043
16822
 
@@ -16058,19 +16837,107 @@ Mutually exclusive with <code>column_headers</code>.</p>
16058
16837
 
16059
16838
 
16060
16839
 
16061
- <h2 id="nautobot.apps.ui.HomePagePanel" class="doc doc-heading">
16062
- <code>nautobot.apps.ui.HomePagePanel</code>
16840
+ <h2 id="nautobot.apps.ui.InstanceBreadcrumbItem" class="doc doc-heading">
16841
+ <code>nautobot.apps.ui.InstanceBreadcrumbItem</code>
16063
16842
 
16064
16843
 
16065
- <a href="#nautobot.apps.ui.HomePagePanel" class="headerlink" title="Permanent link">&para;</a></h2>
16844
+ <span class="doc doc-labels">
16845
+ <small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
16846
+ </span>
16847
+
16848
+ <a href="#nautobot.apps.ui.InstanceBreadcrumbItem" class="headerlink" title="Permanent link">&para;</a></h2>
16066
16849
 
16067
16850
 
16068
16851
  <div class="doc doc-contents ">
16069
16852
  <p class="doc doc-class-bases">
16070
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.HomePageBase (nautobot.core.ui.homepage.HomePageBase)" href="#nautobot.apps.ui.HomePageBase">HomePageBase</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.PermissionsMixin (nautobot.core.ui.base.PermissionsMixin)" href="#nautobot.apps.ui.PermissionsMixin">PermissionsMixin</a></code></p>
16853
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.BaseBreadcrumbItem
16071
16854
 
16072
16855
 
16073
- <p>Defines properties that can be used for a panel.</p>
16856
+
16857
+ dataclass
16858
+ (nautobot.core.ui.breadcrumbs.BaseBreadcrumbItem)" href="#nautobot.apps.ui.BaseBreadcrumbItem">BaseBreadcrumbItem</a></code></p>
16859
+
16860
+
16861
+ <p>Breadcrumb via object instance from context.</p>
16862
+ <p>Detail url for object instance taken from context. By default, <code>instance_key</code> is set to <code>object</code>.
16863
+ Label will be generated from object, but you can still override it.</p>
16864
+
16865
+
16866
+ <p><span class="doc-section-title">Attributes:</span></p>
16867
+ <table>
16868
+ <thead>
16869
+ <tr>
16870
+ <th>Name</th>
16871
+ <th>Type</th>
16872
+ <th>Description</th>
16873
+ </tr>
16874
+ </thead>
16875
+ <tbody>
16876
+ <tr class="doc-section-item">
16877
+ <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.instance_key">instance_key</span></code></td>
16878
+ <td>
16879
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
16880
+ </td>
16881
+ <td>
16882
+ <div class="doc-md-description">
16883
+ <p>Context key to fetch a Django model instance for building the breadcrumb. Default: "object".</p>
16884
+ </div>
16885
+ </td>
16886
+ </tr>
16887
+ <tr class="doc-section-item">
16888
+ <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.instance">instance</span></code></td>
16889
+ <td>
16890
+ <code><span title="typing.Union">Union</span>[<span title="typing.Callable">Callable</span>[[<span title="django.template.Context">Context</span>], <span title="typing.Optional">Optional</span>[<span title="django.db.models.Model">Model</span>]], <span title="django.db.models.Model">Model</span>, None]</code>
16891
+ </td>
16892
+ <td>
16893
+ <div class="doc-md-description">
16894
+ <p>Callable to fetch the instance from context. If</p>
16895
+ </div>
16896
+ </td>
16897
+ </tr>
16898
+ <tr class="doc-section-item">
16899
+ <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.should_render">should_render</span></code></td>
16900
+ <td>
16901
+ <code><span title="typing.Callable">Callable</span>[[<span title="django.template.Context">Context</span>], <span title="bool">bool</span>]</code>
16902
+ </td>
16903
+ <td>
16904
+ <div class="doc-md-description">
16905
+ <p>Callable to decide whether this item should be rendered or not.</p>
16906
+ </div>
16907
+ </td>
16908
+ </tr>
16909
+ <tr class="doc-section-item">
16910
+ <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.label">label</span></code></td>
16911
+ <td>
16912
+ <code><span title="typing.Union">Union</span>[<span title="typing.Callable">Callable</span>[[<span title="django.template.Context">Context</span>], <span title="str">str</span>], <span title="nautobot.core.ui.breadcrumbs.WithStr">WithStr</span>, None]</code>
16913
+ </td>
16914
+ <td>
16915
+ <div class="doc-md-description">
16916
+ <p>Optional override for the display label in the breadcrumb.</p>
16917
+ </div>
16918
+ </td>
16919
+ </tr>
16920
+ <tr class="doc-section-item">
16921
+ <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.label_key">label_key</span></code></td>
16922
+ <td>
16923
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
16924
+ </td>
16925
+ <td>
16926
+ <div class="doc-md-description">
16927
+ <p>Optional key to take label from the context.</p>
16928
+ </div>
16929
+ </td>
16930
+ </tr>
16931
+ </tbody>
16932
+ </table>
16933
+
16934
+
16935
+ <p><span class="doc-section-title">Examples:</span></p>
16936
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">InstanceBreadcrumbItem</span><span class="p">()</span>
16937
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">(&quot;/dcim/devices/1234&quot;, &quot;My Device&quot;) # Assuming that under &quot;object&quot; there is a Device instance</span>
16938
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">InstanceBreadcrumbItem</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;Custom Device Label&quot;</span><span class="p">)</span>
16939
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="go">(&quot;/dcim/devices/1234&quot;, &quot;Custom Device Label&quot;) # Assuming that under &quot;object&quot; there is a Device instance</span>
16940
+ </code></pre></div>
16074
16941
 
16075
16942
 
16076
16943
 
@@ -16094,15 +16961,15 @@ Mutually exclusive with <code>column_headers</code>.</p>
16094
16961
  <div class="doc doc-object doc-function">
16095
16962
 
16096
16963
 
16097
- <h3 id="nautobot.apps.ui.HomePagePanel.__init__" class="doc doc-heading">
16098
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">custom_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">items</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span></code>
16964
+ <h3 id="nautobot.apps.ui.InstanceBreadcrumbItem.get_instance" class="doc doc-heading">
16965
+ <code class="highlight language-python"><span class="n">get_instance</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
16099
16966
 
16100
- <a href="#nautobot.apps.ui.HomePagePanel.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
16967
+ <a href="#nautobot.apps.ui.InstanceBreadcrumbItem.get_instance" class="headerlink" title="Permanent link">&para;</a></h3>
16101
16968
 
16102
16969
 
16103
16970
  <div class="doc doc-contents ">
16104
16971
 
16105
- <p>Ensure panel properties.</p>
16972
+ <p>Get the instance depending on the settings.</p>
16106
16973
 
16107
16974
 
16108
16975
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -16118,99 +16985,186 @@ Mutually exclusive with <code>column_headers</code>.</p>
16118
16985
  <tbody>
16119
16986
  <tr class="doc-section-item">
16120
16987
  <td>
16121
- <code>name</code>
16988
+ <code>context</code>
16122
16989
  </td>
16123
16990
  <td>
16124
- <code><span title="str">str</span></code>
16991
+ <code><span title="django.template.Context">Context</span></code>
16125
16992
  </td>
16126
16993
  <td>
16127
16994
  <div class="doc-md-description">
16128
- <p>The name of the panel.</p>
16995
+ <p>The current template context.</p>
16129
16996
  </div>
16130
16997
  </td>
16131
16998
  <td>
16132
16999
  <em>required</em>
16133
17000
  </td>
16134
17001
  </tr>
17002
+ </tbody>
17003
+ </table>
17004
+
17005
+
17006
+ <p><span class="doc-section-title">Returns:</span></p>
17007
+ <table>
17008
+ <thead>
17009
+ <tr>
17010
+ <th>Type</th>
17011
+ <th>Description</th>
17012
+ </tr>
17013
+ </thead>
17014
+ <tbody>
16135
17015
  <tr class="doc-section-item">
16136
17016
  <td>
16137
- <code>permissions</code>
16138
- </td>
16139
- <td>
16140
- <code><span title="list">list</span></code>
17017
+ <code><span title="typing.Optional">Optional</span>[<span title="django.db.models.Model">Model</span>]</code>
16141
17018
  </td>
16142
17019
  <td>
16143
17020
  <div class="doc-md-description">
16144
- <p>The permissions required to view this panel.</p>
17021
+ <p>Optional[Model]: Instance from context.</p>
16145
17022
  </div>
16146
17023
  </td>
16147
- <td>
16148
- <code>None</code>
16149
- </td>
16150
17024
  </tr>
17025
+ </tbody>
17026
+ </table>
17027
+
17028
+
17029
+ </div>
17030
+
17031
+ </div>
17032
+
17033
+ <div class="doc doc-object doc-function">
17034
+
17035
+
17036
+ <h3 id="nautobot.apps.ui.InstanceBreadcrumbItem.get_label" class="doc doc-heading">
17037
+ <code class="highlight language-python"><span class="n">get_label</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
17038
+
17039
+ <a href="#nautobot.apps.ui.InstanceBreadcrumbItem.get_label" class="headerlink" title="Permanent link">&para;</a></h3>
17040
+
17041
+
17042
+ <div class="doc doc-contents ">
17043
+
17044
+ <p>Get the label (display text) for the breadcrumb from instance.</p>
17045
+
17046
+
17047
+ <p><span class="doc-section-title">Parameters:</span></p>
17048
+ <table>
17049
+ <thead>
17050
+ <tr>
17051
+ <th>Name</th>
17052
+ <th>Type</th>
17053
+ <th>Description</th>
17054
+ <th>Default</th>
17055
+ </tr>
17056
+ </thead>
17057
+ <tbody>
16151
17058
  <tr class="doc-section-item">
16152
17059
  <td>
16153
- <code>custom_data</code>
17060
+ <code>context</code>
16154
17061
  </td>
16155
17062
  <td>
16156
- <code><span title="dict">dict</span></code>
17063
+ <code><span title="django.template.Context">Context</span></code>
16157
17064
  </td>
16158
17065
  <td>
16159
17066
  <div class="doc-md-description">
16160
- <p>Custom data to be passed to the custom template.</p>
17067
+ <p>The current template context.</p>
16161
17068
  </div>
16162
17069
  </td>
16163
17070
  <td>
16164
- <code>None</code>
17071
+ <em>required</em>
16165
17072
  </td>
16166
17073
  </tr>
17074
+ </tbody>
17075
+ </table>
17076
+
17077
+
17078
+ <p><span class="doc-section-title">Returns:</span></p>
17079
+ <table>
17080
+ <thead>
17081
+ <tr>
17082
+ <th>Name</th> <th>Type</th>
17083
+ <th>Description</th>
17084
+ </tr>
17085
+ </thead>
17086
+ <tbody>
16167
17087
  <tr class="doc-section-item">
16168
- <td>
16169
- <code>custom_template</code>
16170
- </td>
16171
- <td>
17088
+ <td><code>str</code></td> <td>
16172
17089
  <code><span title="str">str</span></code>
16173
17090
  </td>
16174
17091
  <td>
16175
17092
  <div class="doc-md-description">
16176
- <p>Name of custom template.</p>
17093
+ <p>Label as a string.</p>
16177
17094
  </div>
16178
17095
  </td>
16179
- <td>
16180
- <code>None</code>
16181
- </td>
16182
17096
  </tr>
17097
+ </tbody>
17098
+ </table>
17099
+
17100
+
17101
+ </div>
17102
+
17103
+ </div>
17104
+
17105
+ <div class="doc doc-object doc-function">
17106
+
17107
+
17108
+ <h3 id="nautobot.apps.ui.InstanceBreadcrumbItem.get_url" class="doc doc-heading">
17109
+ <code class="highlight language-python"><span class="n">get_url</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
17110
+
17111
+ <a href="#nautobot.apps.ui.InstanceBreadcrumbItem.get_url" class="headerlink" title="Permanent link">&para;</a></h3>
17112
+
17113
+
17114
+ <div class="doc doc-contents ">
17115
+
17116
+ <p>Resolve the URL for the breadcrumb item based on the instance.</p>
17117
+
17118
+
17119
+ <p><span class="doc-section-title">Parameters:</span></p>
17120
+ <table>
17121
+ <thead>
17122
+ <tr>
17123
+ <th>Name</th>
17124
+ <th>Type</th>
17125
+ <th>Description</th>
17126
+ <th>Default</th>
17127
+ </tr>
17128
+ </thead>
17129
+ <tbody>
16183
17130
  <tr class="doc-section-item">
16184
17131
  <td>
16185
- <code>items</code>
17132
+ <code>context</code>
16186
17133
  </td>
16187
17134
  <td>
16188
- <code><span title="list">list</span></code>
17135
+ <code><span title="django.template.Context">Context</span></code>
16189
17136
  </td>
16190
17137
  <td>
16191
17138
  <div class="doc-md-description">
16192
- <p>List of items to be rendered in this panel.</p>
17139
+ <p>The current template context.</p>
16193
17140
  </div>
16194
17141
  </td>
16195
17142
  <td>
16196
- <code>None</code>
17143
+ <em>required</em>
16197
17144
  </td>
16198
17145
  </tr>
17146
+ </tbody>
17147
+ </table>
17148
+
17149
+
17150
+ <p><span class="doc-section-title">Returns:</span></p>
17151
+ <table>
17152
+ <thead>
17153
+ <tr>
17154
+ <th>Type</th>
17155
+ <th>Description</th>
17156
+ </tr>
17157
+ </thead>
17158
+ <tbody>
16199
17159
  <tr class="doc-section-item">
16200
17160
  <td>
16201
- <code>weight</code>
16202
- </td>
16203
- <td>
16204
- <code><span title="int">int</span></code>
17161
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
16205
17162
  </td>
16206
17163
  <td>
16207
17164
  <div class="doc-md-description">
16208
- <p>The weight of this panel.</p>
17165
+ <p>Optional[str]: The URL as a string, or None.</p>
16209
17166
  </div>
16210
17167
  </td>
16211
- <td>
16212
- <code>1000</code>
16213
- </td>
16214
17168
  </tr>
16215
17169
  </tbody>
16216
17170
  </table>
@@ -16232,30 +17186,29 @@ Mutually exclusive with <code>column_headers</code>.</p>
16232
17186
 
16233
17187
 
16234
17188
 
16235
- <h2 id="nautobot.apps.ui.InstanceBreadcrumbItem" class="doc doc-heading">
16236
- <code>nautobot.apps.ui.InstanceBreadcrumbItem</code>
17189
+ <h2 id="nautobot.apps.ui.InstanceParentBreadcrumbItem" class="doc doc-heading">
17190
+ <code>nautobot.apps.ui.InstanceParentBreadcrumbItem</code>
16237
17191
 
16238
17192
 
16239
17193
  <span class="doc doc-labels">
16240
17194
  <small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
16241
17195
  </span>
16242
17196
 
16243
- <a href="#nautobot.apps.ui.InstanceBreadcrumbItem" class="headerlink" title="Permanent link">&para;</a></h2>
17197
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem" class="headerlink" title="Permanent link">&para;</a></h2>
16244
17198
 
16245
17199
 
16246
17200
  <div class="doc doc-contents ">
16247
17201
  <p class="doc doc-class-bases">
16248
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.BaseBreadcrumbItem
17202
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.apps.ui.InstanceBreadcrumbItem
16249
17203
 
16250
17204
 
16251
17205
 
16252
17206
  dataclass
16253
- (nautobot.core.ui.breadcrumbs.BaseBreadcrumbItem)" href="#nautobot.apps.ui.BaseBreadcrumbItem">BaseBreadcrumbItem</a></code></p>
17207
+ (nautobot.core.ui.breadcrumbs.InstanceBreadcrumbItem)" href="#nautobot.apps.ui.InstanceBreadcrumbItem">InstanceBreadcrumbItem</a></code></p>
16254
17208
 
16255
17209
 
16256
- <p>Breadcrumb via object instance from context.</p>
16257
- <p>Detail url for object instance taken from context. By default, <code>instance_key</code> is set to <code>object</code>.
16258
- Label will be generated from object, but you can still override it.</p>
17210
+ <p>Breadcrumb item prepared to be "parent" or "group" of given model.</p>
17211
+ <p>It will create a breadcrumb item to the object list but will try to filter it by given parent.</p>
16259
17212
 
16260
17213
 
16261
17214
  <p><span class="doc-section-title">Attributes:</span></p>
@@ -16269,57 +17222,35 @@ Label will be generated from object, but you can still override it.</p>
16269
17222
  </thead>
16270
17223
  <tbody>
16271
17224
  <tr class="doc-section-item">
16272
- <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.instance_key">instance_key</span></code></td>
16273
- <td>
16274
- <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
16275
- </td>
16276
- <td>
16277
- <div class="doc-md-description">
16278
- <p>Context key to fetch a Django model instance for building the breadcrumb.</p>
16279
- </div>
16280
- </td>
16281
- </tr>
16282
- <tr class="doc-section-item">
16283
- <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.instance">instance</span></code></td>
16284
- <td>
16285
- <code>Callable[[Context], Optional[Model]</code>
16286
- </td>
16287
- <td>
16288
- <div class="doc-md-description">
16289
- <p>Callable to fetch the instance from context. If</p>
16290
- </div>
16291
- </td>
16292
- </tr>
16293
- <tr class="doc-section-item">
16294
- <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.should_render">should_render</span></code></td>
17225
+ <td><code><span title="nautobot.apps.ui.InstanceParentBreadcrumbItem.parent_key">parent_key</span></code></td>
16295
17226
  <td>
16296
- <code><span title="typing.Callable">Callable</span>[[<span title="django.template.Context">Context</span>], <span title="bool">bool</span>]</code>
17227
+ <code><span title="str">str</span></code>
16297
17228
  </td>
16298
17229
  <td>
16299
17230
  <div class="doc-md-description">
16300
- <p>Callable to decide whether this item should be rendered or not.</p>
17231
+ <p>Instance attribute to get the parent instance. Default: "parent".</p>
16301
17232
  </div>
16302
17233
  </td>
16303
17234
  </tr>
16304
17235
  <tr class="doc-section-item">
16305
- <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.label">label</span></code></td>
17236
+ <td><code><span title="nautobot.apps.ui.InstanceParentBreadcrumbItem.parent_query_param">parent_query_param</span></code></td>
16306
17237
  <td>
16307
- <code><span title="typing.Union">Union</span>[<span title="typing.Callable">Callable</span>[[<span title="django.template.Context">Context</span>], <span title="str">str</span>], <span title="nautobot.core.ui.breadcrumbs.WithStr">WithStr</span>, None]</code>
17238
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
16308
17239
  </td>
16309
17240
  <td>
16310
17241
  <div class="doc-md-description">
16311
- <p>Optional override for the display label in the breadcrumb.</p>
17242
+ <p>Query param name under which parent lookup key will be added into breadcrumb url. If None, will be the same as <code>parent_key</code>.</p>
16312
17243
  </div>
16313
17244
  </td>
16314
17245
  </tr>
16315
17246
  <tr class="doc-section-item">
16316
- <td><code><span title="nautobot.apps.ui.InstanceBreadcrumbItem.label_key">label_key</span></code></td>
17247
+ <td><code><span title="nautobot.apps.ui.InstanceParentBreadcrumbItem.parent_lookup_key">parent_lookup_key</span></code></td>
16317
17248
  <td>
16318
17249
  <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
16319
17250
  </td>
16320
17251
  <td>
16321
17252
  <div class="doc-md-description">
16322
- <p>Optional key to take label from the context.</p>
17253
+ <p>Parent attribute which will be used to build the url and filter the instance list url. Can be set to None to use parent as key.</p>
16323
17254
  </div>
16324
17255
  </td>
16325
17256
  </tr>
@@ -16328,10 +17259,10 @@ Label will be generated from object, but you can still override it.</p>
16328
17259
 
16329
17260
 
16330
17261
  <p><span class="doc-section-title">Examples:</span></p>
16331
- <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">InstanceBreadcrumbItem</span><span class="p">()</span>
16332
- <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">(&quot;/dcim/devices/1234&quot;, &quot;My Device&quot;) # Assuming that under &quot;object&quot; there is a Device instance</span>
16333
- <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">InstanceBreadcrumbItem</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;Custom Device Label&quot;</span><span class="p">)</span>
16334
- <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="go">(&quot;/dcim/devices/1234&quot;, &quot;Custom Device Label&quot;) # Assuming that under &quot;object&quot; there is a Device instance</span>
17262
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">InstanceParentBreadcrumbItem</span><span class="p">()</span>
17263
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">(&quot;/dcim/devices?parent=&lt;parent.pk&gt;&quot;, &quot;Parent&quot;) # Assuming that under &quot;object&quot; there is a Device instance and has &quot;parent&quot;</span>
17264
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">InstanceParentBreadcrumbItem</span><span class="p">(</span><span class="n">parent_key</span><span class="o">=</span><span class="s2">&quot;group&quot;</span><span class="p">,</span> <span class="n">parent_lookup_key</span><span class="o">=</span><span class="s2">&quot;name&quot;</span><span class="p">)</span>
17265
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="go">(&quot;/dcim/devices?group=&lt;group_name&gt;&quot;, &quot;Group&quot;) # Assuming that under &quot;object&quot; there is a Device instance and has &quot;group&quot;</span>
16335
17266
  </code></pre></div>
16336
17267
 
16337
17268
 
@@ -16356,69 +17287,15 @@ Label will be generated from object, but you can still override it.</p>
16356
17287
  <div class="doc doc-object doc-function">
16357
17288
 
16358
17289
 
16359
- <h3 id="nautobot.apps.ui.InstanceBreadcrumbItem.get_instance" class="doc doc-heading">
16360
- <code class="highlight language-python"><span class="n">get_instance</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
17290
+ <h3 id="nautobot.apps.ui.InstanceParentBreadcrumbItem.__post_init__" class="doc doc-heading">
17291
+ <code class="highlight language-python"><span class="n">__post_init__</span><span class="p">()</span></code>
16361
17292
 
16362
- <a href="#nautobot.apps.ui.InstanceBreadcrumbItem.get_instance" class="headerlink" title="Permanent link">&para;</a></h3>
17293
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.__post_init__" class="headerlink" title="Permanent link">&para;</a></h3>
16363
17294
 
16364
17295
 
16365
17296
  <div class="doc doc-contents ">
16366
17297
 
16367
- <p>Get the instance depending on the settings.</p>
16368
-
16369
-
16370
- <p><span class="doc-section-title">Parameters:</span></p>
16371
- <table>
16372
- <thead>
16373
- <tr>
16374
- <th>Name</th>
16375
- <th>Type</th>
16376
- <th>Description</th>
16377
- <th>Default</th>
16378
- </tr>
16379
- </thead>
16380
- <tbody>
16381
- <tr class="doc-section-item">
16382
- <td>
16383
- <code>context</code>
16384
- </td>
16385
- <td>
16386
- <code><span title="django.template.Context">Context</span></code>
16387
- </td>
16388
- <td>
16389
- <div class="doc-md-description">
16390
- <p>The current template context.</p>
16391
- </div>
16392
- </td>
16393
- <td>
16394
- <em>required</em>
16395
- </td>
16396
- </tr>
16397
- </tbody>
16398
- </table>
16399
-
16400
-
16401
- <p><span class="doc-section-title">Returns:</span></p>
16402
- <table>
16403
- <thead>
16404
- <tr>
16405
- <th>Type</th>
16406
- <th>Description</th>
16407
- </tr>
16408
- </thead>
16409
- <tbody>
16410
- <tr class="doc-section-item">
16411
- <td>
16412
- <code><span title="typing.Optional">Optional</span>[<span title="django.db.models.Model">Model</span>]</code>
16413
- </td>
16414
- <td>
16415
- <div class="doc-md-description">
16416
- <p>Optional[Model]: Instance from context.</p>
16417
- </div>
16418
- </td>
16419
- </tr>
16420
- </tbody>
16421
- </table>
17298
+ <p>Set <code>parent_query_param</code> if not filled.</p>
16422
17299
 
16423
17300
 
16424
17301
  </div>
@@ -16428,15 +17305,15 @@ Label will be generated from object, but you can still override it.</p>
16428
17305
  <div class="doc doc-object doc-function">
16429
17306
 
16430
17307
 
16431
- <h3 id="nautobot.apps.ui.InstanceBreadcrumbItem.get_label" class="doc doc-heading">
17308
+ <h3 id="nautobot.apps.ui.InstanceParentBreadcrumbItem.get_label" class="doc doc-heading">
16432
17309
  <code class="highlight language-python"><span class="n">get_label</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
16433
17310
 
16434
- <a href="#nautobot.apps.ui.InstanceBreadcrumbItem.get_label" class="headerlink" title="Permanent link">&para;</a></h3>
17311
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.get_label" class="headerlink" title="Permanent link">&para;</a></h3>
16435
17312
 
16436
17313
 
16437
17314
  <div class="doc doc-contents ">
16438
17315
 
16439
- <p>Get the label (display text) for the breadcrumb from instance.</p>
17316
+ <p>Get the label (display text) for the breadcrumb from instance and provided parent.</p>
16440
17317
 
16441
17318
 
16442
17319
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -16500,15 +17377,15 @@ Label will be generated from object, but you can still override it.</p>
16500
17377
  <div class="doc doc-object doc-function">
16501
17378
 
16502
17379
 
16503
- <h3 id="nautobot.apps.ui.InstanceBreadcrumbItem.get_url" class="doc doc-heading">
17380
+ <h3 id="nautobot.apps.ui.InstanceParentBreadcrumbItem.get_url" class="doc doc-heading">
16504
17381
  <code class="highlight language-python"><span class="n">get_url</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
16505
17382
 
16506
- <a href="#nautobot.apps.ui.InstanceBreadcrumbItem.get_url" class="headerlink" title="Permanent link">&para;</a></h3>
17383
+ <a href="#nautobot.apps.ui.InstanceParentBreadcrumbItem.get_url" class="headerlink" title="Permanent link">&para;</a></h3>
16507
17384
 
16508
17385
 
16509
17386
  <div class="doc doc-contents ">
16510
17387
 
16511
- <p>Resolve the URL for the breadcrumb item based on the instance.</p>
17388
+ <p>Resolve the URL for the breadcrumb item based on the instance and provided parent.</p>
16512
17389
 
16513
17390
 
16514
17391
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -16618,7 +17495,7 @@ Label will be generated from object, but you can still override it.</p>
16618
17495
 
16619
17496
 
16620
17497
  <h3 id="nautobot.apps.ui.KeyValueTablePanel.__init__" class="doc doc-heading">
16621
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context_data_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">hide_if_unset</span><span class="o">=</span><span class="p">(),</span> <span class="n">value_transforms</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">body_wrapper_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/body_wrapper_key_value_table.html&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
17498
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context_data_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">hide_if_unset</span><span class="o">=</span><span class="p">(),</span> <span class="n">value_transforms</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key_transforms</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">body_wrapper_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/body_wrapper_key_value_table.html&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
16622
17499
 
16623
17500
  <a href="#nautobot.apps.ui.KeyValueTablePanel.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
16624
17501
 
@@ -16711,6 +17588,23 @@ Many of the <code>templatetags.helpers</code> functions are suitable for this pu
16711
17588
  <code>None</code>
16712
17589
  </td>
16713
17590
  </tr>
17591
+ <tr class="doc-section-item">
17592
+ <td>
17593
+ <code>key_transforms</code>
17594
+ </td>
17595
+ <td>
17596
+ <code><span title="dict">dict</span></code>
17597
+ </td>
17598
+ <td>
17599
+ <div class="doc-md-description">
17600
+ <p>A mapping of original field names to custom display names to be used when rendering keys
17601
+ For example: {'content_types': 'Content Type'}.</p>
17602
+ </div>
17603
+ </td>
17604
+ <td>
17605
+ <code>None</code>
17606
+ </td>
17607
+ </tr>
16714
17608
  </tbody>
16715
17609
  </table>
16716
17610
 
@@ -17072,7 +17966,7 @@ If <code>label</code> is set explicitly, it's returned as-is or called if callab
17072
17966
  </td>
17073
17967
  <td>
17074
17968
  <div class="doc-md-description">
17075
- <p>Context key to fetch a model class, instance or dotted path string.</p>
17969
+ <p>Context key to fetch a model class, instance or dotted path string. By default: "object".</p>
17076
17970
  </div>
17077
17971
  </td>
17078
17972
  </tr>
@@ -18645,7 +19539,7 @@ dynamic-groups, metadata, etc.) do not need to be specified as they will be auto
18645
19539
 
18646
19540
 
18647
19541
  <h3 id="nautobot.apps.ui.ObjectFieldsPanel.__init__" class="doc doc-heading">
18648
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="s1">&#39;__all__&#39;</span><span class="p">,</span> <span class="n">exclude_fields</span><span class="o">=</span><span class="p">(),</span> <span class="n">context_object_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ignore_nonexistent_fields</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
19542
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="s1">&#39;__all__&#39;</span><span class="p">,</span> <span class="n">additional_fields</span><span class="o">=</span><span class="p">(),</span> <span class="n">exclude_fields</span><span class="o">=</span><span class="p">(),</span> <span class="n">context_object_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ignore_nonexistent_fields</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
18649
19543
 
18650
19544
  <a href="#nautobot.apps.ui.ObjectFieldsPanel.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
18651
19545
 
@@ -18677,13 +19571,33 @@ dynamic-groups, metadata, etc.) do not need to be specified as they will be auto
18677
19571
  <div class="doc-md-description">
18678
19572
  <p>The ordered list of fields to display, or <code>"__all__"</code> to display fields automatically.
18679
19573
  Note that ManyToMany fields and reverse relations are <strong>not</strong> included in <code>"__all__"</code> at this time, nor
18680
- are any hidden fields, nor the specially handled <code>id</code>, <code>created</code>, <code>last_updated</code> fields on most models.</p>
19574
+ are any hidden fields, nor the specially handled <code>id</code>, <code>created</code>, <code>last_updated</code> fields on most models.
19575
+ When a list is specified, it may include model <code>@property</code> attributes and nested lookups (if desired) in
19576
+ addition to concrete model fields; when using <code>fields="__all__"</code>, such additional attributes and lookups
19577
+ may be specified with the <code>additional_fields</code> parameter.</p>
18681
19578
  </div>
18682
19579
  </td>
18683
19580
  <td>
18684
19581
  <code>&#39;__all__&#39;</code>
18685
19582
  </td>
18686
19583
  </tr>
19584
+ <tr class="doc-section-item">
19585
+ <td>
19586
+ <code>additional_fields</code>
19587
+ </td>
19588
+ <td>
19589
+ <code><span title="list">list</span></code>
19590
+ </td>
19591
+ <td>
19592
+ <div class="doc-md-description">
19593
+ <p>Only relevant if <code>fields == "__all__"</code>, in which case it can specify additional
19594
+ non-default fields to include such as reverse relations, <code>@property</code> attributes, nested lookups, etc.</p>
19595
+ </div>
19596
+ </td>
19597
+ <td>
19598
+ <code>()</code>
19599
+ </td>
19600
+ </tr>
18687
19601
  <tr class="doc-section-item">
18688
19602
  <td>
18689
19603
  <code>exclude_fields</code>
@@ -18984,7 +19898,7 @@ already configured in context and set the <code>context_table_key</code> or pass
18984
19898
 
18985
19899
 
18986
19900
  <h3 id="nautobot.apps.ui.ObjectsTablePanel.__init__" class="doc doc-heading">
18987
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">context_table_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_class</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_filter</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_attribute</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">select_related_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prefetch_related_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_title</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">max_display_count</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">paginate</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">show_table_config_button</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">include_columns</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">exclude_columns</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_button_route</span><span class="o">=</span><span class="s1">&#39;default&#39;</span><span class="p">,</span> <span class="n">add_permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">hide_hierarchy_ui</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">related_field_name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">enable_bulk_actions</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tab_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">body_wrapper_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/body_wrapper_table.html&#39;</span><span class="p">,</span> <span class="n">body_content_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/body_content_objects_table.html&#39;</span><span class="p">,</span> <span class="n">header_extra_content_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/header_extra_content_table.html&#39;</span><span class="p">,</span> <span class="n">footer_content_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/footer_content_table.html&#39;</span><span class="p">,</span> <span class="n">footer_buttons</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">form_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">include_paginator</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
19901
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">context_table_key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_class</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_filter</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_attribute</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">select_related_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prefetch_related_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table_title</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">max_display_count</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">paginate</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">show_table_config_button</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">include_columns</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">exclude_columns</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_button_route</span><span class="o">=</span><span class="s1">&#39;default&#39;</span><span class="p">,</span> <span class="n">add_permissions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">hide_hierarchy_ui</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">related_field_name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">enable_bulk_actions</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tab_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">body_wrapper_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/body_wrapper_table.html&#39;</span><span class="p">,</span> <span class="n">body_content_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/body_content_objects_table.html&#39;</span><span class="p">,</span> <span class="n">header_extra_content_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/header_extra_content_table.html&#39;</span><span class="p">,</span> <span class="n">footer_content_template_path</span><span class="o">=</span><span class="s1">&#39;components/panel/footer_content_table.html&#39;</span><span class="p">,</span> <span class="n">footer_buttons</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">form_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">include_paginator</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
18988
19902
 
18989
19903
  <a href="#nautobot.apps.ui.ObjectsTablePanel.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
18990
19904
 
@@ -19080,6 +19994,22 @@ Mutually exclusive with <code>table_filter</code>.</p>
19080
19994
  <code>None</code>
19081
19995
  </td>
19082
19996
  </tr>
19997
+ <tr class="doc-section-item">
19998
+ <td>
19999
+ <code>distinct</code>
20000
+ </td>
20001
+ <td>
20002
+ <code><span title="bool">bool</span></code>
20003
+ </td>
20004
+ <td>
20005
+ <div class="doc-md-description">
20006
+ <p>If True, apply <code>.distinct()</code> to the table queryset.</p>
20007
+ </div>
20008
+ </td>
20009
+ <td>
20010
+ <code>False</code>
20011
+ </td>
20012
+ </tr>
19083
20013
  <tr class="doc-section-item">
19084
20014
  <td>
19085
20015
  <code>select_related_fields</code>
@@ -20296,6 +21226,24 @@ e.g. [Device, Prefix, (Circuit, "circuit_terminations__location__in"), (VirtualM
20296
21226
 
20297
21227
  </div>
20298
21228
 
21229
+ <div class="doc doc-object doc-function">
21230
+
21231
+
21232
+ <h3 id="nautobot.apps.ui.Tab.should_render_content" class="doc doc-heading">
21233
+ <code class="highlight language-python"><span class="n">should_render_content</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
21234
+
21235
+ <a href="#nautobot.apps.ui.Tab.should_render_content" class="headerlink" title="Permanent link">&para;</a></h3>
21236
+
21237
+
21238
+ <div class="doc doc-contents ">
21239
+
21240
+ <p>Only render a main-view Tab if the active request is for the main object view rather than a separate action.</p>
21241
+
21242
+
21243
+ </div>
21244
+
21245
+ </div>
21246
+
20299
21247
 
20300
21248
 
20301
21249
  </div>
@@ -21126,7 +22074,7 @@ Use the <code>render()</code> method to obtain either rich (HTML) or plain (stri
21126
22074
  <code>context</code>
21127
22075
  </td>
21128
22076
  <td>
21129
- <code><span title="django.template.Context">Context</span></code>
22077
+ <code><span title="typing.Union">Union</span>[<span title="dict">dict</span>, <span title="django.template.Context">Context</span>]</code>
21130
22078
  </td>
21131
22079
  <td>
21132
22080
  <div class="doc-md-description">
@@ -21435,6 +22383,42 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21435
22383
  <div class="doc doc-object doc-function">
21436
22384
 
21437
22385
 
22386
+ <h2 id="nautobot.apps.ui.context_object_attr" class="doc doc-heading">
22387
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">ui</span><span class="o">.</span><span class="n">context_object_attr</span><span class="p">(</span><span class="n">attr_path</span><span class="p">,</span> <span class="n">context_key</span><span class="o">=</span><span class="s1">&#39;object&#39;</span><span class="p">)</span></code>
22388
+
22389
+ <a href="#nautobot.apps.ui.context_object_attr" class="headerlink" title="Permanent link">&para;</a></h2>
22390
+
22391
+
22392
+ <div class="doc doc-contents ">
22393
+
22394
+ <p>Helper function that creates callable to fetch the object from context and then nested attributes.</p>
22395
+ <p>Useful for composing breadcrumbs. For example:
22396
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>context = Context({&quot;object&quot;: Device.objects.first()})
22397
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>breadcrumbs = Breadcrumbs(items={&quot;detail&quot;: [
22398
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> InstanceBreadcrumbItem(instance=context_object_attr(&quot;location.location_type&quot;)),
22399
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> InstanceBreadcrumbItem(instance=context_object_attr(&quot;location&quot;)),
22400
+ <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>]})
22401
+ </code></pre></div>
22402
+ Will render:
22403
+ - url to the device.location.location_type detail page
22404
+ - url to the device.location detail page</p>
22405
+
22406
+
22407
+ <p><span class="doc-section-title">Examples:</span></p>
22408
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">context_object_attr</span><span class="p">(</span><span class="s2">&quot;location.name&quot;</span><span class="p">)</span>
22409
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">lambda context: context[&#39;object&#39;].location.name</span>
22410
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">context_object_attr</span><span class="p">(</span><span class="s2">&quot;location.name&quot;</span><span class="p">,</span> <span class="n">context_key</span><span class="o">=</span><span class="s2">&quot;device&quot;</span><span class="p">)</span>
22411
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="go">lambda context: context[&#39;device&#39;].location.name</span>
22412
+ </code></pre></div>
22413
+
22414
+
22415
+ </div>
22416
+
22417
+ </div>
22418
+
22419
+ <div class="doc doc-object doc-function">
22420
+
22421
+
21438
22422
  <h2 id="nautobot.apps.ui.render_component_template" class="doc doc-heading">
21439
22423
  <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">ui</span><span class="o">.</span><span class="n">render_component_template</span><span class="p">(</span><span class="n">template_path</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
21440
22424
 
@@ -21622,7 +22606,7 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21622
22606
 
21623
22607
 
21624
22608
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
21625
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
22609
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
21626
22610
  </a>
21627
22611
 
21628
22612
 
@@ -21630,7 +22614,7 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21630
22614
 
21631
22615
 
21632
22616
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
21633
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M549.7 124.1c-6.2-23.7-24.8-42.3-48.3-48.6C458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5c-23.5 6.3-42 24.9-48.3 48.6C15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8C117.3 448 288.1 448 288.1 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6V175.2l142.7 81.2z"/></svg>
22617
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M549.7 124.1c-6.2-23.7-24.8-42.3-48.3-48.6C458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5c-23.5 6.3-42 24.9-48.3 48.6C15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8C117.3 448 288.1 448 288.1 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6V175.2l142.7 81.2z"/></svg>
21634
22618
  </a>
21635
22619
 
21636
22620
 
@@ -21638,7 +22622,7 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21638
22622
 
21639
22623
 
21640
22624
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
21641
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M94.1 315.1c0 25.9-21.2 47.1-47.1 47.1S0 341 0 315.1 21.2 268 47.1 268h47.1v47.1zm23.7 0c0-25.9 21.2-47.1 47.1-47.1s47.1 21.2 47.1 47.1v117.8c0 25.9-21.2 47.1-47.1 47.1s-47.1-21.2-47.1-47.1zm47.1-189c-25.9 0-47.1-21.2-47.1-47.1s21.2-47 47.1-47S212 53.2 212 79.1v47.1h-47.1zm0 23.7c25.9 0 47.1 21.2 47.1 47.1S190.8 244 164.9 244H47.1C21.2 244 0 222.8 0 196.9s21.2-47.1 47.1-47.1zm189 47.1c0-25.9 21.2-47.1 47.1-47.1s47 21.2 47 47.1-21.2 47.1-47.1 47.1h-47.1v-47.1zm-23.7 0c0 25.9-21.2 47.1-47.1 47.1S236 222.8 236 196.9V79.1c0-25.9 21.2-47.1 47.1-47.1s47.1 21.2 47.1 47.1zm-47.1 189c25.9 0 47.1 21.2 47.1 47.1s-21.2 47-47.1 47-47.1-21.2-47.1-47.1v-47.1h47.1zm0-23.7c-25.9 0-47.1-21.2-47.1-47.1s21.2-47.1 47.1-47.1h117.8c25.9 0 47.1 21.2 47.1 47.1s-21.2 47.1-47.1 47.1z"/></svg>
22625
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M94.1 315.1c0 25.9-21.2 47.1-47.1 47.1S0 341 0 315.1 21.2 268 47.1 268h47.1v47.1zm23.7 0c0-25.9 21.2-47.1 47.1-47.1s47.1 21.2 47.1 47.1v117.8c0 25.9-21.2 47.1-47.1 47.1s-47.1-21.2-47.1-47.1zm47.1-189c-25.9 0-47.1-21.2-47.1-47.1s21.2-47 47.1-47S212 53.2 212 79.1v47.1h-47.1zm0 23.7c25.9 0 47.1 21.2 47.1 47.1S190.8 244 164.9 244H47.1C21.2 244 0 222.8 0 196.9s21.2-47.1 47.1-47.1zm189 47.1c0-25.9 21.2-47.1 47.1-47.1s47 21.2 47 47.1-21.2 47.1-47.1 47.1h-47.1v-47.1zm-23.7 0c0 25.9-21.2 47.1-47.1 47.1S236 222.8 236 196.9V79.1c0-25.9 21.2-47.1 47.1-47.1s47.1 21.2 47.1 47.1zm-47.1 189c25.9 0 47.1 21.2 47.1 47.1s-21.2 47-47.1 47-47.1-21.2-47.1-47.1v-47.1h47.1zm0-23.7c-25.9 0-47.1-21.2-47.1-47.1s21.2-47.1 47.1-47.1h117.8c25.9 0 47.1 21.2 47.1 47.1s-21.2 47.1-47.1 47.1z"/></svg>
21642
22626
  </a>
21643
22627
 
21644
22628
 
@@ -21646,7 +22630,7 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21646
22630
 
21647
22631
 
21648
22632
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
21649
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
22633
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
21650
22634
  </a>
21651
22635
 
21652
22636
 
@@ -21654,7 +22638,7 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21654
22638
 
21655
22639
 
21656
22640
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
21657
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
22641
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
21658
22642
  </a>
21659
22643
 
21660
22644
  </div>
@@ -21674,7 +22658,7 @@ Can be used as fallback if <code>view_name_key</code> won't be found in the cont
21674
22658
  <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
21675
22659
 
21676
22660
 
21677
- <script src="../../../assets/javascripts/bundle.92b07e13.min.js"></script>
22661
+ <script src="../../../assets/javascripts/bundle.f55a23d4.min.js"></script>
21678
22662
 
21679
22663
 
21680
22664
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});