nautobot 2.2.9__py3-none-any.whl → 2.3.0b1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (697) hide show
  1. nautobot/apps/forms.py +4 -0
  2. nautobot/apps/models.py +10 -1
  3. nautobot/circuits/__init__.py +0 -1
  4. nautobot/circuits/apps.py +1 -0
  5. nautobot/circuits/factory.py +15 -3
  6. nautobot/circuits/filters.py +13 -0
  7. nautobot/circuits/forms.py +13 -0
  8. nautobot/circuits/migrations/0021_alter_circuit_status_alter_circuittermination__path.py +32 -0
  9. nautobot/circuits/migrations/0022_circuittermination_cloud_network.py +25 -0
  10. nautobot/circuits/models.py +16 -3
  11. nautobot/circuits/tables.py +16 -2
  12. nautobot/circuits/templates/circuits/circuittermination_create.html +10 -2
  13. nautobot/circuits/templates/circuits/circuittermination_retrieve.html +6 -0
  14. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -1
  15. nautobot/circuits/tests/test_api.py +7 -5
  16. nautobot/circuits/tests/test_filters.py +12 -5
  17. nautobot/circuits/tests/test_models.py +33 -2
  18. nautobot/circuits/views.py +2 -3
  19. nautobot/cloud/__init__.py +0 -0
  20. nautobot/cloud/api/__init__.py +0 -0
  21. nautobot/cloud/api/serializers.py +54 -0
  22. nautobot/cloud/api/urls.py +16 -0
  23. nautobot/cloud/api/views.py +48 -0
  24. nautobot/cloud/apps.py +13 -0
  25. nautobot/cloud/factory.py +111 -0
  26. nautobot/cloud/filters.py +184 -0
  27. nautobot/cloud/forms.py +333 -0
  28. nautobot/cloud/homepage.py +43 -0
  29. nautobot/cloud/migrations/0001_initial.py +304 -0
  30. nautobot/cloud/migrations/__init__.py +0 -0
  31. nautobot/cloud/models.py +247 -0
  32. nautobot/cloud/navigation.py +85 -0
  33. nautobot/cloud/tables.py +173 -0
  34. nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +43 -0
  35. nautobot/cloud/templates/cloud/cloudnetwork_retrieve.html +128 -0
  36. nautobot/cloud/templates/cloud/cloudnetwork_update.html +33 -0
  37. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +100 -0
  38. nautobot/cloud/templates/cloud/cloudservice_retrieve.html +65 -0
  39. nautobot/cloud/templates/cloud/cloudservice_update.html +25 -0
  40. nautobot/cloud/tests/__init__.py +0 -0
  41. nautobot/cloud/tests/test_api.py +248 -0
  42. nautobot/cloud/tests/test_filters.py +113 -0
  43. nautobot/cloud/tests/test_models.py +43 -0
  44. nautobot/cloud/tests/test_views.py +153 -0
  45. nautobot/cloud/urls.py +14 -0
  46. nautobot/cloud/views.py +181 -0
  47. nautobot/core/__init__.py +0 -3
  48. nautobot/core/api/metadata.py +1 -0
  49. nautobot/core/api/parsers.py +7 -1
  50. nautobot/core/api/urls.py +1 -0
  51. nautobot/core/api/utils.py +1 -0
  52. nautobot/core/api/views.py +4 -0
  53. nautobot/core/apps/__init__.py +6 -3
  54. nautobot/core/constants.py +8 -0
  55. nautobot/core/factory.py +32 -1
  56. nautobot/core/filters.py +96 -28
  57. nautobot/core/forms/fields.py +10 -4
  58. nautobot/core/forms/forms.py +1 -1
  59. nautobot/core/forms/widgets.py +18 -1
  60. nautobot/core/graphql/generators.py +2 -2
  61. nautobot/core/graphql/schema.py +34 -4
  62. nautobot/core/jobs/__init__.py +17 -6
  63. nautobot/core/jobs/cleanup.py +100 -0
  64. nautobot/core/jobs/groups.py +38 -0
  65. nautobot/core/management/commands/generate_test_data.py +116 -3
  66. nautobot/core/models/__init__.py +34 -9
  67. nautobot/core/models/generics.py +19 -3
  68. nautobot/core/models/name_color_content_types.py +7 -28
  69. nautobot/core/models/querysets.py +4 -3
  70. nautobot/core/models/tree_queries.py +1 -1
  71. nautobot/core/models/utils.py +21 -5
  72. nautobot/core/settings.py +4 -30
  73. nautobot/core/settings.yaml +34 -27
  74. nautobot/core/settings_funcs.py +103 -0
  75. nautobot/core/tables.py +127 -56
  76. nautobot/core/templates/admin/search_form.html +1 -1
  77. nautobot/core/templates/buttons/add.html +11 -3
  78. nautobot/core/templates/buttons/consolidated_bulk_action_buttons.html +13 -0
  79. nautobot/core/templates/buttons/consolidated_detail_view_action_buttons.html +13 -0
  80. nautobot/core/templates/buttons/export.html +101 -53
  81. nautobot/core/templates/buttons/job_import.html +11 -3
  82. nautobot/core/templates/generic/object_bulk_destroy.html +3 -1
  83. nautobot/core/templates/generic/object_bulk_update.html +3 -1
  84. nautobot/core/templates/generic/object_changelog.html +0 -9
  85. nautobot/core/templates/generic/object_list.html +156 -17
  86. nautobot/core/templates/generic/object_retrieve.html +80 -16
  87. nautobot/core/templates/inc/extras_features_edit_form_fields.html +8 -0
  88. nautobot/core/templates/inc/javascript.html +2 -0
  89. nautobot/core/templates/inc/media.html +2 -2
  90. nautobot/core/templates/inc/nav_menu.html +1 -0
  91. nautobot/core/templates/inc/paginator.html +7 -7
  92. nautobot/core/templates/inc/search_panel.html +2 -2
  93. nautobot/core/templates/inc/table.html +2 -2
  94. nautobot/core/templates/nautobot_config.py.j2 +13 -23
  95. nautobot/core/templates/utilities/templatetags/dynamic_group_assignment_modal.html +37 -0
  96. nautobot/core/templates/utilities/templatetags/filter_form_modal.html +2 -2
  97. nautobot/core/templates/utilities/templatetags/saved_view_modal.html +38 -0
  98. nautobot/core/templates/utilities/theme_preview.html +25 -8
  99. nautobot/core/templates/utilities/worker_status.html +152 -0
  100. nautobot/core/templatetags/buttons.py +335 -38
  101. nautobot/core/templatetags/form_helpers.py +1 -1
  102. nautobot/core/templatetags/helpers.py +181 -11
  103. nautobot/core/testing/api.py +5 -4
  104. nautobot/core/testing/filters.py +51 -13
  105. nautobot/core/testing/mixins.py +46 -0
  106. nautobot/core/testing/models.py +22 -0
  107. nautobot/core/testing/schema.py +4 -8
  108. nautobot/core/testing/views.py +31 -14
  109. nautobot/core/tests/integration/test_general_functionality.py +1 -1
  110. nautobot/core/tests/integration/test_import_objects_ui.py +1 -0
  111. nautobot/core/tests/integration/test_swagger.py +1 -1
  112. nautobot/core/tests/nautobot_config.py +0 -1
  113. nautobot/core/tests/runner.py +2 -2
  114. nautobot/core/tests/test_api.py +1 -0
  115. nautobot/core/tests/test_authentication.py +7 -2
  116. nautobot/core/tests/test_filters.py +11 -9
  117. nautobot/core/tests/test_forms.py +9 -0
  118. nautobot/core/tests/test_graphql.py +27 -16
  119. nautobot/core/tests/test_jobs.py +123 -74
  120. nautobot/core/tests/test_tables.py +3 -1
  121. nautobot/core/tests/test_templatetags_helpers.py +12 -5
  122. nautobot/core/tests/test_utils.py +31 -20
  123. nautobot/core/tests/test_views.py +6 -6
  124. nautobot/core/urls.py +8 -3
  125. nautobot/core/utils/deprecation.py +29 -0
  126. nautobot/core/utils/filtering.py +12 -9
  127. nautobot/core/utils/lookup.py +37 -2
  128. nautobot/core/utils/requests.py +4 -1
  129. nautobot/core/views/__init__.py +137 -24
  130. nautobot/core/views/generic.py +118 -66
  131. nautobot/core/views/mixins.py +104 -35
  132. nautobot/core/views/paginator.py +9 -3
  133. nautobot/core/views/renderers.py +121 -56
  134. nautobot/core/views/utils.py +79 -1
  135. nautobot/dcim/__init__.py +0 -1
  136. nautobot/dcim/api/serializers.py +180 -44
  137. nautobot/dcim/api/urls.py +7 -3
  138. nautobot/dcim/api/views.py +53 -7
  139. nautobot/dcim/apps.py +3 -0
  140. nautobot/dcim/choices.py +25 -0
  141. nautobot/dcim/constants.py +7 -0
  142. nautobot/dcim/factory.py +249 -18
  143. nautobot/dcim/filters/__init__.py +369 -193
  144. nautobot/dcim/filters/mixins.py +274 -1
  145. nautobot/dcim/forms.py +817 -109
  146. nautobot/dcim/graphql/types.py +2 -2
  147. nautobot/dcim/homepage.py +1 -1
  148. nautobot/dcim/migrations/0059_add_role_field_to_interface_models.py +27 -0
  149. nautobot/dcim/migrations/0060_alter_cable_status_alter_consoleport__path_and_more.py +303 -0
  150. nautobot/dcim/migrations/0061_module_models.py +861 -0
  151. nautobot/dcim/migrations/0062_module_data_migration.py +25 -0
  152. nautobot/dcim/models/__init__.py +8 -0
  153. nautobot/dcim/models/cables.py +15 -0
  154. nautobot/dcim/models/device_component_templates.py +207 -53
  155. nautobot/dcim/models/device_components.py +275 -106
  156. nautobot/dcim/models/devices.py +466 -13
  157. nautobot/dcim/navigation.py +47 -0
  158. nautobot/dcim/signals.py +3 -3
  159. nautobot/dcim/tables/__init__.py +35 -23
  160. nautobot/dcim/tables/devices.py +231 -59
  161. nautobot/dcim/tables/devicetypes.py +65 -9
  162. nautobot/dcim/tables/racks.py +5 -1
  163. nautobot/dcim/tables/template_code.py +46 -26
  164. nautobot/dcim/templates/dcim/cable_connect.html +76 -3
  165. nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -5
  166. nautobot/dcim/templates/dcim/device/base.html +15 -7
  167. nautobot/dcim/templates/dcim/device/consoleports.html +2 -3
  168. nautobot/dcim/templates/dcim/device/consoleserverports.html +2 -3
  169. nautobot/dcim/templates/dcim/device/devicebays.html +6 -7
  170. nautobot/dcim/templates/dcim/device/frontports.html +2 -3
  171. nautobot/dcim/templates/dcim/device/interfaces.html +2 -3
  172. nautobot/dcim/templates/dcim/device/inventory.html +2 -3
  173. nautobot/dcim/templates/dcim/device/modulebays.html +49 -0
  174. nautobot/dcim/templates/dcim/device/poweroutlets.html +2 -3
  175. nautobot/dcim/templates/dcim/device/powerports.html +2 -3
  176. nautobot/dcim/templates/dcim/device/rearports.html +2 -3
  177. nautobot/dcim/templates/dcim/device.html +45 -1
  178. nautobot/dcim/templates/dcim/device_component.html +13 -5
  179. nautobot/dcim/templates/dcim/device_list.html +2 -1
  180. nautobot/dcim/templates/dcim/deviceredundancygroup_retrieve.html +0 -6
  181. nautobot/dcim/templates/dcim/devicetype.html +99 -98
  182. nautobot/dcim/templates/dcim/devicetype_list.html +8 -16
  183. nautobot/dcim/templates/dcim/inc/devicetype_component_table.html +1 -1
  184. nautobot/dcim/templates/dcim/inc/moduletype_component_table.html +39 -0
  185. nautobot/dcim/templates/dcim/interface.html +17 -2
  186. nautobot/dcim/templates/dcim/interface_connection_list.html +7 -5
  187. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  188. nautobot/dcim/templates/dcim/manufacturer.html +24 -0
  189. nautobot/dcim/templates/dcim/module/base.html +97 -0
  190. nautobot/dcim/templates/dcim/module_bulk_destroy.html +5 -0
  191. nautobot/dcim/templates/dcim/module_consoleports.html +53 -0
  192. nautobot/dcim/templates/dcim/module_consoleserverports.html +53 -0
  193. nautobot/dcim/templates/dcim/module_destroy.html +5 -0
  194. nautobot/dcim/templates/dcim/module_frontports.html +53 -0
  195. nautobot/dcim/templates/dcim/module_interfaces.html +57 -0
  196. nautobot/dcim/templates/dcim/module_list.html +20 -0
  197. nautobot/dcim/templates/dcim/module_modulebays.html +49 -0
  198. nautobot/dcim/templates/dcim/module_poweroutlets.html +53 -0
  199. nautobot/dcim/templates/dcim/module_powerports.html +53 -0
  200. nautobot/dcim/templates/dcim/module_rearports.html +53 -0
  201. nautobot/dcim/templates/dcim/module_retrieve.html +63 -0
  202. nautobot/dcim/templates/dcim/module_update.html +71 -0
  203. nautobot/dcim/templates/dcim/modulebay_bulk_destroy.html +5 -0
  204. nautobot/dcim/templates/dcim/modulebay_destroy.html +8 -0
  205. nautobot/dcim/templates/dcim/modulebay_retrieve.html +101 -0
  206. nautobot/dcim/templates/dcim/moduletype_list.html +11 -0
  207. nautobot/dcim/templates/dcim/moduletype_retrieve.html +142 -0
  208. nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -5
  209. nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +65 -19
  210. nautobot/dcim/tests/integration/test_cable_connect_form.py +4 -4
  211. nautobot/dcim/tests/test_api.py +691 -208
  212. nautobot/dcim/tests/test_filters.py +836 -217
  213. nautobot/dcim/tests/test_models.py +1072 -39
  214. nautobot/dcim/tests/test_views.py +1488 -358
  215. nautobot/dcim/urls.py +17 -2
  216. nautobot/dcim/utils.py +2 -3
  217. nautobot/dcim/views.py +1107 -120
  218. nautobot/extras/__init__.py +0 -1
  219. nautobot/extras/api/serializers.py +115 -3
  220. nautobot/extras/api/urls.py +12 -0
  221. nautobot/extras/api/views.py +125 -7
  222. nautobot/extras/apps.py +2 -2
  223. nautobot/extras/choices.py +43 -0
  224. nautobot/extras/context_managers.py +13 -8
  225. nautobot/extras/datasources/git.py +2 -0
  226. nautobot/extras/factory.py +422 -9
  227. nautobot/extras/filters/__init__.py +174 -3
  228. nautobot/extras/filters/mixins.py +46 -43
  229. nautobot/extras/forms/base.py +17 -4
  230. nautobot/extras/forms/forms.py +227 -8
  231. nautobot/extras/forms/mixins.py +93 -0
  232. nautobot/extras/graphql/types.py +23 -10
  233. nautobot/extras/homepage.py +16 -13
  234. nautobot/extras/jobs.py +2 -2
  235. nautobot/extras/management/__init__.py +1 -0
  236. nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -16
  237. nautobot/extras/migrations/0021_customfield_changelog_data.py +1 -0
  238. nautobot/extras/migrations/0109_dynamicgroup_group_type_dynamicgroup_tags_and_more.py +108 -0
  239. nautobot/extras/migrations/0110_alter_configcontext_cluster_groups_and_more.py +111 -0
  240. nautobot/extras/migrations/0111_metadata.py +162 -0
  241. nautobot/extras/migrations/0112_dynamic_group_group_type_data_migration.py +28 -0
  242. nautobot/extras/migrations/0113_saved_views.py +77 -0
  243. nautobot/extras/models/__init__.py +15 -1
  244. nautobot/extras/models/change_logging.py +3 -3
  245. nautobot/extras/models/contacts.py +4 -0
  246. nautobot/extras/models/customfields.py +18 -3
  247. nautobot/extras/models/groups.py +389 -225
  248. nautobot/extras/models/jobs.py +4 -84
  249. nautobot/extras/models/metadata.py +441 -0
  250. nautobot/extras/models/mixins.py +72 -62
  251. nautobot/extras/models/models.py +116 -9
  252. nautobot/extras/models/relationships.py +9 -2
  253. nautobot/extras/models/tags.py +13 -2
  254. nautobot/extras/navigation.py +57 -0
  255. nautobot/extras/plugins/__init__.py +3 -1
  256. nautobot/extras/querysets.py +30 -66
  257. nautobot/extras/signals.py +96 -114
  258. nautobot/extras/tables.py +171 -47
  259. nautobot/extras/templates/extras/dynamicgroup.html +44 -15
  260. nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -0
  261. nautobot/extras/templates/extras/job.html +1 -1
  262. nautobot/extras/templates/extras/job_detail.html +0 -11
  263. nautobot/extras/templates/extras/jobresult.html +61 -74
  264. nautobot/extras/templates/extras/metadatatype_create.html +89 -0
  265. nautobot/extras/templates/extras/metadatatype_retrieve.html +67 -0
  266. nautobot/extras/templates/extras/object_dynamicgroups.html +7 -0
  267. nautobot/extras/templates/extras/objectchange_list.html +0 -12
  268. nautobot/extras/templates/extras/plugins_list.html +1 -3
  269. nautobot/extras/templates/extras/role_retrieve.html +48 -0
  270. nautobot/extras/templates/extras/staticgroupassociation_retrieve.html +20 -0
  271. nautobot/extras/tests/integration/test_customfields.py +1 -0
  272. nautobot/extras/tests/test_api.py +501 -22
  273. nautobot/extras/tests/test_changelog.py +20 -9
  274. nautobot/extras/tests/test_context_managers.py +22 -15
  275. nautobot/extras/tests/test_datasources.py +13 -1
  276. nautobot/extras/tests/test_dynamicgroups.py +201 -171
  277. nautobot/extras/tests/test_filters.py +211 -12
  278. nautobot/extras/tests/test_jobs.py +4 -4
  279. nautobot/extras/tests/test_models.py +499 -4
  280. nautobot/extras/tests/test_relationships.py +1 -0
  281. nautobot/extras/tests/test_views.py +565 -28
  282. nautobot/extras/tests/test_webhooks.py +1 -1
  283. nautobot/extras/urls.py +5 -0
  284. nautobot/extras/utils.py +56 -45
  285. nautobot/extras/views.py +585 -96
  286. nautobot/ipam/__init__.py +0 -1
  287. nautobot/ipam/apps.py +1 -0
  288. nautobot/ipam/factory.py +17 -19
  289. nautobot/ipam/filters.py +14 -1
  290. nautobot/ipam/forms.py +9 -5
  291. nautobot/ipam/graphql/types.py +2 -2
  292. nautobot/ipam/migrations/0047_alter_ipaddress_role_alter_ipaddress_status_and_more.py +59 -0
  293. nautobot/ipam/models.py +23 -9
  294. nautobot/ipam/querysets.py +1 -1
  295. nautobot/ipam/signals.py +4 -2
  296. nautobot/ipam/tables.py +1 -0
  297. nautobot/ipam/templates/ipam/ipaddress_interfaces.html +1 -1
  298. nautobot/ipam/templates/ipam/ipaddress_vm_interfaces.html +1 -1
  299. nautobot/ipam/templates/ipam/prefix.html +1 -0
  300. nautobot/ipam/tests/test_api.py +37 -18
  301. nautobot/ipam/tests/test_filters.py +26 -2
  302. nautobot/ipam/tests/test_models.py +8 -3
  303. nautobot/ipam/tests/test_querysets.py +1 -1
  304. nautobot/ipam/tests/test_views.py +3 -2
  305. nautobot/ipam/urls.py +2 -2
  306. nautobot/ipam/views.py +25 -28
  307. nautobot/project-static/css/base.css +20 -1
  308. nautobot/project-static/css/dark.css +11 -0
  309. nautobot/project-static/docs/404.html +884 -80
  310. nautobot/project-static/docs/apps/index.html +884 -80
  311. nautobot/project-static/docs/apps/nautobot-apps.html +884 -80
  312. nautobot/project-static/docs/assets/_mkdocstrings.css +5 -0
  313. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +911 -112
  314. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +896 -93
  315. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1457 -790
  316. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +927 -136
  317. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +969 -180
  318. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +893 -91
  319. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +889 -85
  320. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +983 -185
  321. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +938 -143
  322. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1064 -274
  323. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1190 -346
  324. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1663 -865
  325. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +1156 -373
  326. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2200 -1502
  327. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +2229 -1421
  328. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +904 -103
  329. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +955 -155
  330. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1002 -215
  331. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +1911 -1275
  332. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +1835 -1091
  333. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +896 -93
  334. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +2323 -1693
  335. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1785 -1023
  336. nautobot/project-static/docs/development/apps/api/configuration-view.html +884 -80
  337. nautobot/project-static/docs/development/apps/api/database-backend-config.html +884 -80
  338. nautobot/project-static/docs/development/apps/api/models/django-admin.html +884 -80
  339. nautobot/project-static/docs/development/apps/api/models/global-search.html +884 -80
  340. nautobot/project-static/docs/development/apps/api/models/graphql.html +884 -80
  341. nautobot/project-static/docs/development/apps/api/models/index.html +922 -81
  342. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +884 -80
  343. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +884 -80
  344. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +884 -80
  345. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +884 -80
  346. nautobot/project-static/docs/development/apps/api/platform-features/index.html +884 -80
  347. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +884 -80
  348. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +884 -80
  349. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +884 -80
  350. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +884 -80
  351. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +884 -80
  352. nautobot/project-static/docs/development/apps/api/prometheus.html +884 -80
  353. nautobot/project-static/docs/development/apps/api/setup.html +884 -80
  354. nautobot/project-static/docs/development/apps/api/testing.html +884 -80
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +884 -80
  356. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +884 -80
  357. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +884 -80
  358. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +884 -80
  359. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +884 -80
  360. nautobot/project-static/docs/development/apps/api/views/base-template.html +884 -80
  361. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +884 -80
  362. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +884 -80
  363. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +884 -80
  364. nautobot/project-static/docs/development/apps/api/views/index.html +884 -80
  365. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +884 -80
  366. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +884 -80
  367. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +884 -80
  368. nautobot/project-static/docs/development/apps/api/views/notes.html +884 -80
  369. nautobot/project-static/docs/development/apps/api/views/rest-api.html +884 -80
  370. nautobot/project-static/docs/development/apps/api/views/urls.html +884 -80
  371. nautobot/project-static/docs/development/apps/index.html +884 -80
  372. nautobot/project-static/docs/development/apps/migration/code-updates.html +884 -80
  373. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +884 -80
  374. nautobot/project-static/docs/development/apps/migration/from-v1.html +884 -80
  375. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +884 -80
  376. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +884 -80
  377. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +884 -80
  378. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +884 -80
  379. nautobot/project-static/docs/development/apps/porting-from-netbox.html +884 -80
  380. nautobot/project-static/docs/development/core/application-registry.html +884 -80
  381. nautobot/project-static/docs/development/core/best-practices.html +885 -80
  382. nautobot/project-static/docs/development/core/bootstrap-ui.html +884 -80
  383. nautobot/project-static/docs/development/core/caching.html +884 -80
  384. nautobot/project-static/docs/development/core/controllers.html +884 -80
  385. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +884 -80
  386. nautobot/project-static/docs/development/core/generic-views.html +884 -80
  387. nautobot/project-static/docs/development/core/getting-started.html +884 -80
  388. nautobot/project-static/docs/development/core/homepage.html +884 -80
  389. nautobot/project-static/docs/development/core/index.html +884 -91
  390. nautobot/project-static/docs/development/core/model-checklist.html +887 -81
  391. nautobot/project-static/docs/development/core/model-features.html +884 -80
  392. nautobot/project-static/docs/development/core/natural-keys.html +884 -80
  393. nautobot/project-static/docs/development/core/navigation-menu.html +884 -80
  394. nautobot/project-static/docs/development/core/release-checklist.html +887 -83
  395. nautobot/project-static/docs/development/core/role-internals.html +884 -80
  396. nautobot/project-static/docs/development/core/settings.html +884 -80
  397. nautobot/project-static/docs/development/core/style-guide.html +885 -81
  398. nautobot/project-static/docs/development/core/templates.html +896 -81
  399. nautobot/project-static/docs/development/core/testing.html +884 -80
  400. nautobot/project-static/docs/development/core/user-preferences.html +884 -80
  401. nautobot/project-static/docs/development/index.html +884 -80
  402. nautobot/project-static/docs/development/jobs/index.html +1247 -457
  403. nautobot/project-static/docs/development/jobs/migration/from-v1.html +884 -80
  404. nautobot/project-static/docs/index.html +13 -8228
  405. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_dark.png +0 -0
  406. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_light.png +0 -0
  407. nautobot/project-static/docs/models/cloud/cloudaccount.html +15 -0
  408. nautobot/project-static/docs/models/cloud/cloudnetwork.html +15 -0
  409. nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +15 -0
  410. nautobot/project-static/docs/models/cloud/cloudresourcetype.html +15 -0
  411. nautobot/project-static/docs/models/cloud/cloudservice.html +15 -0
  412. nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +15 -0
  413. nautobot/project-static/docs/models/dcim/module.html +15 -0
  414. nautobot/project-static/docs/models/dcim/modulebay.html +15 -0
  415. nautobot/project-static/docs/models/dcim/modulebaytemplate.html +15 -0
  416. nautobot/project-static/docs/models/dcim/moduletype.html +15 -0
  417. nautobot/project-static/docs/models/extras/metadatachoice.html +15 -0
  418. nautobot/project-static/docs/models/extras/metadatatype.html +15 -0
  419. nautobot/project-static/docs/models/extras/objectmetadata.html +15 -0
  420. nautobot/project-static/docs/models/extras/role.html +15 -0
  421. nautobot/project-static/docs/models/extras/savedview.html +15 -0
  422. nautobot/project-static/docs/models/extras/staticgroupassociation.html +15 -0
  423. nautobot/project-static/docs/models/extras/status.html +15 -0
  424. nautobot/project-static/docs/objects.inv +0 -0
  425. nautobot/project-static/docs/overview/application_stack.html +892 -81
  426. nautobot/project-static/docs/overview/design_philosophy.html +886 -82
  427. nautobot/project-static/docs/overview/index.html +9032 -13
  428. nautobot/project-static/docs/release-notes/index.html +887 -83
  429. nautobot/project-static/docs/release-notes/version-1.0.html +884 -80
  430. nautobot/project-static/docs/release-notes/version-1.1.html +884 -80
  431. nautobot/project-static/docs/release-notes/version-1.2.html +884 -80
  432. nautobot/project-static/docs/release-notes/version-1.3.html +884 -80
  433. nautobot/project-static/docs/release-notes/version-1.4.html +884 -80
  434. nautobot/project-static/docs/release-notes/version-1.5.html +885 -81
  435. nautobot/project-static/docs/release-notes/version-1.6.html +885 -81
  436. nautobot/project-static/docs/release-notes/version-2.0.html +884 -80
  437. nautobot/project-static/docs/release-notes/version-2.1.html +884 -80
  438. nautobot/project-static/docs/release-notes/version-2.2.html +990 -323
  439. nautobot/project-static/docs/release-notes/version-2.3.html +9524 -0
  440. nautobot/project-static/docs/requirements.txt +4 -4
  441. nautobot/project-static/docs/search/search_index.json +1 -1
  442. nautobot/project-static/docs/sitemap.xml +335 -260
  443. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  444. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +884 -80
  445. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +884 -80
  446. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +884 -80
  447. nautobot/project-static/docs/user-guide/administration/configuration/index.html +884 -80
  448. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +983 -197
  449. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +884 -80
  450. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +884 -80
  451. nautobot/project-static/docs/user-guide/administration/guides/caching.html +884 -80
  452. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +888 -84
  453. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +884 -80
  454. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +884 -80
  455. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +884 -80
  456. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +884 -80
  457. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +884 -80
  458. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +884 -80
  459. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +884 -80
  460. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +884 -80
  461. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +884 -80
  462. nautobot/project-static/docs/user-guide/administration/installation/index.html +888 -80
  463. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +884 -80
  464. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +884 -80
  465. nautobot/project-static/docs/user-guide/administration/installation/services.html +888 -80
  466. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +900 -91
  467. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +884 -80
  468. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +884 -80
  469. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +884 -80
  470. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +884 -80
  471. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +915 -163
  472. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +884 -80
  473. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +884 -80
  474. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +884 -80
  475. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +884 -80
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +884 -80
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +884 -80
  478. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +884 -80
  479. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +884 -80
  480. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +884 -80
  481. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +884 -80
  482. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +884 -80
  483. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +885 -81
  484. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +884 -80
  485. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +888 -80
  486. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +887 -83
  487. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +8984 -0
  488. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +8828 -0
  489. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +8829 -0
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +8828 -0
  491. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +8829 -0
  492. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +8833 -0
  493. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +8828 -0
  494. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +898 -94
  495. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +915 -97
  496. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +915 -97
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +910 -92
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +915 -97
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +898 -94
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +898 -94
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +905 -97
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +912 -108
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +913 -109
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +910 -106
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +898 -94
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +906 -97
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +918 -100
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +928 -110
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +920 -98
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +898 -94
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +929 -111
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +920 -102
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +910 -106
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +913 -109
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +914 -106
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +8828 -0
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +8846 -0
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +8843 -0
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +8823 -0
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +908 -104
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +898 -94
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +932 -75
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +916 -98
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +898 -94
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +935 -78
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +913 -95
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +921 -117
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +910 -106
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +898 -94
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +914 -96
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +916 -98
  532. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +898 -94
  533. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +898 -94
  534. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +898 -94
  535. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +884 -80
  536. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +884 -80
  537. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +889 -81
  538. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +889 -81
  539. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +884 -80
  540. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +884 -80
  541. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +884 -80
  542. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +884 -80
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +884 -80
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +884 -80
  545. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +884 -80
  546. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +884 -80
  547. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +884 -80
  548. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +884 -80
  549. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +893 -88
  550. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +884 -80
  551. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +884 -80
  552. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +884 -80
  553. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +884 -80
  554. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +884 -80
  555. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +889 -81
  556. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +884 -80
  557. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +884 -80
  558. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +884 -80
  559. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +884 -80
  560. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +884 -80
  561. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +884 -80
  562. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +884 -80
  563. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +884 -80
  564. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +884 -80
  565. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +884 -80
  566. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +884 -80
  567. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +884 -80
  568. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +884 -80
  569. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/clear-view-button.png +0 -0
  570. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/cleared-view.png +0 -0
  571. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/config-table-columns-to-locations.png +0 -0
  572. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/configure-button.png +0 -0
  573. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/create-saved-view-success.png +0 -0
  574. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/current-saved-view-drop-down-menu.png +0 -0
  575. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/default-location-list-view.png +0 -0
  576. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/dropdown-button-after-new-saved-view.png +0 -0
  577. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-application-to-locations.png +0 -0
  578. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-button.png +0 -0
  579. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/global-default-location-list-view.png +0 -0
  580. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/location-list-view-with-saved-views.png +0 -0
  581. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/navigation-menu.png +0 -0
  582. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-as-new-view-drop-down.png +0 -0
  583. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-view-modal.png +0 -0
  584. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-buttons.png +0 -0
  585. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-success.png +0 -0
  586. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view-unchecked.png +0 -0
  587. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view.png +0 -0
  588. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-different-user.png +0 -0
  589. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-modal-unchecked.png +0 -0
  590. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-button.png +0 -0
  591. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-success.png +0 -0
  592. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/unsaved-saved-view.png +0 -0
  593. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/updated-saved-view.png +0 -0
  594. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +884 -80
  595. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +884 -80
  596. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +884 -80
  597. nautobot/project-static/docs/user-guide/index.html +884 -80
  598. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +884 -80
  599. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +884 -80
  600. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +884 -80
  601. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +884 -80
  602. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1250 -777
  603. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +887 -83
  604. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +884 -80
  605. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +884 -80
  606. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +884 -80
  607. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +884 -80
  608. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +884 -80
  609. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +884 -80
  610. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +887 -83
  611. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +884 -80
  612. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +884 -80
  613. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +888 -80
  614. nautobot/project-static/docs/user-guide/platform-functionality/metadata.html +8948 -0
  615. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +887 -83
  616. nautobot/project-static/docs/user-guide/platform-functionality/note.html +884 -80
  617. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +884 -80
  618. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +884 -80
  619. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +884 -80
  620. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +884 -80
  621. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +884 -80
  622. nautobot/project-static/docs/user-guide/platform-functionality/role.html +887 -83
  623. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9137 -0
  624. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +887 -83
  625. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +8933 -0
  626. nautobot/project-static/docs/user-guide/platform-functionality/status.html +884 -80
  627. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +884 -80
  628. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +942 -113
  629. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +884 -80
  630. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +884 -80
  631. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +884 -80
  632. nautobot/project-static/js/forms.js +71 -0
  633. nautobot/project-static/js/table_sorting_indicator.js +46 -0
  634. nautobot/project-static/js/tableconfig.js +6 -1
  635. nautobot/project-static/materialdesignicons-7.4.47/css/materialdesignicons.min.css +3 -0
  636. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.eot +0 -0
  637. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.ttf +0 -0
  638. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff +0 -0
  639. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff2 +0 -0
  640. nautobot/tenancy/__init__.py +0 -1
  641. nautobot/tenancy/apps.py +1 -0
  642. nautobot/tenancy/factory.py +3 -2
  643. nautobot/tenancy/filters/__init__.py +1 -0
  644. nautobot/tenancy/forms.py +1 -1
  645. nautobot/tenancy/templates/tenancy/tenant.html +22 -18
  646. nautobot/tenancy/views.py +11 -10
  647. nautobot/users/__init__.py +0 -1
  648. nautobot/users/api/serializers.py +1 -1
  649. nautobot/users/api/views.py +4 -2
  650. nautobot/users/apps.py +3 -2
  651. nautobot/users/factory.py +3 -3
  652. nautobot/users/migrations/0010_user_default_saved_views.py +20 -0
  653. nautobot/users/models.py +12 -0
  654. nautobot/users/tests/test_filters.py +6 -3
  655. nautobot/users/urls.py +8 -0
  656. nautobot/virtualization/__init__.py +0 -1
  657. nautobot/virtualization/apps.py +1 -0
  658. nautobot/virtualization/filters.py +6 -1
  659. nautobot/virtualization/forms.py +11 -3
  660. nautobot/virtualization/graphql/types.py +2 -2
  661. nautobot/virtualization/migrations/0029_add_role_field_to_interface_models.py +27 -0
  662. nautobot/virtualization/migrations/0030_alter_virtualmachine_local_config_context_data_owner_content_type_and_more.py +67 -0
  663. nautobot/virtualization/tables.py +15 -5
  664. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -1
  665. nautobot/virtualization/templates/virtualization/vminterface.html +7 -1
  666. nautobot/virtualization/templates/virtualization/vminterface_edit.html +1 -0
  667. nautobot/virtualization/tests/test_api.py +9 -4
  668. nautobot/virtualization/tests/test_filters.py +22 -0
  669. nautobot/virtualization/tests/test_models.py +7 -3
  670. nautobot/virtualization/tests/test_views.py +19 -3
  671. nautobot/virtualization/urls.py +2 -2
  672. nautobot/virtualization/views.py +10 -32
  673. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/METADATA +21 -19
  674. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/RECORD +679 -559
  675. nautobot/project-static/materialdesignicons-6.5.95/.github/ISSUE_TEMPLATE.md +0 -3
  676. nautobot/project-static/materialdesignicons-6.5.95/README.md +0 -25
  677. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css +0 -26654
  678. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css.map +0 -16
  679. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css +0 -3
  680. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css.map +0 -16
  681. nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff +0 -0
  682. nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff2 +0 -0
  683. nautobot/project-static/materialdesignicons-6.5.95/package.json +0 -28
  684. nautobot/project-static/materialdesignicons-6.5.95/preview.html +0 -717
  685. nautobot/project-static/materialdesignicons-6.5.95/scss/_animated.scss +0 -27
  686. nautobot/project-static/materialdesignicons-6.5.95/scss/_core.scss +0 -10
  687. nautobot/project-static/materialdesignicons-6.5.95/scss/_extras.scss +0 -65
  688. nautobot/project-static/materialdesignicons-6.5.95/scss/_functions.scss +0 -20
  689. nautobot/project-static/materialdesignicons-6.5.95/scss/_icons.scss +0 -10
  690. nautobot/project-static/materialdesignicons-6.5.95/scss/_path.scss +0 -10
  691. nautobot/project-static/materialdesignicons-6.5.95/scss/_variables.scss +0 -6606
  692. nautobot/project-static/materialdesignicons-6.5.95/scss/materialdesignicons.scss +0 -8
  693. /nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/LICENSE +0 -0
  694. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/LICENSE.txt +0 -0
  695. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/NOTICE +0 -0
  696. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/WHEEL +0 -0
  697. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/entry_points.txt +0 -0
@@ -238,7 +238,7 @@
238
238
 
239
239
 
240
240
  <li class="md-tabs__item">
241
- <a href="../../../index.html" class="md-tabs__link">
241
+ <a href="../../../overview/index.html" class="md-tabs__link">
242
242
 
243
243
 
244
244
 
@@ -409,7 +409,7 @@
409
409
 
410
410
 
411
411
  <div class="md-nav__link md-nav__container">
412
- <a href="../../../index.html" class="md-nav__link ">
412
+ <a href="../../../overview/index.html" class="md-nav__link ">
413
413
 
414
414
 
415
415
  <span class="md-ellipsis">
@@ -2484,7 +2484,187 @@
2484
2484
  <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3" >
2485
2485
 
2486
2486
 
2487
- <label class="md-nav__link" for="__nav_2_3_3" id="__nav_2_3_3_label" tabindex="0">
2487
+
2488
+ <div class="md-nav__link md-nav__container">
2489
+ <a href="../../../user-guide/core-data-model/cloud/cloud.html" class="md-nav__link ">
2490
+
2491
+
2492
+ <span class="md-ellipsis">
2493
+ Cloud
2494
+ </span>
2495
+
2496
+
2497
+ </a>
2498
+
2499
+
2500
+ <label class="md-nav__link " for="__nav_2_3_3" id="__nav_2_3_3_label" tabindex="0">
2501
+ <span class="md-nav__icon md-icon"></span>
2502
+ </label>
2503
+
2504
+ </div>
2505
+
2506
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_3_label" aria-expanded="false">
2507
+ <label class="md-nav__title" for="__nav_2_3_3">
2508
+ <span class="md-nav__icon md-icon"></span>
2509
+ Cloud
2510
+ </label>
2511
+ <ul class="md-nav__list" data-md-scrollfix>
2512
+
2513
+
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+ <li class="md-nav__item">
2520
+ <a href="../../../user-guide/core-data-model/cloud/cloudaccount.html" class="md-nav__link">
2521
+
2522
+
2523
+ <span class="md-ellipsis">
2524
+ Cloud Account
2525
+ </span>
2526
+
2527
+
2528
+ </a>
2529
+ </li>
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+
2538
+
2539
+
2540
+ <li class="md-nav__item">
2541
+ <a href="../../../user-guide/core-data-model/cloud/cloudnetwork.html" class="md-nav__link">
2542
+
2543
+
2544
+ <span class="md-ellipsis">
2545
+ Cloud Network
2546
+ </span>
2547
+
2548
+
2549
+ </a>
2550
+ </li>
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+ <li class="md-nav__item">
2562
+ <a href="../../../user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html" class="md-nav__link">
2563
+
2564
+
2565
+ <span class="md-ellipsis">
2566
+ Cloud Network Prefix Assignment
2567
+ </span>
2568
+
2569
+
2570
+ </a>
2571
+ </li>
2572
+
2573
+
2574
+
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+
2581
+
2582
+ <li class="md-nav__item">
2583
+ <a href="../../../user-guide/core-data-model/cloud/cloudresourcetype.html" class="md-nav__link">
2584
+
2585
+
2586
+ <span class="md-ellipsis">
2587
+ Cloud Resource Type
2588
+ </span>
2589
+
2590
+
2591
+ </a>
2592
+ </li>
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+
2600
+
2601
+
2602
+
2603
+ <li class="md-nav__item">
2604
+ <a href="../../../user-guide/core-data-model/cloud/cloudservice.html" class="md-nav__link">
2605
+
2606
+
2607
+ <span class="md-ellipsis">
2608
+ Cloud Service
2609
+ </span>
2610
+
2611
+
2612
+ </a>
2613
+ </li>
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+
2622
+
2623
+
2624
+ <li class="md-nav__item">
2625
+ <a href="../../../user-guide/core-data-model/cloud/cloudservicenetworkassignment.html" class="md-nav__link">
2626
+
2627
+
2628
+ <span class="md-ellipsis">
2629
+ Cloud Service Network Assignment
2630
+ </span>
2631
+
2632
+
2633
+ </a>
2634
+ </li>
2635
+
2636
+
2637
+
2638
+
2639
+ </ul>
2640
+ </nav>
2641
+
2642
+ </li>
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+
2650
+
2651
+
2652
+
2653
+
2654
+
2655
+
2656
+
2657
+
2658
+
2659
+
2660
+ <li class="md-nav__item md-nav__item--nested">
2661
+
2662
+
2663
+
2664
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4" >
2665
+
2666
+
2667
+ <label class="md-nav__link" for="__nav_2_3_4" id="__nav_2_3_4_label" tabindex="0">
2488
2668
 
2489
2669
 
2490
2670
  <span class="md-ellipsis">
@@ -2495,8 +2675,8 @@
2495
2675
  <span class="md-nav__icon md-icon"></span>
2496
2676
  </label>
2497
2677
 
2498
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_3_label" aria-expanded="false">
2499
- <label class="md-nav__title" for="__nav_2_3_3">
2678
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
2679
+ <label class="md-nav__title" for="__nav_2_3_4">
2500
2680
  <span class="md-nav__icon md-icon"></span>
2501
2681
  DCIM
2502
2682
  </label>
@@ -2509,11 +2689,510 @@
2509
2689
 
2510
2690
 
2511
2691
  <li class="md-nav__item">
2512
- <a href="../../../user-guide/core-data-model/dcim/locationtype.html" class="md-nav__link">
2692
+ <a href="../../../user-guide/core-data-model/dcim/locationtype.html" class="md-nav__link">
2693
+
2694
+
2695
+ <span class="md-ellipsis">
2696
+ Location Type
2697
+ </span>
2698
+
2699
+
2700
+ </a>
2701
+ </li>
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2712
+ <li class="md-nav__item">
2713
+ <a href="../../../user-guide/core-data-model/dcim/location.html" class="md-nav__link">
2714
+
2715
+
2716
+ <span class="md-ellipsis">
2717
+ Location
2718
+ </span>
2719
+
2720
+
2721
+ </a>
2722
+ </li>
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+ <li class="md-nav__item">
2734
+ <a href="../../../user-guide/core-data-model/dcim/rackgroup.html" class="md-nav__link">
2735
+
2736
+
2737
+ <span class="md-ellipsis">
2738
+ Rack Group
2739
+ </span>
2740
+
2741
+
2742
+ </a>
2743
+ </li>
2744
+
2745
+
2746
+
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+ <li class="md-nav__item">
2755
+ <a href="../../../user-guide/core-data-model/dcim/rack.html" class="md-nav__link">
2756
+
2757
+
2758
+ <span class="md-ellipsis">
2759
+ Rack
2760
+ </span>
2761
+
2762
+
2763
+ </a>
2764
+ </li>
2765
+
2766
+
2767
+
2768
+
2769
+
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+ <li class="md-nav__item">
2776
+ <a href="../../../user-guide/core-data-model/dcim/manufacturer.html" class="md-nav__link">
2777
+
2778
+
2779
+ <span class="md-ellipsis">
2780
+ Manufacturer
2781
+ </span>
2782
+
2783
+
2784
+ </a>
2785
+ </li>
2786
+
2787
+
2788
+
2789
+
2790
+
2791
+
2792
+
2793
+
2794
+
2795
+
2796
+ <li class="md-nav__item">
2797
+ <a href="../../../user-guide/core-data-model/dcim/devicefamily.html" class="md-nav__link">
2798
+
2799
+
2800
+ <span class="md-ellipsis">
2801
+ Device Family
2802
+ </span>
2803
+
2804
+
2805
+ </a>
2806
+ </li>
2807
+
2808
+
2809
+
2810
+
2811
+
2812
+
2813
+
2814
+
2815
+
2816
+
2817
+ <li class="md-nav__item">
2818
+ <a href="../../../user-guide/core-data-model/dcim/platform.html" class="md-nav__link">
2819
+
2820
+
2821
+ <span class="md-ellipsis">
2822
+ Platform
2823
+ </span>
2824
+
2825
+
2826
+ </a>
2827
+ </li>
2828
+
2829
+
2830
+
2831
+
2832
+
2833
+
2834
+
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2843
+
2844
+
2845
+ <li class="md-nav__item md-nav__item--nested">
2846
+
2847
+
2848
+
2849
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_8" >
2850
+
2851
+
2852
+
2853
+ <div class="md-nav__link md-nav__container">
2854
+ <a href="../../../user-guide/core-data-model/dcim/devicetype.html" class="md-nav__link ">
2855
+
2856
+
2857
+ <span class="md-ellipsis">
2858
+ Device Type
2859
+ </span>
2860
+
2861
+
2862
+ </a>
2863
+
2864
+
2865
+ <label class="md-nav__link " for="__nav_2_3_4_8" id="__nav_2_3_4_8_label" tabindex="0">
2866
+ <span class="md-nav__icon md-icon"></span>
2867
+ </label>
2868
+
2869
+ </div>
2870
+
2871
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_8_label" aria-expanded="false">
2872
+ <label class="md-nav__title" for="__nav_2_3_4_8">
2873
+ <span class="md-nav__icon md-icon"></span>
2874
+ Device Type
2875
+ </label>
2876
+ <ul class="md-nav__list" data-md-scrollfix>
2877
+
2878
+
2879
+
2880
+
2881
+
2882
+
2883
+
2884
+ <li class="md-nav__item">
2885
+ <a href="../../../user-guide/core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
2886
+
2887
+
2888
+ <span class="md-ellipsis">
2889
+ Console Port Template
2890
+ </span>
2891
+
2892
+
2893
+ </a>
2894
+ </li>
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+
2904
+
2905
+ <li class="md-nav__item">
2906
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
2907
+
2908
+
2909
+ <span class="md-ellipsis">
2910
+ Console Server Port Template
2911
+ </span>
2912
+
2913
+
2914
+ </a>
2915
+ </li>
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+ <li class="md-nav__item">
2927
+ <a href="../../../user-guide/core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
2928
+
2929
+
2930
+ <span class="md-ellipsis">
2931
+ Device Bay Template
2932
+ </span>
2933
+
2934
+
2935
+ </a>
2936
+ </li>
2937
+
2938
+
2939
+
2940
+
2941
+
2942
+
2943
+
2944
+
2945
+
2946
+
2947
+ <li class="md-nav__item">
2948
+ <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
2949
+
2950
+
2951
+ <span class="md-ellipsis">
2952
+ Front Port Template
2953
+ </span>
2954
+
2955
+
2956
+ </a>
2957
+ </li>
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+
2964
+
2965
+
2966
+
2967
+
2968
+ <li class="md-nav__item">
2969
+ <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
2970
+
2971
+
2972
+ <span class="md-ellipsis">
2973
+ Interface Template
2974
+ </span>
2975
+
2976
+
2977
+ </a>
2978
+ </li>
2979
+
2980
+
2981
+
2982
+
2983
+
2984
+
2985
+
2986
+
2987
+
2988
+
2989
+ <li class="md-nav__item">
2990
+ <a href="../../../user-guide/core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
2991
+
2992
+
2993
+ <span class="md-ellipsis">
2994
+ Module Bay Template
2995
+ </span>
2996
+
2997
+
2998
+ </a>
2999
+ </li>
3000
+
3001
+
3002
+
3003
+
3004
+
3005
+
3006
+
3007
+
3008
+
3009
+
3010
+ <li class="md-nav__item">
3011
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
3012
+
3013
+
3014
+ <span class="md-ellipsis">
3015
+ Power Outlet Template
3016
+ </span>
3017
+
3018
+
3019
+ </a>
3020
+ </li>
3021
+
3022
+
3023
+
3024
+
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+ <li class="md-nav__item">
3032
+ <a href="../../../user-guide/core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
3033
+
3034
+
3035
+ <span class="md-ellipsis">
3036
+ Power Port Template
3037
+ </span>
3038
+
3039
+
3040
+ </a>
3041
+ </li>
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+
3048
+
3049
+
3050
+
3051
+
3052
+ <li class="md-nav__item">
3053
+ <a href="../../../user-guide/core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
3054
+
3055
+
3056
+ <span class="md-ellipsis">
3057
+ Rear Port Template
3058
+ </span>
3059
+
3060
+
3061
+ </a>
3062
+ </li>
3063
+
3064
+
3065
+
3066
+
3067
+ </ul>
3068
+ </nav>
3069
+
3070
+ </li>
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+
3080
+
3081
+
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+ <li class="md-nav__item md-nav__item--nested">
3089
+
3090
+
3091
+
3092
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_9" >
3093
+
3094
+
3095
+
3096
+ <div class="md-nav__link md-nav__container">
3097
+ <a href="../../../user-guide/core-data-model/dcim/device.html" class="md-nav__link ">
3098
+
3099
+
3100
+ <span class="md-ellipsis">
3101
+ Device
3102
+ </span>
3103
+
3104
+
3105
+ </a>
3106
+
3107
+
3108
+ <label class="md-nav__link " for="__nav_2_3_4_9" id="__nav_2_3_4_9_label" tabindex="0">
3109
+ <span class="md-nav__icon md-icon"></span>
3110
+ </label>
3111
+
3112
+ </div>
3113
+
3114
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_9_label" aria-expanded="false">
3115
+ <label class="md-nav__title" for="__nav_2_3_4_9">
3116
+ <span class="md-nav__icon md-icon"></span>
3117
+ Device
3118
+ </label>
3119
+ <ul class="md-nav__list" data-md-scrollfix>
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+ <li class="md-nav__item">
3128
+ <a href="../../../user-guide/core-data-model/dcim/consoleport.html" class="md-nav__link">
3129
+
3130
+
3131
+ <span class="md-ellipsis">
3132
+ Console Port
3133
+ </span>
3134
+
3135
+
3136
+ </a>
3137
+ </li>
3138
+
3139
+
3140
+
3141
+
3142
+
3143
+
3144
+
3145
+
3146
+
3147
+
3148
+ <li class="md-nav__item">
3149
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverport.html" class="md-nav__link">
3150
+
3151
+
3152
+ <span class="md-ellipsis">
3153
+ Console Server Port
3154
+ </span>
3155
+
3156
+
3157
+ </a>
3158
+ </li>
3159
+
3160
+
3161
+
3162
+
3163
+
3164
+
3165
+
3166
+
3167
+
3168
+
3169
+ <li class="md-nav__item">
3170
+ <a href="../../../user-guide/core-data-model/dcim/devicebay.html" class="md-nav__link">
3171
+
3172
+
3173
+ <span class="md-ellipsis">
3174
+ Device Bay
3175
+ </span>
3176
+
3177
+
3178
+ </a>
3179
+ </li>
3180
+
3181
+
3182
+
3183
+
3184
+
3185
+
3186
+
3187
+
3188
+
3189
+
3190
+ <li class="md-nav__item">
3191
+ <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
2513
3192
 
2514
3193
 
2515
3194
  <span class="md-ellipsis">
2516
- Location Type
3195
+ Front Port
2517
3196
  </span>
2518
3197
 
2519
3198
 
@@ -2530,11 +3209,11 @@
2530
3209
 
2531
3210
 
2532
3211
  <li class="md-nav__item">
2533
- <a href="../../../user-guide/core-data-model/dcim/location.html" class="md-nav__link">
3212
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
2534
3213
 
2535
3214
 
2536
3215
  <span class="md-ellipsis">
2537
- Location
3216
+ Interface
2538
3217
  </span>
2539
3218
 
2540
3219
 
@@ -2551,11 +3230,11 @@
2551
3230
 
2552
3231
 
2553
3232
  <li class="md-nav__item">
2554
- <a href="../../../user-guide/core-data-model/dcim/rackgroup.html" class="md-nav__link">
3233
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
2555
3234
 
2556
3235
 
2557
3236
  <span class="md-ellipsis">
2558
- Rack Group
3237
+ Inventory Item
2559
3238
  </span>
2560
3239
 
2561
3240
 
@@ -2572,11 +3251,11 @@
2572
3251
 
2573
3252
 
2574
3253
  <li class="md-nav__item">
2575
- <a href="../../../user-guide/core-data-model/dcim/rack.html" class="md-nav__link">
3254
+ <a href="../../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
2576
3255
 
2577
3256
 
2578
3257
  <span class="md-ellipsis">
2579
- Rack
3258
+ Module Bay
2580
3259
  </span>
2581
3260
 
2582
3261
 
@@ -2593,11 +3272,11 @@
2593
3272
 
2594
3273
 
2595
3274
  <li class="md-nav__item">
2596
- <a href="../../../user-guide/core-data-model/dcim/manufacturer.html" class="md-nav__link">
3275
+ <a href="../../../user-guide/core-data-model/dcim/powerport.html" class="md-nav__link">
2597
3276
 
2598
3277
 
2599
3278
  <span class="md-ellipsis">
2600
- Manufacturer
3279
+ Power Port
2601
3280
  </span>
2602
3281
 
2603
3282
 
@@ -2614,11 +3293,11 @@
2614
3293
 
2615
3294
 
2616
3295
  <li class="md-nav__item">
2617
- <a href="../../../user-guide/core-data-model/dcim/devicefamily.html" class="md-nav__link">
3296
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlet.html" class="md-nav__link">
2618
3297
 
2619
3298
 
2620
3299
  <span class="md-ellipsis">
2621
- Device Family
3300
+ Power Outlet
2622
3301
  </span>
2623
3302
 
2624
3303
 
@@ -2635,11 +3314,11 @@
2635
3314
 
2636
3315
 
2637
3316
  <li class="md-nav__item">
2638
- <a href="../../../user-guide/core-data-model/dcim/platform.html" class="md-nav__link">
3317
+ <a href="../../../user-guide/core-data-model/dcim/rearport.html" class="md-nav__link">
2639
3318
 
2640
3319
 
2641
3320
  <span class="md-ellipsis">
2642
- Platform
3321
+ Rear Port
2643
3322
  </span>
2644
3323
 
2645
3324
 
@@ -2649,6 +3328,14 @@
2649
3328
 
2650
3329
 
2651
3330
 
3331
+ </ul>
3332
+ </nav>
3333
+
3334
+ </li>
3335
+
3336
+
3337
+
3338
+
2652
3339
 
2653
3340
 
2654
3341
 
@@ -2666,32 +3353,32 @@
2666
3353
 
2667
3354
 
2668
3355
 
2669
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3_8" >
3356
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_10" >
2670
3357
 
2671
3358
 
2672
3359
 
2673
3360
  <div class="md-nav__link md-nav__container">
2674
- <a href="../../../user-guide/core-data-model/dcim/devicetype.html" class="md-nav__link ">
3361
+ <a href="../../../user-guide/core-data-model/dcim/moduletype.html" class="md-nav__link ">
2675
3362
 
2676
3363
 
2677
3364
  <span class="md-ellipsis">
2678
- Device Type
3365
+ Module Type
2679
3366
  </span>
2680
3367
 
2681
3368
 
2682
3369
  </a>
2683
3370
 
2684
3371
 
2685
- <label class="md-nav__link " for="__nav_2_3_3_8" id="__nav_2_3_3_8_label" tabindex="0">
3372
+ <label class="md-nav__link " for="__nav_2_3_4_10" id="__nav_2_3_4_10_label" tabindex="0">
2686
3373
  <span class="md-nav__icon md-icon"></span>
2687
3374
  </label>
2688
3375
 
2689
3376
  </div>
2690
3377
 
2691
- <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_3_8_label" aria-expanded="false">
2692
- <label class="md-nav__title" for="__nav_2_3_3_8">
3378
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_10_label" aria-expanded="false">
3379
+ <label class="md-nav__title" for="__nav_2_3_4_10">
2693
3380
  <span class="md-nav__icon md-icon"></span>
2694
- Device Type
3381
+ Module Type
2695
3382
  </label>
2696
3383
  <ul class="md-nav__list" data-md-scrollfix>
2697
3384
 
@@ -2744,11 +3431,11 @@
2744
3431
 
2745
3432
 
2746
3433
  <li class="md-nav__item">
2747
- <a href="../../../user-guide/core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
3434
+ <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
2748
3435
 
2749
3436
 
2750
3437
  <span class="md-ellipsis">
2751
- Device Bay Template
3438
+ Front Port Template
2752
3439
  </span>
2753
3440
 
2754
3441
 
@@ -2765,11 +3452,11 @@
2765
3452
 
2766
3453
 
2767
3454
  <li class="md-nav__item">
2768
- <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
3455
+ <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
2769
3456
 
2770
3457
 
2771
3458
  <span class="md-ellipsis">
2772
- Front Port Template
3459
+ Interface Template
2773
3460
  </span>
2774
3461
 
2775
3462
 
@@ -2786,11 +3473,11 @@
2786
3473
 
2787
3474
 
2788
3475
  <li class="md-nav__item">
2789
- <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
3476
+ <a href="../../../user-guide/core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
2790
3477
 
2791
3478
 
2792
3479
  <span class="md-ellipsis">
2793
- Interface Template
3480
+ Module Bay Template
2794
3481
  </span>
2795
3482
 
2796
3483
 
@@ -2888,32 +3575,32 @@
2888
3575
 
2889
3576
 
2890
3577
 
2891
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3_9" >
3578
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
2892
3579
 
2893
3580
 
2894
3581
 
2895
3582
  <div class="md-nav__link md-nav__container">
2896
- <a href="../../../user-guide/core-data-model/dcim/device.html" class="md-nav__link ">
3583
+ <a href="../../../user-guide/core-data-model/dcim/module.html" class="md-nav__link ">
2897
3584
 
2898
3585
 
2899
3586
  <span class="md-ellipsis">
2900
- Device
3587
+ Module
2901
3588
  </span>
2902
3589
 
2903
3590
 
2904
3591
  </a>
2905
3592
 
2906
3593
 
2907
- <label class="md-nav__link " for="__nav_2_3_3_9" id="__nav_2_3_3_9_label" tabindex="0">
3594
+ <label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
2908
3595
  <span class="md-nav__icon md-icon"></span>
2909
3596
  </label>
2910
3597
 
2911
3598
  </div>
2912
3599
 
2913
- <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_3_9_label" aria-expanded="false">
2914
- <label class="md-nav__title" for="__nav_2_3_3_9">
3600
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
3601
+ <label class="md-nav__title" for="__nav_2_3_4_11">
2915
3602
  <span class="md-nav__icon md-icon"></span>
2916
- Device
3603
+ Module
2917
3604
  </label>
2918
3605
  <ul class="md-nav__list" data-md-scrollfix>
2919
3606
 
@@ -2966,11 +3653,11 @@
2966
3653
 
2967
3654
 
2968
3655
  <li class="md-nav__item">
2969
- <a href="../../../user-guide/core-data-model/dcim/devicebay.html" class="md-nav__link">
3656
+ <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
2970
3657
 
2971
3658
 
2972
3659
  <span class="md-ellipsis">
2973
- Device Bay
3660
+ Front Port
2974
3661
  </span>
2975
3662
 
2976
3663
 
@@ -2987,11 +3674,11 @@
2987
3674
 
2988
3675
 
2989
3676
  <li class="md-nav__item">
2990
- <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
3677
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
2991
3678
 
2992
3679
 
2993
3680
  <span class="md-ellipsis">
2994
- Front Port
3681
+ Interface
2995
3682
  </span>
2996
3683
 
2997
3684
 
@@ -3008,11 +3695,11 @@
3008
3695
 
3009
3696
 
3010
3697
  <li class="md-nav__item">
3011
- <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
3698
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3012
3699
 
3013
3700
 
3014
3701
  <span class="md-ellipsis">
3015
- Interface
3702
+ Inventory Item
3016
3703
  </span>
3017
3704
 
3018
3705
 
@@ -3029,11 +3716,11 @@
3029
3716
 
3030
3717
 
3031
3718
  <li class="md-nav__item">
3032
- <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3719
+ <a href="../../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
3033
3720
 
3034
3721
 
3035
3722
  <span class="md-ellipsis">
3036
- Inventory Item
3723
+ Module Bay
3037
3724
  </span>
3038
3725
 
3039
3726
 
@@ -3370,10 +4057,10 @@
3370
4057
 
3371
4058
 
3372
4059
 
3373
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4" >
4060
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
3374
4061
 
3375
4062
 
3376
- <label class="md-nav__link" for="__nav_2_3_4" id="__nav_2_3_4_label" tabindex="0">
4063
+ <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
3377
4064
 
3378
4065
 
3379
4066
  <span class="md-ellipsis">
@@ -3384,8 +4071,8 @@
3384
4071
  <span class="md-nav__icon md-icon"></span>
3385
4072
  </label>
3386
4073
 
3387
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
3388
- <label class="md-nav__title" for="__nav_2_3_4">
4074
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
4075
+ <label class="md-nav__title" for="__nav_2_3_5">
3389
4076
  <span class="md-nav__icon md-icon"></span>
3390
4077
  Extras
3391
4078
  </label>
@@ -3500,10 +4187,10 @@
3500
4187
 
3501
4188
 
3502
4189
 
3503
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
4190
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
3504
4191
 
3505
4192
 
3506
- <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
4193
+ <label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
3507
4194
 
3508
4195
 
3509
4196
  <span class="md-ellipsis">
@@ -3514,8 +4201,8 @@
3514
4201
  <span class="md-nav__icon md-icon"></span>
3515
4202
  </label>
3516
4203
 
3517
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
3518
- <label class="md-nav__title" for="__nav_2_3_5">
4204
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
4205
+ <label class="md-nav__title" for="__nav_2_3_6">
3519
4206
  <span class="md-nav__icon md-icon"></span>
3520
4207
  IPAM
3521
4208
  </label>
@@ -3735,10 +4422,10 @@
3735
4422
 
3736
4423
 
3737
4424
 
3738
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
4425
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
3739
4426
 
3740
4427
 
3741
- <label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
4428
+ <label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
3742
4429
 
3743
4430
 
3744
4431
  <span class="md-ellipsis">
@@ -3749,8 +4436,8 @@
3749
4436
  <span class="md-nav__icon md-icon"></span>
3750
4437
  </label>
3751
4438
 
3752
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
3753
- <label class="md-nav__title" for="__nav_2_3_6">
4439
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
4440
+ <label class="md-nav__title" for="__nav_2_3_7">
3754
4441
  <span class="md-nav__icon md-icon"></span>
3755
4442
  Tenancy
3756
4443
  </label>
@@ -3823,10 +4510,10 @@
3823
4510
 
3824
4511
 
3825
4512
 
3826
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
4513
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_8" >
3827
4514
 
3828
4515
 
3829
- <label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
4516
+ <label class="md-nav__link" for="__nav_2_3_8" id="__nav_2_3_8_label" tabindex="0">
3830
4517
 
3831
4518
 
3832
4519
  <span class="md-ellipsis">
@@ -3837,8 +4524,8 @@
3837
4524
  <span class="md-nav__icon md-icon"></span>
3838
4525
  </label>
3839
4526
 
3840
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
3841
- <label class="md-nav__title" for="__nav_2_3_7">
4527
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_8_label" aria-expanded="false">
4528
+ <label class="md-nav__title" for="__nav_2_3_8">
3842
4529
  <span class="md-nav__icon md-icon"></span>
3843
4530
  Virtualization
3844
4531
  </label>
@@ -4093,21 +4780,75 @@
4093
4780
 
4094
4781
 
4095
4782
 
4096
- <li class="md-nav__item">
4097
- <a href="../../../user-guide/platform-functionality/dynamicgroup.html" class="md-nav__link">
4783
+
4784
+
4785
+
4786
+
4787
+
4788
+
4789
+
4790
+ <li class="md-nav__item md-nav__item--nested">
4791
+
4792
+
4098
4793
 
4794
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_5" >
4795
+
4796
+
4797
+
4798
+ <div class="md-nav__link md-nav__container">
4799
+ <a href="../../../user-guide/platform-functionality/dynamicgroup.html" class="md-nav__link ">
4800
+
4099
4801
 
4100
4802
  <span class="md-ellipsis">
4101
4803
  Dynamic Groups
4102
4804
  </span>
4103
4805
 
4104
4806
 
4807
+ </a>
4808
+
4809
+
4810
+ <label class="md-nav__link " for="__nav_2_4_5" id="__nav_2_4_5_label" tabindex="0">
4811
+ <span class="md-nav__icon md-icon"></span>
4812
+ </label>
4813
+
4814
+ </div>
4815
+
4816
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_5_label" aria-expanded="false">
4817
+ <label class="md-nav__title" for="__nav_2_4_5">
4818
+ <span class="md-nav__icon md-icon"></span>
4819
+ Dynamic Groups
4820
+ </label>
4821
+ <ul class="md-nav__list" data-md-scrollfix>
4822
+
4823
+
4824
+
4825
+
4826
+
4827
+
4828
+
4829
+ <li class="md-nav__item">
4830
+ <a href="../../../user-guide/platform-functionality/staticgroupassociation.html" class="md-nav__link">
4831
+
4832
+
4833
+ <span class="md-ellipsis">
4834
+ Static Group Associations
4835
+ </span>
4836
+
4837
+
4105
4838
  </a>
4106
4839
  </li>
4107
4840
 
4108
4841
 
4109
4842
 
4110
4843
 
4844
+ </ul>
4845
+ </nav>
4846
+
4847
+ </li>
4848
+
4849
+
4850
+
4851
+
4111
4852
 
4112
4853
 
4113
4854
 
@@ -4411,6 +5152,27 @@
4411
5152
 
4412
5153
 
4413
5154
 
5155
+ <li class="md-nav__item">
5156
+ <a href="../../../user-guide/platform-functionality/metadata.html" class="md-nav__link">
5157
+
5158
+
5159
+ <span class="md-ellipsis">
5160
+ Metadata
5161
+ </span>
5162
+
5163
+
5164
+ </a>
5165
+ </li>
5166
+
5167
+
5168
+
5169
+
5170
+
5171
+
5172
+
5173
+
5174
+
5175
+
4414
5176
  <li class="md-nav__item">
4415
5177
  <a href="../../../user-guide/platform-functionality/napalm.html" class="md-nav__link">
4416
5178
 
@@ -4485,7 +5247,7 @@
4485
5247
 
4486
5248
 
4487
5249
 
4488
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_15" >
5250
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
4489
5251
 
4490
5252
 
4491
5253
 
@@ -4501,14 +5263,14 @@
4501
5263
  </a>
4502
5264
 
4503
5265
 
4504
- <label class="md-nav__link " for="__nav_2_4_15" id="__nav_2_4_15_label" tabindex="0">
5266
+ <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
4505
5267
  <span class="md-nav__icon md-icon"></span>
4506
5268
  </label>
4507
5269
 
4508
5270
  </div>
4509
5271
 
4510
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_15_label" aria-expanded="false">
4511
- <label class="md-nav__title" for="__nav_2_4_15">
5272
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
5273
+ <label class="md-nav__title" for="__nav_2_4_16">
4512
5274
  <span class="md-nav__icon md-icon"></span>
4513
5275
  REST API
4514
5276
  </label>
@@ -4612,6 +5374,27 @@
4612
5374
 
4613
5375
 
4614
5376
 
5377
+ <li class="md-nav__item">
5378
+ <a href="../../../user-guide/platform-functionality/savedview.html" class="md-nav__link">
5379
+
5380
+
5381
+ <span class="md-ellipsis">
5382
+ Saved Views
5383
+ </span>
5384
+
5385
+
5386
+ </a>
5387
+ </li>
5388
+
5389
+
5390
+
5391
+
5392
+
5393
+
5394
+
5395
+
5396
+
5397
+
4615
5398
  <li class="md-nav__item">
4616
5399
  <a href="../../../user-guide/platform-functionality/secret.html" class="md-nav__link">
4617
5400
 
@@ -4707,10 +5490,10 @@
4707
5490
 
4708
5491
 
4709
5492
 
4710
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_21" >
5493
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
4711
5494
 
4712
5495
 
4713
- <label class="md-nav__link" for="__nav_2_4_21" id="__nav_2_4_21_label" tabindex="0">
5496
+ <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
4714
5497
 
4715
5498
 
4716
5499
  <span class="md-ellipsis">
@@ -4721,8 +5504,8 @@
4721
5504
  <span class="md-nav__icon md-icon"></span>
4722
5505
  </label>
4723
5506
 
4724
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_21_label" aria-expanded="false">
4725
- <label class="md-nav__title" for="__nav_2_4_21">
5507
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
5508
+ <label class="md-nav__title" for="__nav_2_4_23">
4726
5509
  <span class="md-nav__icon md-icon"></span>
4727
5510
  Users
4728
5511
  </label>
@@ -8189,6 +8972,27 @@
8189
8972
 
8190
8973
 
8191
8974
 
8975
+ <li class="md-nav__item">
8976
+ <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
8977
+
8978
+
8979
+ <span class="md-ellipsis">
8980
+ Version 2.3
8981
+ </span>
8982
+
8983
+
8984
+ </a>
8985
+ </li>
8986
+
8987
+
8988
+
8989
+
8990
+
8991
+
8992
+
8993
+
8994
+
8995
+
8192
8996
  <li class="md-nav__item">
8193
8997
  <a href="../../../release-notes/version-2.2.html" class="md-nav__link">
8194
8998
 
@@ -9648,16 +10452,16 @@
9648
10452
 
9649
10453
 
9650
10454
  <h1 id="nautobot.apps.api" class="doc doc-heading">
9651
- <code>nautobot.apps.api</code>
10455
+ <code>nautobot.apps.api</code>
9652
10456
 
9653
10457
 
9654
10458
  <a href="#nautobot.apps.api" class="headerlink" title="Permanent link">&para;</a></h1>
9655
10459
 
9656
- <div class="doc doc-contents first">
9657
-
10460
+ <div class="doc doc-contents first">
10461
+
9658
10462
  <p>Helpers for an app to implement a REST API.</p>
9659
10463
 
9660
-
10464
+
9661
10465
 
9662
10466
  <div class="doc doc-children">
9663
10467
 
@@ -9673,24 +10477,23 @@
9673
10477
 
9674
10478
 
9675
10479
  <h2 id="nautobot.apps.api.APIRootView" class="doc doc-heading">
9676
- <code>nautobot.apps.api.APIRootView</code>
10480
+ <code>nautobot.apps.api.APIRootView</code>
9677
10481
 
9678
10482
 
9679
10483
  <a href="#nautobot.apps.api.APIRootView" class="headerlink" title="Permanent link">&para;</a></h2>
9680
10484
 
9681
10485
 
9682
- <div class="doc doc-contents ">
9683
- <p class="doc doc-class-bases">
9684
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.routers.APIRootView">APIRootView</span></code></p>
10486
+ <div class="doc doc-contents ">
10487
+ <p class="doc doc-class-bases">
10488
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.routers.APIRootView">APIRootView</span></code></p>
10489
+
9685
10490
 
9686
-
9687
10491
  <p>Extends DRF's base APIRootView class to enforce user authentication.</p>
9688
10492
 
9689
10493
 
9690
-
9691
10494
 
9692
- <div class="doc doc-children">
9693
10495
 
10496
+ <div class="doc doc-children">
9694
10497
 
9695
10498
 
9696
10499
 
@@ -9701,10 +10504,10 @@
9701
10504
 
9702
10505
 
9703
10506
 
9704
- </div>
9705
10507
 
9706
10508
  </div>
9707
10509
 
10510
+ </div>
9708
10511
 
9709
10512
  </div>
9710
10513
 
@@ -9713,17 +10516,17 @@
9713
10516
 
9714
10517
 
9715
10518
  <h2 id="nautobot.apps.api.BaseModelSerializer" class="doc doc-heading">
9716
- <code>nautobot.apps.api.BaseModelSerializer</code>
10519
+ <code>nautobot.apps.api.BaseModelSerializer</code>
9717
10520
 
9718
10521
 
9719
10522
  <a href="#nautobot.apps.api.BaseModelSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
9720
10523
 
9721
10524
 
9722
- <div class="doc doc-contents ">
9723
- <p class="doc doc-class-bases">
9724
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.OptInFieldsMixin" href="#nautobot.apps.api.OptInFieldsMixin">OptInFieldsMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedModelSerializer">HyperlinkedModelSerializer</span></code></p>
10525
+ <div class="doc doc-contents ">
10526
+ <p class="doc doc-class-bases">
10527
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.OptInFieldsMixin" href="#nautobot.apps.api.OptInFieldsMixin">OptInFieldsMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedModelSerializer">HyperlinkedModelSerializer</span></code></p>
10528
+
9725
10529
 
9726
-
9727
10530
  <p>This base serializer implements common fields and logic for all ModelSerializers.</p>
9728
10531
  <p>Namely, it:</p>
9729
10532
  <ul>
@@ -9739,7 +10542,7 @@
9739
10542
  </ul>
9740
10543
 
9741
10544
 
9742
-
10545
+
9743
10546
 
9744
10547
  <div class="doc doc-children">
9745
10548
 
@@ -9754,8 +10557,8 @@
9754
10557
 
9755
10558
 
9756
10559
  <h3 id="nautobot.apps.api.BaseModelSerializer.is_nested" class="doc doc-heading">
9757
- <code class="highlight language-python"><span class="n">is_nested</span></code>
9758
-
10560
+ <code class="highlight language-python"><span class="n">is_nested</span></code>
10561
+
9759
10562
  <span class="doc doc-labels">
9760
10563
  <small class="doc doc-label doc-label-property"><code>property</code></small>
9761
10564
  </span>
@@ -9763,227 +10566,206 @@
9763
10566
  <a href="#nautobot.apps.api.BaseModelSerializer.is_nested" class="headerlink" title="Permanent link">&para;</a></h3>
9764
10567
 
9765
10568
 
9766
- <div class="doc doc-contents ">
9767
-
10569
+ <div class="doc doc-contents ">
10570
+
9768
10571
  <p>Return whether this is a nested serializer.</p>
9769
- </div>
10572
+ </div>
9770
10573
 
9771
10574
  </div>
9772
10575
 
9773
10576
 
9774
10577
 
9775
-
9776
10578
  <div class="doc doc-object doc-function">
9777
10579
 
9778
10580
 
9779
-
9780
10581
  <h3 id="nautobot.apps.api.BaseModelSerializer.__init__" class="doc doc-heading">
9781
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">force_csv</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>
10582
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">force_csv</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>
9782
10583
 
9783
10584
  <a href="#nautobot.apps.api.BaseModelSerializer.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
9784
10585
 
9785
10586
 
9786
- <div class="doc doc-contents ">
9787
-
10587
+ <div class="doc doc-contents ">
10588
+
9788
10589
  <p>Instantiate a BaseModelSerializer.</p>
9789
10590
  <p>The force_csv kwarg allows you to force _is_csv_request() to evaluate True without passing a Request object,
9790
10591
  which is necessary to be able to export appropriately structured CSV from a Job that doesn't have a Request.</p>
9791
10592
 
9792
- </div>
10593
+ </div>
9793
10594
 
9794
10595
  </div>
9795
10596
 
9796
-
9797
10597
  <div class="doc doc-object doc-function">
9798
10598
 
9799
10599
 
9800
-
9801
10600
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_field" class="doc doc-heading">
9802
- <code class="highlight language-python"><span class="n">build_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">model_class</span><span class="p">,</span> <span class="n">nested_depth</span><span class="p">)</span></code>
10601
+ <code class="highlight language-python"><span class="n">build_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">model_class</span><span class="p">,</span> <span class="n">nested_depth</span><span class="p">)</span></code>
9803
10602
 
9804
10603
  <a href="#nautobot.apps.api.BaseModelSerializer.build_field" class="headerlink" title="Permanent link">&para;</a></h3>
9805
10604
 
9806
10605
 
9807
- <div class="doc doc-contents ">
9808
-
10606
+ <div class="doc doc-contents ">
10607
+
9809
10608
  <p>Return a two tuple of (cls, kwargs) to build a serializer field with.</p>
9810
10609
 
9811
- </div>
10610
+ </div>
9812
10611
 
9813
10612
  </div>
9814
10613
 
9815
-
9816
10614
  <div class="doc doc-object doc-function">
9817
10615
 
9818
10616
 
9819
-
9820
10617
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_property_field" class="doc doc-heading">
9821
- <code class="highlight language-python"><span class="n">build_property_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
10618
+ <code class="highlight language-python"><span class="n">build_property_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
9822
10619
 
9823
10620
  <a href="#nautobot.apps.api.BaseModelSerializer.build_property_field" class="headerlink" title="Permanent link">&para;</a></h3>
9824
10621
 
9825
10622
 
9826
- <div class="doc doc-contents ">
9827
-
10623
+ <div class="doc doc-contents ">
10624
+
9828
10625
  <p>Create a property field for model methods and properties.</p>
9829
10626
 
9830
- </div>
10627
+ </div>
9831
10628
 
9832
10629
  </div>
9833
10630
 
9834
-
9835
10631
  <div class="doc doc-object doc-function">
9836
10632
 
9837
10633
 
9838
-
9839
10634
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_relational_field" class="doc doc-heading">
9840
- <code class="highlight language-python"><span class="n">build_relational_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">relation_info</span><span class="p">)</span></code>
10635
+ <code class="highlight language-python"><span class="n">build_relational_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">relation_info</span><span class="p">)</span></code>
9841
10636
 
9842
10637
  <a href="#nautobot.apps.api.BaseModelSerializer.build_relational_field" class="headerlink" title="Permanent link">&para;</a></h3>
9843
10638
 
9844
10639
 
9845
- <div class="doc doc-contents ">
9846
-
10640
+ <div class="doc doc-contents ">
10641
+
9847
10642
  <p>Override DRF's default relational-field construction to be app-aware.</p>
9848
10643
 
9849
- </div>
10644
+ </div>
9850
10645
 
9851
10646
  </div>
9852
10647
 
9853
-
9854
10648
  <div class="doc doc-object doc-function">
9855
10649
 
9856
10650
 
9857
-
9858
10651
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_url_field" class="doc doc-heading">
9859
- <code class="highlight language-python"><span class="n">build_url_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
10652
+ <code class="highlight language-python"><span class="n">build_url_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
9860
10653
 
9861
10654
  <a href="#nautobot.apps.api.BaseModelSerializer.build_url_field" class="headerlink" title="Permanent link">&para;</a></h3>
9862
10655
 
9863
10656
 
9864
- <div class="doc doc-contents ">
9865
-
10657
+ <div class="doc doc-contents ">
10658
+
9866
10659
  <p>Override DRF's default 'url' field construction to be app-aware.</p>
9867
10660
 
9868
- </div>
10661
+ </div>
9869
10662
 
9870
10663
  </div>
9871
10664
 
9872
-
9873
10665
  <div class="doc doc-object doc-function">
9874
10666
 
9875
10667
 
9876
-
9877
10668
  <h3 id="nautobot.apps.api.BaseModelSerializer.determine_view_options" class="doc doc-heading">
9878
- <code class="highlight language-python"><span class="n">determine_view_options</span><span class="p">(</span><span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
10669
+ <code class="highlight language-python"><span class="n">determine_view_options</span><span class="p">(</span><span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
9879
10670
 
9880
10671
  <a href="#nautobot.apps.api.BaseModelSerializer.determine_view_options" class="headerlink" title="Permanent link">&para;</a></h3>
9881
10672
 
9882
10673
 
9883
- <div class="doc doc-contents ">
9884
-
10674
+ <div class="doc doc-contents ">
10675
+
9885
10676
  <p>Determine view options to use for rendering the list and detail views associated with this serializer.</p>
9886
10677
 
9887
- </div>
10678
+ </div>
9888
10679
 
9889
10680
  </div>
9890
10681
 
9891
-
9892
10682
  <div class="doc doc-object doc-function">
9893
10683
 
9894
10684
 
9895
-
9896
10685
  <h3 id="nautobot.apps.api.BaseModelSerializer.extend_field_names" class="doc doc-heading">
9897
- <code class="highlight language-python"><span class="n">extend_field_names</span><span class="p">(</span><span class="n">fields</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">at_start</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">opt_in_only</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
10686
+ <code class="highlight language-python"><span class="n">extend_field_names</span><span class="p">(</span><span class="n">fields</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">at_start</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">opt_in_only</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
9898
10687
 
9899
10688
  <a href="#nautobot.apps.api.BaseModelSerializer.extend_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
9900
10689
 
9901
10690
 
9902
- <div class="doc doc-contents ">
9903
-
10691
+ <div class="doc doc-contents ">
10692
+
9904
10693
  <p>Prepend or append the given field_name to <code>fields</code> and optionally self.Meta.opt_in_fields as well.</p>
9905
10694
 
9906
- </div>
10695
+ </div>
9907
10696
 
9908
10697
  </div>
9909
10698
 
9910
-
9911
10699
  <div class="doc doc-object doc-function">
9912
10700
 
9913
10701
 
9914
-
9915
10702
  <h3 id="nautobot.apps.api.BaseModelSerializer.get_additional_detail_view_tabs" class="doc doc-heading">
9916
- <code class="highlight language-python"><span class="n">get_additional_detail_view_tabs</span><span class="p">()</span></code>
10703
+ <code class="highlight language-python"><span class="n">get_additional_detail_view_tabs</span><span class="p">()</span></code>
9917
10704
 
9918
10705
  <a href="#nautobot.apps.api.BaseModelSerializer.get_additional_detail_view_tabs" class="headerlink" title="Permanent link">&para;</a></h3>
9919
10706
 
9920
10707
 
9921
- <div class="doc doc-contents ">
9922
-
10708
+ <div class="doc doc-contents ">
10709
+
9923
10710
  <p>Retrieve definitions of non-default detail view tabs.</p>
9924
10711
  <p>By default provides an "Advanced" tab containing <code>self.advanced_tab_fields</code>, but subclasses
9925
10712
  can override this to move additional serializer fields to this or other tabs.</p>
9926
10713
 
9927
10714
 
9928
-
9929
- <p><strong>Returns:</strong></p>
9930
- <table>
9931
- <thead>
9932
- <tr>
9933
- <th>Type</th>
9934
- <th>Description</th>
9935
- </tr>
9936
- </thead>
9937
- <tbody>
10715
+ <p><span class="doc-section-title">Returns:</span></p>
10716
+ <table>
10717
+ <thead>
9938
10718
  <tr>
9939
- <td>
9940
- <code>dict</code>
9941
- </td>
9942
- <td>
9943
- <div class="doc-md-description">
9944
- <p><code>{&lt;tab label&gt;: [{&lt;panel label&gt;: {"fields": [&lt;list of fields&gt;]}, ...}, ...], ...}</code></p>
9945
- </div>
9946
- </td>
10719
+ <th>Type</th>
10720
+ <th>Description</th>
9947
10721
  </tr>
9948
- </tbody>
9949
- </table>
10722
+ </thead>
10723
+ <tbody>
10724
+ <tr class="doc-section-item">
10725
+ <td>
10726
+ <code>dict</code>
10727
+ </td>
10728
+ <td>
10729
+ <div class="doc-md-description">
10730
+ <p><code>{&lt;tab label&gt;: [{&lt;panel label&gt;: {"fields": [&lt;list of fields&gt;]}, ...}, ...], ...}</code></p>
10731
+ </div>
10732
+ </td>
10733
+ </tr>
10734
+ </tbody>
10735
+ </table>
9950
10736
 
9951
- </div>
10737
+ </div>
9952
10738
 
9953
10739
  </div>
9954
10740
 
9955
-
9956
10741
  <div class="doc doc-object doc-function">
9957
10742
 
9958
10743
 
9959
-
9960
10744
  <h3 id="nautobot.apps.api.BaseModelSerializer.get_display" class="doc doc-heading">
9961
- <code class="highlight language-python"><span class="n">get_display</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span></code>
10745
+ <code class="highlight language-python"><span class="n">get_display</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span></code>
9962
10746
 
9963
10747
  <a href="#nautobot.apps.api.BaseModelSerializer.get_display" class="headerlink" title="Permanent link">&para;</a></h3>
9964
10748
 
9965
10749
 
9966
- <div class="doc doc-contents ">
9967
-
10750
+ <div class="doc doc-contents ">
10751
+
9968
10752
  <p>Return either the <code>display</code> property of the instance or <code>str(instance)</code></p>
9969
10753
 
9970
- </div>
10754
+ </div>
9971
10755
 
9972
10756
  </div>
9973
10757
 
9974
-
9975
10758
  <div class="doc doc-object doc-function">
9976
10759
 
9977
10760
 
9978
-
9979
10761
  <h3 id="nautobot.apps.api.BaseModelSerializer.get_field_names" class="doc doc-heading">
9980
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
10762
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
9981
10763
 
9982
10764
  <a href="#nautobot.apps.api.BaseModelSerializer.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
9983
10765
 
9984
10766
 
9985
- <div class="doc doc-contents ">
9986
-
10767
+ <div class="doc doc-contents ">
10768
+
9987
10769
  <p>Override get_field_names() to add some custom logic.</p>
9988
10770
  <p>Assuming that we follow the pattern where <code>fields = "__all__" for the vast majority of serializers in Nautobot,
9989
10771
  we do not strictly need to use this method to protect against inadvertently omitting standard fields
@@ -9991,7 +10773,7 @@ like</code>display<code>,</code>created<code>, and</code>last_updated`. However,
9991
10773
  <p>The other purpose of this method now is to manipulate the set of fields that "<strong>all</strong>" actually means as a
9992
10774
  way of <em>excluding</em> fields that we <em>don't</em> want to include by default for performance or data exposure reasons.</p>
9993
10775
 
9994
- </div>
10776
+ </div>
9995
10777
 
9996
10778
  </div>
9997
10779
 
@@ -9999,8 +10781,7 @@ way of <em>excluding</em> fields that we <em>don't</em> want to include by defau
9999
10781
 
10000
10782
  </div>
10001
10783
 
10002
- </div>
10003
-
10784
+ </div>
10004
10785
 
10005
10786
  </div>
10006
10787
 
@@ -10009,15 +10790,15 @@ way of <em>excluding</em> fields that we <em>don't</em> want to include by defau
10009
10790
 
10010
10791
 
10011
10792
  <h2 id="nautobot.apps.api.BulkDestroyModelMixin" class="doc doc-heading">
10012
- <code>nautobot.apps.api.BulkDestroyModelMixin</code>
10793
+ <code>nautobot.apps.api.BulkDestroyModelMixin</code>
10013
10794
 
10014
10795
 
10015
10796
  <a href="#nautobot.apps.api.BulkDestroyModelMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10016
10797
 
10017
10798
 
10018
- <div class="doc doc-contents ">
10799
+ <div class="doc doc-contents ">
10800
+
10019
10801
 
10020
-
10021
10802
  <p>Support bulk deletion of objects using the list endpoint for a model. Accepts a DELETE action with a list of one
10022
10803
  or more JSON objects, each specifying the UUID of an object to be deleted. For example:</p>
10023
10804
  <p>DELETE /api/dcim/locations/
@@ -10027,10 +10808,9 @@ or more JSON objects, each specifying the UUID of an object to be deleted. For e
10027
10808
  ]</p>
10028
10809
 
10029
10810
 
10030
-
10031
10811
 
10032
- <div class="doc doc-children">
10033
10812
 
10813
+ <div class="doc doc-children">
10034
10814
 
10035
10815
 
10036
10816
 
@@ -10041,10 +10821,10 @@ or more JSON objects, each specifying the UUID of an object to be deleted. For e
10041
10821
 
10042
10822
 
10043
10823
 
10044
- </div>
10045
10824
 
10046
10825
  </div>
10047
10826
 
10827
+ </div>
10048
10828
 
10049
10829
  </div>
10050
10830
 
@@ -10053,15 +10833,15 @@ or more JSON objects, each specifying the UUID of an object to be deleted. For e
10053
10833
 
10054
10834
 
10055
10835
  <h2 id="nautobot.apps.api.BulkUpdateModelMixin" class="doc doc-heading">
10056
- <code>nautobot.apps.api.BulkUpdateModelMixin</code>
10836
+ <code>nautobot.apps.api.BulkUpdateModelMixin</code>
10057
10837
 
10058
10838
 
10059
10839
  <a href="#nautobot.apps.api.BulkUpdateModelMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10060
10840
 
10061
10841
 
10062
- <div class="doc doc-contents ">
10842
+ <div class="doc doc-contents ">
10843
+
10063
10844
 
10064
-
10065
10845
  <p>Support bulk modification of objects using the list endpoint for a model. Accepts a PATCH action with a list of one
10066
10846
  or more JSON objects, each specifying the UUID of an object to be updated as well as the attributes to be set.
10067
10847
  For example:</p>
@@ -10078,10 +10858,9 @@ For example:</p>
10078
10858
  ]</p>
10079
10859
 
10080
10860
 
10081
-
10082
10861
 
10083
- <div class="doc doc-children">
10084
10862
 
10863
+ <div class="doc doc-children">
10085
10864
 
10086
10865
 
10087
10866
 
@@ -10092,10 +10871,10 @@ For example:</p>
10092
10871
 
10093
10872
 
10094
10873
 
10095
- </div>
10096
10874
 
10097
10875
  </div>
10098
10876
 
10877
+ </div>
10099
10878
 
10100
10879
  </div>
10101
10880
 
@@ -10104,26 +10883,25 @@ For example:</p>
10104
10883
 
10105
10884
 
10106
10885
  <h2 id="nautobot.apps.api.ChoiceField" class="doc doc-heading">
10107
- <code>nautobot.apps.api.ChoiceField</code>
10886
+ <code>nautobot.apps.api.ChoiceField</code>
10108
10887
 
10109
10888
 
10110
10889
  <a href="#nautobot.apps.api.ChoiceField" class="headerlink" title="Permanent link">&para;</a></h2>
10111
10890
 
10112
10891
 
10113
- <div class="doc doc-contents ">
10114
- <p class="doc doc-class-bases">
10115
- Bases: <code><span title="rest_framework.serializers.Field">Field</span></code></p>
10892
+ <div class="doc doc-contents ">
10893
+ <p class="doc doc-class-bases">
10894
+ Bases: <code><span title="rest_framework.serializers.Field">Field</span></code></p>
10895
+
10116
10896
 
10117
-
10118
10897
  <p>Represent a ChoiceField as {'value': <DB value>, 'label': <string>}. Accepts a single value on write.</p>
10119
10898
  <p>:param choices: An iterable of choices in the form (value, key).
10120
10899
  :param allow_blank: Allow blank values in addition to the listed choices.</p>
10121
10900
 
10122
10901
 
10123
-
10124
10902
 
10125
- <div class="doc doc-children">
10126
10903
 
10904
+ <div class="doc doc-children">
10127
10905
 
10128
10906
 
10129
10907
 
@@ -10134,10 +10912,10 @@ For example:</p>
10134
10912
 
10135
10913
 
10136
10914
 
10137
- </div>
10138
10915
 
10139
10916
  </div>
10140
10917
 
10918
+ </div>
10141
10919
 
10142
10920
  </div>
10143
10921
 
@@ -10146,24 +10924,23 @@ For example:</p>
10146
10924
 
10147
10925
 
10148
10926
  <h2 id="nautobot.apps.api.ContentTypeField" class="doc doc-heading">
10149
- <code>nautobot.apps.api.ContentTypeField</code>
10927
+ <code>nautobot.apps.api.ContentTypeField</code>
10150
10928
 
10151
10929
 
10152
10930
  <a href="#nautobot.apps.api.ContentTypeField" class="headerlink" title="Permanent link">&para;</a></h2>
10153
10931
 
10154
10932
 
10155
- <div class="doc doc-contents ">
10156
- <p class="doc doc-class-bases">
10157
- Bases: <code><span title="rest_framework.relations.RelatedField">RelatedField</span></code></p>
10933
+ <div class="doc doc-contents ">
10934
+ <p class="doc doc-class-bases">
10935
+ Bases: <code><span title="rest_framework.relations.RelatedField">RelatedField</span></code></p>
10936
+
10158
10937
 
10159
-
10160
10938
  <p>Represent a ContentType as '<app_label>.<model>'</p>
10161
10939
 
10162
10940
 
10163
-
10164
10941
 
10165
- <div class="doc doc-children">
10166
10942
 
10943
+ <div class="doc doc-children">
10167
10944
 
10168
10945
 
10169
10946
 
@@ -10174,10 +10951,10 @@ For example:</p>
10174
10951
 
10175
10952
 
10176
10953
 
10177
- </div>
10178
10954
 
10179
10955
  </div>
10180
10956
 
10957
+ </div>
10181
10958
 
10182
10959
  </div>
10183
10960
 
@@ -10186,24 +10963,23 @@ For example:</p>
10186
10963
 
10187
10964
 
10188
10965
  <h2 id="nautobot.apps.api.CustomFieldModelSerializerMixin" class="doc doc-heading">
10189
- <code>nautobot.apps.api.CustomFieldModelSerializerMixin</code>
10966
+ <code>nautobot.apps.api.CustomFieldModelSerializerMixin</code>
10190
10967
 
10191
10968
 
10192
10969
  <a href="#nautobot.apps.api.CustomFieldModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10193
10970
 
10194
10971
 
10195
- <div class="doc doc-contents ">
10196
- <p class="doc doc-class-bases">
10197
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
10972
+ <div class="doc doc-contents ">
10973
+ <p class="doc doc-class-bases">
10974
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
10975
+
10198
10976
 
10199
-
10200
10977
  <p>Extends ModelSerializer to render any CustomFields and their values associated with an object.</p>
10201
10978
 
10202
10979
 
10203
-
10204
10980
 
10205
- <div class="doc doc-children">
10206
10981
 
10982
+ <div class="doc doc-children">
10207
10983
 
10208
10984
 
10209
10985
 
@@ -10216,18 +10992,17 @@ For example:</p>
10216
10992
  <div class="doc doc-object doc-function">
10217
10993
 
10218
10994
 
10219
-
10220
10995
  <h3 id="nautobot.apps.api.CustomFieldModelSerializerMixin.get_field_names" class="doc doc-heading">
10221
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
10996
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
10222
10997
 
10223
10998
  <a href="#nautobot.apps.api.CustomFieldModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
10224
10999
 
10225
11000
 
10226
- <div class="doc doc-contents ">
10227
-
11001
+ <div class="doc doc-contents ">
11002
+
10228
11003
  <p>Ensure that "custom_fields" and "computed_fields" are included appropriately.</p>
10229
11004
 
10230
- </div>
11005
+ </div>
10231
11006
 
10232
11007
  </div>
10233
11008
 
@@ -10235,8 +11010,7 @@ For example:</p>
10235
11010
 
10236
11011
  </div>
10237
11012
 
10238
- </div>
10239
-
11013
+ </div>
10240
11014
 
10241
11015
  </div>
10242
11016
 
@@ -10245,24 +11019,23 @@ For example:</p>
10245
11019
 
10246
11020
 
10247
11021
  <h2 id="nautobot.apps.api.CustomFieldModelViewSet" class="doc doc-heading">
10248
- <code>nautobot.apps.api.CustomFieldModelViewSet</code>
11022
+ <code>nautobot.apps.api.CustomFieldModelViewSet</code>
10249
11023
 
10250
11024
 
10251
11025
  <a href="#nautobot.apps.api.CustomFieldModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
10252
11026
 
10253
11027
 
10254
- <div class="doc doc-contents ">
10255
- <p class="doc doc-class-bases">
10256
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSet" href="#nautobot.apps.api.ModelViewSet">ModelViewSet</a></code></p>
11028
+ <div class="doc doc-contents ">
11029
+ <p class="doc doc-class-bases">
11030
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSet" href="#nautobot.apps.api.ModelViewSet">ModelViewSet</a></code></p>
11031
+
10257
11032
 
10258
-
10259
11033
  <p>Include the applicable set of CustomFields in the ModelViewSet context.</p>
10260
11034
 
10261
11035
 
10262
-
10263
11036
 
10264
- <div class="doc doc-children">
10265
11037
 
11038
+ <div class="doc doc-children">
10266
11039
 
10267
11040
 
10268
11041
 
@@ -10273,10 +11046,10 @@ For example:</p>
10273
11046
 
10274
11047
 
10275
11048
 
10276
- </div>
10277
11049
 
10278
11050
  </div>
10279
11051
 
11052
+ </div>
10280
11053
 
10281
11054
  </div>
10282
11055
 
@@ -10285,25 +11058,24 @@ For example:</p>
10285
11058
 
10286
11059
 
10287
11060
  <h2 id="nautobot.apps.api.GetObjectCountsView" class="doc doc-heading">
10288
- <code>nautobot.apps.api.GetObjectCountsView</code>
11061
+ <code>nautobot.apps.api.GetObjectCountsView</code>
10289
11062
 
10290
11063
 
10291
11064
  <a href="#nautobot.apps.api.GetObjectCountsView" class="headerlink" title="Permanent link">&para;</a></h2>
10292
11065
 
10293
11066
 
10294
- <div class="doc doc-contents ">
10295
- <p class="doc doc-class-bases">
10296
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.views.APIView">APIView</span></code></p>
11067
+ <div class="doc doc-contents ">
11068
+ <p class="doc doc-class-bases">
11069
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.views.APIView">APIView</span></code></p>
11070
+
10297
11071
 
10298
-
10299
11072
  <p>Enumerate the models listed on the Nautobot home page and return data structure
10300
11073
  containing verbose_name_plural, url and count.</p>
10301
11074
 
10302
11075
 
10303
-
10304
11076
 
10305
- <div class="doc doc-children">
10306
11077
 
11078
+ <div class="doc doc-children">
10307
11079
 
10308
11080
 
10309
11081
 
@@ -10314,10 +11086,10 @@ containing verbose_name_plural, url and count.</p>
10314
11086
 
10315
11087
 
10316
11088
 
10317
- </div>
10318
11089
 
10319
11090
  </div>
10320
11091
 
11092
+ </div>
10321
11093
 
10322
11094
  </div>
10323
11095
 
@@ -10326,24 +11098,23 @@ containing verbose_name_plural, url and count.</p>
10326
11098
 
10327
11099
 
10328
11100
  <h2 id="nautobot.apps.api.ModelViewSet" class="doc doc-heading">
10329
- <code>nautobot.apps.api.ModelViewSet</code>
11101
+ <code>nautobot.apps.api.ModelViewSet</code>
10330
11102
 
10331
11103
 
10332
11104
  <a href="#nautobot.apps.api.ModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
10333
11105
 
10334
11106
 
10335
- <div class="doc doc-contents ">
10336
- <p class="doc doc-class-bases">
10337
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkUpdateModelMixin" href="#nautobot.apps.api.BulkUpdateModelMixin">BulkUpdateModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkDestroyModelMixin" href="#nautobot.apps.api.BulkDestroyModelMixin">BulkDestroyModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ModelViewSet">ModelViewSet</span></code></p>
11107
+ <div class="doc doc-contents ">
11108
+ <p class="doc doc-class-bases">
11109
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkUpdateModelMixin" href="#nautobot.apps.api.BulkUpdateModelMixin">BulkUpdateModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkDestroyModelMixin" href="#nautobot.apps.api.BulkDestroyModelMixin">BulkDestroyModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ModelViewSet">ModelViewSet</span></code></p>
11110
+
10338
11111
 
10339
-
10340
11112
  <p>Extend DRF's ModelViewSet to support bulk update and delete functions.</p>
10341
11113
 
10342
11114
 
10343
-
10344
11115
 
10345
- <div class="doc doc-children">
10346
11116
 
11117
+ <div class="doc doc-children">
10347
11118
 
10348
11119
 
10349
11120
 
@@ -10354,10 +11125,10 @@ containing verbose_name_plural, url and count.</p>
10354
11125
 
10355
11126
 
10356
11127
 
10357
- </div>
10358
11128
 
10359
11129
  </div>
10360
11130
 
11131
+ </div>
10361
11132
 
10362
11133
  </div>
10363
11134
 
@@ -10366,20 +11137,19 @@ containing verbose_name_plural, url and count.</p>
10366
11137
 
10367
11138
 
10368
11139
  <h2 id="nautobot.apps.api.ModelViewSetMixin" class="doc doc-heading">
10369
- <code>nautobot.apps.api.ModelViewSetMixin</code>
11140
+ <code>nautobot.apps.api.ModelViewSetMixin</code>
10370
11141
 
10371
11142
 
10372
11143
  <a href="#nautobot.apps.api.ModelViewSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10373
11144
 
10374
11145
 
10375
- <div class="doc doc-contents ">
11146
+ <div class="doc doc-contents ">
10376
11147
 
10377
11148
 
10378
11149
 
10379
-
10380
11150
 
10381
- <div class="doc doc-children">
10382
11151
 
11152
+ <div class="doc doc-children">
10383
11153
 
10384
11154
 
10385
11155
 
@@ -10392,59 +11162,54 @@ containing verbose_name_plural, url and count.</p>
10392
11162
  <div class="doc doc-object doc-function">
10393
11163
 
10394
11164
 
10395
-
10396
11165
  <h3 id="nautobot.apps.api.ModelViewSetMixin.get_object" class="doc doc-heading">
10397
- <code class="highlight language-python"><span class="n">get_object</span><span class="p">()</span></code>
11166
+ <code class="highlight language-python"><span class="n">get_object</span><span class="p">()</span></code>
10398
11167
 
10399
11168
  <a href="#nautobot.apps.api.ModelViewSetMixin.get_object" class="headerlink" title="Permanent link">&para;</a></h3>
10400
11169
 
10401
11170
 
10402
- <div class="doc doc-contents ">
10403
-
11171
+ <div class="doc doc-contents ">
11172
+
10404
11173
  <p>Extend rest_framework.generics.GenericAPIView.get_object to allow "pk" lookups to use a composite-key.</p>
10405
11174
 
10406
- </div>
11175
+ </div>
10407
11176
 
10408
11177
  </div>
10409
11178
 
10410
-
10411
11179
  <div class="doc doc-object doc-function">
10412
11180
 
10413
11181
 
10414
-
10415
11182
  <h3 id="nautobot.apps.api.ModelViewSetMixin.initial" class="doc doc-heading">
10416
- <code class="highlight language-python"><span class="n">initial</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11183
+ <code class="highlight language-python"><span class="n">initial</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10417
11184
 
10418
11185
  <a href="#nautobot.apps.api.ModelViewSetMixin.initial" class="headerlink" title="Permanent link">&para;</a></h3>
10419
11186
 
10420
11187
 
10421
- <div class="doc doc-contents ">
10422
-
11188
+ <div class="doc doc-contents ">
11189
+
10423
11190
  <p>Runs anything that needs to occur prior to calling the method handler.</p>
10424
11191
  <p>Override of internal Django Rest Framework API.</p>
10425
11192
 
10426
- </div>
11193
+ </div>
10427
11194
 
10428
11195
  </div>
10429
11196
 
10430
-
10431
11197
  <div class="doc doc-object doc-function">
10432
11198
 
10433
11199
 
10434
-
10435
11200
  <h3 id="nautobot.apps.api.ModelViewSetMixin.restrict_queryset" class="doc doc-heading">
10436
- <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11201
+ <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10437
11202
 
10438
11203
  <a href="#nautobot.apps.api.ModelViewSetMixin.restrict_queryset" class="headerlink" title="Permanent link">&para;</a></h3>
10439
11204
 
10440
11205
 
10441
- <div class="doc doc-contents ">
10442
-
11206
+ <div class="doc doc-contents ">
11207
+
10443
11208
  <p>Restrict the view's queryset to allow only the permitted objects for the given request.</p>
10444
11209
  <p>Subclasses (such as nautobot.extras.api.views.JobModelViewSet) may wish to override this.</p>
10445
11210
  <p>Called by initial(), below.</p>
10446
11211
 
10447
- </div>
11212
+ </div>
10448
11213
 
10449
11214
  </div>
10450
11215
 
@@ -10452,8 +11217,7 @@ containing verbose_name_plural, url and count.</p>
10452
11217
 
10453
11218
  </div>
10454
11219
 
10455
- </div>
10456
-
11220
+ </div>
10457
11221
 
10458
11222
  </div>
10459
11223
 
@@ -10462,24 +11226,23 @@ containing verbose_name_plural, url and count.</p>
10462
11226
 
10463
11227
 
10464
11228
  <h2 id="nautobot.apps.api.MultipleChoiceJSONField" class="doc doc-heading">
10465
- <code>nautobot.apps.api.MultipleChoiceJSONField</code>
11229
+ <code>nautobot.apps.api.MultipleChoiceJSONField</code>
10466
11230
 
10467
11231
 
10468
11232
  <a href="#nautobot.apps.api.MultipleChoiceJSONField" class="headerlink" title="Permanent link">&para;</a></h2>
10469
11233
 
10470
11234
 
10471
- <div class="doc doc-contents ">
10472
- <p class="doc doc-class-bases">
10473
- Bases: <code><span title="rest_framework.serializers.MultipleChoiceField">MultipleChoiceField</span></code></p>
11235
+ <div class="doc doc-contents ">
11236
+ <p class="doc doc-class-bases">
11237
+ Bases: <code><span title="rest_framework.serializers.MultipleChoiceField">MultipleChoiceField</span></code></p>
11238
+
10474
11239
 
10475
-
10476
11240
  <p>A MultipleChoiceField that renders the received value as a JSON-compatible list rather than a set.</p>
10477
11241
 
10478
11242
 
10479
-
10480
11243
 
10481
- <div class="doc doc-children">
10482
11244
 
11245
+ <div class="doc doc-children">
10483
11246
 
10484
11247
 
10485
11248
 
@@ -10492,18 +11255,17 @@ containing verbose_name_plural, url and count.</p>
10492
11255
  <div class="doc doc-object doc-function">
10493
11256
 
10494
11257
 
10495
-
10496
11258
  <h3 id="nautobot.apps.api.MultipleChoiceJSONField.__init__" class="doc doc-heading">
10497
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11259
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10498
11260
 
10499
11261
  <a href="#nautobot.apps.api.MultipleChoiceJSONField.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
10500
11262
 
10501
11263
 
10502
- <div class="doc doc-contents ">
10503
-
11264
+ <div class="doc doc-contents ">
11265
+
10504
11266
  <p>Overload default choices handling to also accept a callable.</p>
10505
11267
 
10506
- </div>
11268
+ </div>
10507
11269
 
10508
11270
  </div>
10509
11271
 
@@ -10511,8 +11273,7 @@ containing verbose_name_plural, url and count.</p>
10511
11273
 
10512
11274
  </div>
10513
11275
 
10514
- </div>
10515
-
11276
+ </div>
10516
11277
 
10517
11278
  </div>
10518
11279
 
@@ -10521,21 +11282,21 @@ containing verbose_name_plural, url and count.</p>
10521
11282
 
10522
11283
 
10523
11284
  <h2 id="nautobot.apps.api.NautobotAutoSchema" class="doc doc-heading">
10524
- <code>nautobot.apps.api.NautobotAutoSchema</code>
11285
+ <code>nautobot.apps.api.NautobotAutoSchema</code>
10525
11286
 
10526
11287
 
10527
11288
  <a href="#nautobot.apps.api.NautobotAutoSchema" class="headerlink" title="Permanent link">&para;</a></h2>
10528
11289
 
10529
11290
 
10530
- <div class="doc doc-contents ">
10531
- <p class="doc doc-class-bases">
10532
- Bases: <code><span title="drf_spectacular.openapi.AutoSchema">AutoSchema</span></code></p>
11291
+ <div class="doc doc-contents ">
11292
+ <p class="doc doc-class-bases">
11293
+ Bases: <code><span title="drf_spectacular.openapi.AutoSchema">AutoSchema</span></code></p>
11294
+
10533
11295
 
10534
-
10535
11296
  <p>Nautobot-specific extensions to drf-spectacular's AutoSchema.</p>
10536
11297
 
10537
11298
 
10538
-
11299
+
10539
11300
 
10540
11301
  <div class="doc doc-children">
10541
11302
 
@@ -10550,8 +11311,8 @@ containing verbose_name_plural, url and count.</p>
10550
11311
 
10551
11312
 
10552
11313
  <h3 id="nautobot.apps.api.NautobotAutoSchema.is_bulk_action" class="doc doc-heading">
10553
- <code class="highlight language-python"><span class="n">is_bulk_action</span></code>
10554
-
11314
+ <code class="highlight language-python"><span class="n">is_bulk_action</span></code>
11315
+
10555
11316
  <span class="doc doc-labels">
10556
11317
  <small class="doc doc-label doc-label-property"><code>property</code></small>
10557
11318
  </span>
@@ -10559,10 +11320,10 @@ containing verbose_name_plural, url and count.</p>
10559
11320
  <a href="#nautobot.apps.api.NautobotAutoSchema.is_bulk_action" class="headerlink" title="Permanent link">&para;</a></h3>
10560
11321
 
10561
11322
 
10562
- <div class="doc doc-contents ">
10563
-
11323
+ <div class="doc doc-contents ">
11324
+
10564
11325
  <p>Custom property for convenience.</p>
10565
- </div>
11326
+ </div>
10566
11327
 
10567
11328
  </div>
10568
11329
 
@@ -10571,8 +11332,8 @@ containing verbose_name_plural, url and count.</p>
10571
11332
 
10572
11333
 
10573
11334
  <h3 id="nautobot.apps.api.NautobotAutoSchema.is_partial_action" class="doc doc-heading">
10574
- <code class="highlight language-python"><span class="n">is_partial_action</span></code>
10575
-
11335
+ <code class="highlight language-python"><span class="n">is_partial_action</span></code>
11336
+
10576
11337
  <span class="doc doc-labels">
10577
11338
  <small class="doc doc-label doc-label-property"><code>property</code></small>
10578
11339
  </span>
@@ -10580,28 +11341,26 @@ containing verbose_name_plural, url and count.</p>
10580
11341
  <a href="#nautobot.apps.api.NautobotAutoSchema.is_partial_action" class="headerlink" title="Permanent link">&para;</a></h3>
10581
11342
 
10582
11343
 
10583
- <div class="doc doc-contents ">
10584
-
11344
+ <div class="doc doc-contents ">
11345
+
10585
11346
  <p>Custom property for convenience.</p>
10586
- </div>
11347
+ </div>
10587
11348
 
10588
11349
  </div>
10589
11350
 
10590
11351
 
10591
11352
 
10592
-
10593
11353
  <div class="doc doc-object doc-function">
10594
11354
 
10595
11355
 
10596
-
10597
11356
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_description" class="doc doc-heading">
10598
- <code class="highlight language-python"><span class="n">get_description</span><span class="p">()</span></code>
11357
+ <code class="highlight language-python"><span class="n">get_description</span><span class="p">()</span></code>
10599
11358
 
10600
11359
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_description" class="headerlink" title="Permanent link">&para;</a></h3>
10601
11360
 
10602
11361
 
10603
- <div class="doc doc-contents ">
10604
-
11362
+ <div class="doc doc-contents ">
11363
+
10605
11364
  <p>Get the appropriate description for a given API endpoint.</p>
10606
11365
  <p>By default, if a specific action doesn't have its own docstring, and neither does the view class,
10607
11366
  drf-spectacular will walk up the MRO of the view class until it finds a docstring, and use that.
@@ -10610,65 +11369,59 @@ docstring of the <code>NautobotModelViewSet</code> class, which isn't very usefu
10610
11369
  we only use the docstring of the view itself (ignoring its parent class docstrings), or if none exists, we
10611
11370
  make an attempt at rendering a basically accurate default description.</p>
10612
11371
 
10613
- </div>
11372
+ </div>
10614
11373
 
10615
11374
  </div>
10616
11375
 
10617
-
10618
11376
  <div class="doc doc-object doc-function">
10619
11377
 
10620
11378
 
10621
-
10622
11379
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_filter_backends" class="doc doc-heading">
10623
- <code class="highlight language-python"><span class="n">get_filter_backends</span><span class="p">()</span></code>
11380
+ <code class="highlight language-python"><span class="n">get_filter_backends</span><span class="p">()</span></code>
10624
11381
 
10625
11382
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_filter_backends" class="headerlink" title="Permanent link">&para;</a></h3>
10626
11383
 
10627
11384
 
10628
- <div class="doc doc-contents ">
10629
-
11385
+ <div class="doc doc-contents ">
11386
+
10630
11387
  <p>Nautobot's custom bulk operations, even though they return a list of records, are NOT filterable.</p>
10631
11388
 
10632
- </div>
11389
+ </div>
10633
11390
 
10634
11391
  </div>
10635
11392
 
10636
-
10637
11393
  <div class="doc doc-object doc-function">
10638
11394
 
10639
11395
 
10640
-
10641
11396
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_operation_id" class="doc doc-heading">
10642
- <code class="highlight language-python"><span class="n">get_operation_id</span><span class="p">()</span></code>
11397
+ <code class="highlight language-python"><span class="n">get_operation_id</span><span class="p">()</span></code>
10643
11398
 
10644
11399
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_operation_id" class="headerlink" title="Permanent link">&para;</a></h3>
10645
11400
 
10646
11401
 
10647
- <div class="doc doc-contents ">
10648
-
11402
+ <div class="doc doc-contents ">
11403
+
10649
11404
  <p>Extend the base method to handle Nautobot's REST API bulk operations.</p>
10650
11405
  <p>Without this extension, every one of our ModelViewSet classes will result in drf-spectacular complaining
10651
11406
  about operationId collisions, e.g. between DELETE /api/dcim/devices/ and DELETE /api/dcim/devices/<pk>/ would
10652
11407
  both get resolved to the same "dcim_devices_destroy" operation-id and this would make drf-spectacular complain.</p>
10653
11408
  <p>With this extension, the bulk endpoints automatically get a different operation-id from the non-bulk endpoints.</p>
10654
11409
 
10655
- </div>
11410
+ </div>
10656
11411
 
10657
11412
  </div>
10658
11413
 
10659
-
10660
11414
  <div class="doc doc-object doc-function">
10661
11415
 
10662
11416
 
10663
-
10664
11417
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_request_serializer" class="doc doc-heading">
10665
- <code class="highlight language-python"><span class="n">get_request_serializer</span><span class="p">()</span></code>
11418
+ <code class="highlight language-python"><span class="n">get_request_serializer</span><span class="p">()</span></code>
10666
11419
 
10667
11420
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_request_serializer" class="headerlink" title="Permanent link">&para;</a></h3>
10668
11421
 
10669
11422
 
10670
- <div class="doc doc-contents ">
10671
-
11423
+ <div class="doc doc-contents ">
11424
+
10672
11425
  <p>Return the request serializer (used for describing/parsing the request payload) for this endpoint.</p>
10673
11426
  <p>We override the default drf-spectacular behavior for the case where the endpoint describes a write request
10674
11427
  with required data (PATCH, POST, PUT). In those cases we replace FooSerializer with a dynamically-defined
@@ -10676,89 +11429,81 @@ WritableFooSerializer class in order to more accurately represent the available
10676
11429
  <p>We also override for the case where the endpoint is one of Nautobot's custom bulk API endpoints, which
10677
11430
  require a list of serializers as input, rather than a single one.</p>
10678
11431
 
10679
- </div>
11432
+ </div>
10680
11433
 
10681
11434
  </div>
10682
11435
 
10683
-
10684
11436
  <div class="doc doc-object doc-function">
10685
11437
 
10686
11438
 
10687
-
10688
11439
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_response_serializers" class="doc doc-heading">
10689
- <code class="highlight language-python"><span class="n">get_response_serializers</span><span class="p">()</span></code>
11440
+ <code class="highlight language-python"><span class="n">get_response_serializers</span><span class="p">()</span></code>
10690
11441
 
10691
11442
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_response_serializers" class="headerlink" title="Permanent link">&para;</a></h3>
10692
11443
 
10693
11444
 
10694
- <div class="doc doc-contents ">
10695
-
11445
+ <div class="doc doc-contents ">
11446
+
10696
11447
  <p>Return the response serializer (used for describing the response payload) for this endpoint.</p>
10697
11448
  <p>We override the default drf-spectacular behavior for the case where the endpoint describes a write request
10698
11449
  to a bulk endpoint, which returns a list of serializers, rather than a single one.</p>
10699
11450
 
10700
- </div>
11451
+ </div>
10701
11452
 
10702
11453
  </div>
10703
11454
 
10704
-
10705
11455
  <div class="doc doc-object doc-function">
10706
11456
 
10707
11457
 
10708
-
10709
11458
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_serializer_ref_name" class="doc doc-heading">
10710
- <code class="highlight language-python"><span class="n">get_serializer_ref_name</span><span class="p">(</span><span class="n">serializer</span><span class="p">)</span></code>
11459
+ <code class="highlight language-python"><span class="n">get_serializer_ref_name</span><span class="p">(</span><span class="n">serializer</span><span class="p">)</span></code>
10711
11460
 
10712
11461
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_serializer_ref_name" class="headerlink" title="Permanent link">&para;</a></h3>
10713
11462
 
10714
11463
 
10715
- <div class="doc doc-contents ">
10716
-
11464
+ <div class="doc doc-contents ">
11465
+
10717
11466
  <p>Get the serializer's ref_name Meta attribute if set, or else derive a ref_name automatically.</p>
10718
11467
  <p>Based on drf_yasg.utils.get_serializer_ref_name().</p>
10719
11468
 
10720
- </div>
11469
+ </div>
10721
11470
 
10722
11471
  </div>
10723
11472
 
10724
-
10725
11473
  <div class="doc doc-object doc-function">
10726
11474
 
10727
11475
 
10728
-
10729
11476
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_writable_class" class="doc doc-heading">
10730
- <code class="highlight language-python"><span class="n">get_writable_class</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">bulk</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
11477
+ <code class="highlight language-python"><span class="n">get_writable_class</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">bulk</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
10731
11478
 
10732
11479
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_writable_class" class="headerlink" title="Permanent link">&para;</a></h3>
10733
11480
 
10734
11481
 
10735
- <div class="doc doc-contents ">
10736
-
11482
+ <div class="doc doc-contents ">
11483
+
10737
11484
  <p>Given a FooSerializer instance, look up or construct a [Bulk]WritableFooSerializer class if necessary.</p>
10738
11485
  <p>If no [Bulk]WritableFooSerializer class is needed, returns None instead.</p>
10739
11486
 
10740
- </div>
11487
+ </div>
10741
11488
 
10742
11489
  </div>
10743
11490
 
10744
-
10745
11491
  <div class="doc doc-object doc-function">
10746
11492
 
10747
11493
 
10748
-
10749
11494
  <h3 id="nautobot.apps.api.NautobotAutoSchema.resolve_serializer" class="doc doc-heading">
10750
- <code class="highlight language-python"><span class="n">resolve_serializer</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="n">bypass_extensions</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
11495
+ <code class="highlight language-python"><span class="n">resolve_serializer</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="n">bypass_extensions</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
10751
11496
 
10752
11497
  <a href="#nautobot.apps.api.NautobotAutoSchema.resolve_serializer" class="headerlink" title="Permanent link">&para;</a></h3>
10753
11498
 
10754
11499
 
10755
- <div class="doc doc-contents ">
10756
-
11500
+ <div class="doc doc-contents ">
11501
+
10757
11502
  <p>Re-add required <code>id</code> field on bulk_partial_update action.</p>
10758
11503
  <p>drf-spectacular clears the <code>required</code> list for any partial serializers in its <code>_map_basic_serializer()</code>,
10759
11504
  but Nautobot bulk partial updates require the <code>id</code> field to be specified for each object to update.</p>
10760
11505
 
10761
- </div>
11506
+ </div>
10762
11507
 
10763
11508
  </div>
10764
11509
 
@@ -10766,8 +11511,7 @@ but Nautobot bulk partial updates require the <code>id</code> field to be specif
10766
11511
 
10767
11512
  </div>
10768
11513
 
10769
- </div>
10770
-
11514
+ </div>
10771
11515
 
10772
11516
  </div>
10773
11517
 
@@ -10776,24 +11520,23 @@ but Nautobot bulk partial updates require the <code>id</code> field to be specif
10776
11520
 
10777
11521
 
10778
11522
  <h2 id="nautobot.apps.api.NautobotCSVParser" class="doc doc-heading">
10779
- <code>nautobot.apps.api.NautobotCSVParser</code>
11523
+ <code>nautobot.apps.api.NautobotCSVParser</code>
10780
11524
 
10781
11525
 
10782
11526
  <a href="#nautobot.apps.api.NautobotCSVParser" class="headerlink" title="Permanent link">&para;</a></h2>
10783
11527
 
10784
11528
 
10785
- <div class="doc doc-contents ">
10786
- <p class="doc doc-class-bases">
10787
- Bases: <code><span title="rest_framework.parsers.BaseParser">BaseParser</span></code></p>
11529
+ <div class="doc doc-contents ">
11530
+ <p class="doc doc-class-bases">
11531
+ Bases: <code><span title="rest_framework.parsers.BaseParser">BaseParser</span></code></p>
11532
+
10788
11533
 
10789
-
10790
11534
  <p>Counterpart to NautobotCSVRenderer - import CSV data.</p>
10791
11535
 
10792
11536
 
10793
-
10794
11537
 
10795
- <div class="doc doc-children">
10796
11538
 
11539
+ <div class="doc doc-children">
10797
11540
 
10798
11541
 
10799
11542
 
@@ -10806,20 +11549,19 @@ but Nautobot bulk partial updates require the <code>id</code> field to be specif
10806
11549
  <div class="doc doc-object doc-function">
10807
11550
 
10808
11551
 
10809
-
10810
11552
  <h3 id="nautobot.apps.api.NautobotCSVParser.row_elements_to_data" class="doc doc-heading">
10811
- <code class="highlight language-python"><span class="n">row_elements_to_data</span><span class="p">(</span><span class="n">counter</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">serializer</span><span class="p">)</span></code>
11553
+ <code class="highlight language-python"><span class="n">row_elements_to_data</span><span class="p">(</span><span class="n">counter</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">serializer</span><span class="p">)</span></code>
10812
11554
 
10813
11555
  <a href="#nautobot.apps.api.NautobotCSVParser.row_elements_to_data" class="headerlink" title="Permanent link">&para;</a></h3>
10814
11556
 
10815
11557
 
10816
- <div class="doc doc-contents ">
10817
-
11558
+ <div class="doc doc-contents ">
11559
+
10818
11560
  <p>Parse a single row of CSV data (represented as a dict) into a dict suitable for consumption by the serializer.</p>
10819
11561
  <p>TODO: it would be more elegant if our serializer fields knew how to deserialize the CSV data themselves;
10820
11562
  could we then literally have the parser just return list(reader) and not need this function at all?</p>
10821
11563
 
10822
- </div>
11564
+ </div>
10823
11565
 
10824
11566
  </div>
10825
11567
 
@@ -10827,8 +11569,7 @@ could we then literally have the parser just return list(reader) and not need th
10827
11569
 
10828
11570
  </div>
10829
11571
 
10830
- </div>
10831
-
11572
+ </div>
10832
11573
 
10833
11574
  </div>
10834
11575
 
@@ -10837,24 +11578,23 @@ could we then literally have the parser just return list(reader) and not need th
10837
11578
 
10838
11579
 
10839
11580
  <h2 id="nautobot.apps.api.NautobotHyperlinkedRelatedField" class="doc doc-heading">
10840
- <code>nautobot.apps.api.NautobotHyperlinkedRelatedField</code>
11581
+ <code>nautobot.apps.api.NautobotHyperlinkedRelatedField</code>
10841
11582
 
10842
11583
 
10843
11584
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField" class="headerlink" title="Permanent link">&para;</a></h2>
10844
11585
 
10845
11586
 
10846
- <div class="doc doc-contents ">
10847
- <p class="doc doc-class-bases">
10848
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.mixins.WritableSerializerMixin" href="#nautobot.apps.api.WritableSerializerMixin">WritableSerializerMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedRelatedField">HyperlinkedRelatedField</span></code></p>
11587
+ <div class="doc doc-contents ">
11588
+ <p class="doc doc-class-bases">
11589
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.mixins.WritableSerializerMixin" href="#nautobot.apps.api.WritableSerializerMixin">WritableSerializerMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedRelatedField">HyperlinkedRelatedField</span></code></p>
11590
+
10849
11591
 
10850
-
10851
11592
  <p>Extend HyperlinkedRelatedField to include URL namespace-awareness, add 'object_type' field, and read composite-keys.</p>
10852
11593
 
10853
11594
 
10854
-
10855
11595
 
10856
- <div class="doc doc-children">
10857
11596
 
11597
+ <div class="doc doc-children">
10858
11598
 
10859
11599
 
10860
11600
 
@@ -10867,57 +11607,52 @@ could we then literally have the parser just return list(reader) and not need th
10867
11607
  <div class="doc doc-object doc-function">
10868
11608
 
10869
11609
 
10870
-
10871
11610
  <h3 id="nautobot.apps.api.NautobotHyperlinkedRelatedField.__init__" class="doc doc-heading">
10872
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11611
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10873
11612
 
10874
11613
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
10875
11614
 
10876
11615
 
10877
- <div class="doc doc-contents ">
10878
-
11616
+ <div class="doc doc-contents ">
11617
+
10879
11618
  <p>Override DRF's namespace-unaware default view_name logic for HyperlinkedRelatedField.</p>
10880
11619
  <p>DRF defaults to '{model_name}-detail' instead of '{app_label}:{model_name}-detail'.</p>
10881
11620
 
10882
- </div>
11621
+ </div>
10883
11622
 
10884
11623
  </div>
10885
11624
 
10886
-
10887
11625
  <div class="doc doc-object doc-function">
10888
11626
 
10889
11627
 
10890
-
10891
11628
  <h3 id="nautobot.apps.api.NautobotHyperlinkedRelatedField.to_internal_value" class="doc doc-heading">
10892
- <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
11629
+ <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
10893
11630
 
10894
11631
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField.to_internal_value" class="headerlink" title="Permanent link">&para;</a></h3>
10895
11632
 
10896
11633
 
10897
- <div class="doc doc-contents ">
10898
-
11634
+ <div class="doc doc-contents ">
11635
+
10899
11636
  <p>Convert potentially nested representation to a model instance.</p>
10900
11637
 
10901
- </div>
11638
+ </div>
10902
11639
 
10903
11640
  </div>
10904
11641
 
10905
-
10906
11642
  <div class="doc doc-object doc-function">
10907
11643
 
10908
11644
 
10909
-
10910
11645
  <h3 id="nautobot.apps.api.NautobotHyperlinkedRelatedField.to_representation" class="doc doc-heading">
10911
- <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></code>
11646
+ <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></code>
10912
11647
 
10913
11648
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField.to_representation" class="headerlink" title="Permanent link">&para;</a></h3>
10914
11649
 
10915
11650
 
10916
- <div class="doc doc-contents ">
10917
-
11651
+ <div class="doc doc-contents ">
11652
+
10918
11653
  <p>Convert URL representation to a brief nested representation.</p>
10919
11654
 
10920
- </div>
11655
+ </div>
10921
11656
 
10922
11657
  </div>
10923
11658
 
@@ -10925,8 +11660,7 @@ could we then literally have the parser just return list(reader) and not need th
10925
11660
 
10926
11661
  </div>
10927
11662
 
10928
- </div>
10929
-
11663
+ </div>
10930
11664
 
10931
11665
  </div>
10932
11666
 
@@ -10935,23 +11669,22 @@ could we then literally have the parser just return list(reader) and not need th
10935
11669
 
10936
11670
 
10937
11671
  <h2 id="nautobot.apps.api.NautobotModelSerializer" class="doc doc-heading">
10938
- <code>nautobot.apps.api.NautobotModelSerializer</code>
11672
+ <code>nautobot.apps.api.NautobotModelSerializer</code>
10939
11673
 
10940
11674
 
10941
11675
  <a href="#nautobot.apps.api.NautobotModelSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
10942
11676
 
10943
11677
 
10944
- <div class="doc doc-contents ">
10945
- <p class="doc doc-class-bases">
10946
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.RelationshipModelSerializerMixin" href="#nautobot.apps.api.RelationshipModelSerializerMixin">RelationshipModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.CustomFieldModelSerializerMixin" href="#nautobot.apps.api.CustomFieldModelSerializerMixin">CustomFieldModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.NotesSerializerMixin" href="#nautobot.apps.api.NotesSerializerMixin">NotesSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
11678
+ <div class="doc doc-contents ">
11679
+ <p class="doc doc-class-bases">
11680
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.RelationshipModelSerializerMixin" href="#nautobot.apps.api.RelationshipModelSerializerMixin">RelationshipModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.CustomFieldModelSerializerMixin" href="#nautobot.apps.api.CustomFieldModelSerializerMixin">CustomFieldModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.NotesSerializerMixin" href="#nautobot.apps.api.NotesSerializerMixin">NotesSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
11681
+
10947
11682
 
10948
-
10949
11683
  <p>Base class to use for serializers based on OrganizationalModel or PrimaryModel.</p>
10950
11684
  <p>Can also be used for models derived from BaseModel, so long as they support custom fields, notes, and relationships.</p>
10951
11685
 
10952
11686
 
10953
- </div>
10954
-
11687
+ </div>
10955
11688
 
10956
11689
  </div>
10957
11690
 
@@ -10960,23 +11693,22 @@ could we then literally have the parser just return list(reader) and not need th
10960
11693
 
10961
11694
 
10962
11695
  <h2 id="nautobot.apps.api.NautobotModelViewSet" class="doc doc-heading">
10963
- <code>nautobot.apps.api.NautobotModelViewSet</code>
11696
+ <code>nautobot.apps.api.NautobotModelViewSet</code>
10964
11697
 
10965
11698
 
10966
11699
  <a href="#nautobot.apps.api.NautobotModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
10967
11700
 
10968
11701
 
10969
- <div class="doc doc-contents ">
10970
- <p class="doc doc-class-bases">
10971
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.NotesViewSetMixin" href="#nautobot.apps.api.NotesViewSetMixin">NotesViewSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.CustomFieldModelViewSet" href="#nautobot.apps.api.CustomFieldModelViewSet">CustomFieldModelViewSet</a></code></p>
11702
+ <div class="doc doc-contents ">
11703
+ <p class="doc doc-class-bases">
11704
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.NotesViewSetMixin" href="#nautobot.apps.api.NotesViewSetMixin">NotesViewSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.CustomFieldModelViewSet" href="#nautobot.apps.api.CustomFieldModelViewSet">CustomFieldModelViewSet</a></code></p>
11705
+
10972
11706
 
10973
-
10974
11707
  <p>Base class to use for API ViewSets based on OrganizationalModel or PrimaryModel.</p>
10975
11708
  <p>Can also be used for models derived from BaseModel, so long as they support Notes.</p>
10976
11709
 
10977
11710
 
10978
- </div>
10979
-
11711
+ </div>
10980
11712
 
10981
11713
  </div>
10982
11714
 
@@ -10985,24 +11717,23 @@ could we then literally have the parser just return list(reader) and not need th
10985
11717
 
10986
11718
 
10987
11719
  <h2 id="nautobot.apps.api.NotesSerializerMixin" class="doc doc-heading">
10988
- <code>nautobot.apps.api.NotesSerializerMixin</code>
11720
+ <code>nautobot.apps.api.NotesSerializerMixin</code>
10989
11721
 
10990
11722
 
10991
11723
  <a href="#nautobot.apps.api.NotesSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10992
11724
 
10993
11725
 
10994
- <div class="doc doc-contents ">
10995
- <p class="doc doc-class-bases">
10996
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
11726
+ <div class="doc doc-contents ">
11727
+ <p class="doc doc-class-bases">
11728
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
11729
+
10997
11730
 
10998
-
10999
11731
  <p>Extend Serializer with a <code>notes</code> field.</p>
11000
11732
 
11001
11733
 
11002
-
11003
11734
 
11004
- <div class="doc doc-children">
11005
11735
 
11736
+ <div class="doc doc-children">
11006
11737
 
11007
11738
 
11008
11739
 
@@ -11015,18 +11746,17 @@ could we then literally have the parser just return list(reader) and not need th
11015
11746
  <div class="doc doc-object doc-function">
11016
11747
 
11017
11748
 
11018
-
11019
11749
  <h3 id="nautobot.apps.api.NotesSerializerMixin.get_field_names" class="doc doc-heading">
11020
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11750
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11021
11751
 
11022
11752
  <a href="#nautobot.apps.api.NotesSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11023
11753
 
11024
11754
 
11025
- <div class="doc doc-contents ">
11026
-
11755
+ <div class="doc doc-contents ">
11756
+
11027
11757
  <p>Ensure that fields includes "notes_url" field if applicable.</p>
11028
11758
 
11029
- </div>
11759
+ </div>
11030
11760
 
11031
11761
  </div>
11032
11762
 
@@ -11034,8 +11764,7 @@ could we then literally have the parser just return list(reader) and not need th
11034
11764
 
11035
11765
  </div>
11036
11766
 
11037
- </div>
11038
-
11767
+ </div>
11039
11768
 
11040
11769
  </div>
11041
11770
 
@@ -11044,17 +11773,17 @@ could we then literally have the parser just return list(reader) and not need th
11044
11773
 
11045
11774
 
11046
11775
  <h2 id="nautobot.apps.api.NotesViewSetMixin" class="doc doc-heading">
11047
- <code>nautobot.apps.api.NotesViewSetMixin</code>
11776
+ <code>nautobot.apps.api.NotesViewSetMixin</code>
11048
11777
 
11049
11778
 
11050
11779
  <a href="#nautobot.apps.api.NotesViewSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11051
11780
 
11052
11781
 
11053
- <div class="doc doc-contents ">
11782
+ <div class="doc doc-contents ">
11783
+
11054
11784
 
11055
11785
 
11056
11786
 
11057
-
11058
11787
 
11059
11788
  <div class="doc doc-children">
11060
11789
 
@@ -11070,24 +11799,23 @@ could we then literally have the parser just return list(reader) and not need th
11070
11799
 
11071
11800
 
11072
11801
  <h3 id="nautobot.apps.api.NotesViewSetMixin.CreateNotePermissions" class="doc doc-heading">
11073
- <code>CreateNotePermissions</code>
11802
+ <code>CreateNotePermissions</code>
11074
11803
 
11075
11804
 
11076
11805
  <a href="#nautobot.apps.api.NotesViewSetMixin.CreateNotePermissions" class="headerlink" title="Permanent link">&para;</a></h3>
11077
11806
 
11078
11807
 
11079
- <div class="doc doc-contents ">
11080
- <p class="doc doc-class-bases">
11081
- Bases: <code><span title="nautobot.core.api.authentication.TokenPermissions">TokenPermissions</span></code></p>
11808
+ <div class="doc doc-contents ">
11809
+ <p class="doc doc-class-bases">
11810
+ Bases: <code><span title="nautobot.core.api.authentication.TokenPermissions">TokenPermissions</span></code></p>
11811
+
11082
11812
 
11083
-
11084
11813
  <p>As nautobot.core.api.authentication.TokenPermissions, but enforcing add_note permission.</p>
11085
11814
 
11086
11815
 
11087
-
11088
11816
 
11089
- <div class="doc doc-children">
11090
11817
 
11818
+ <div class="doc doc-children">
11091
11819
 
11092
11820
 
11093
11821
 
@@ -11098,49 +11826,45 @@ could we then literally have the parser just return list(reader) and not need th
11098
11826
 
11099
11827
 
11100
11828
 
11101
- </div>
11102
11829
 
11103
11830
  </div>
11104
11831
 
11832
+ </div>
11105
11833
 
11106
11834
  </div>
11107
11835
 
11108
11836
 
11109
-
11110
11837
  <div class="doc doc-object doc-function">
11111
11838
 
11112
11839
 
11113
-
11114
11840
  <h3 id="nautobot.apps.api.NotesViewSetMixin.notes" class="doc doc-heading">
11115
- <code class="highlight language-python"><span class="n">notes</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11841
+ <code class="highlight language-python"><span class="n">notes</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11116
11842
 
11117
11843
  <a href="#nautobot.apps.api.NotesViewSetMixin.notes" class="headerlink" title="Permanent link">&para;</a></h3>
11118
11844
 
11119
11845
 
11120
- <div class="doc doc-contents ">
11121
-
11846
+ <div class="doc doc-contents ">
11847
+
11122
11848
  <p>API methods for returning or creating notes on an object.</p>
11123
11849
 
11124
- </div>
11850
+ </div>
11125
11851
 
11126
11852
  </div>
11127
11853
 
11128
-
11129
11854
  <div class="doc doc-object doc-function">
11130
11855
 
11131
11856
 
11132
-
11133
11857
  <h3 id="nautobot.apps.api.NotesViewSetMixin.restrict_queryset" class="doc doc-heading">
11134
- <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11858
+ <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11135
11859
 
11136
11860
  <a href="#nautobot.apps.api.NotesViewSetMixin.restrict_queryset" class="headerlink" title="Permanent link">&para;</a></h3>
11137
11861
 
11138
11862
 
11139
- <div class="doc doc-contents ">
11140
-
11863
+ <div class="doc doc-contents ">
11864
+
11141
11865
  <p>Apply "view" permissions on the POST /notes/ endpoint, otherwise as ModelViewSetMixin.</p>
11142
11866
 
11143
- </div>
11867
+ </div>
11144
11868
 
11145
11869
  </div>
11146
11870
 
@@ -11148,8 +11872,7 @@ could we then literally have the parser just return list(reader) and not need th
11148
11872
 
11149
11873
  </div>
11150
11874
 
11151
- </div>
11152
-
11875
+ </div>
11153
11876
 
11154
11877
  </div>
11155
11878
 
@@ -11158,24 +11881,23 @@ could we then literally have the parser just return list(reader) and not need th
11158
11881
 
11159
11882
 
11160
11883
  <h2 id="nautobot.apps.api.ObjectTypeField" class="doc doc-heading">
11161
- <code>nautobot.apps.api.ObjectTypeField</code>
11884
+ <code>nautobot.apps.api.ObjectTypeField</code>
11162
11885
 
11163
11886
 
11164
11887
  <a href="#nautobot.apps.api.ObjectTypeField" class="headerlink" title="Permanent link">&para;</a></h2>
11165
11888
 
11166
11889
 
11167
- <div class="doc doc-contents ">
11168
- <p class="doc doc-class-bases">
11169
- Bases: <code><span title="rest_framework.serializers.CharField">CharField</span></code></p>
11890
+ <div class="doc doc-contents ">
11891
+ <p class="doc doc-class-bases">
11892
+ Bases: <code><span title="rest_framework.serializers.CharField">CharField</span></code></p>
11893
+
11170
11894
 
11171
-
11172
11895
  <p>Represent the ContentType of this serializer's model as "<app_label>.<model>".</p>
11173
11896
 
11174
11897
 
11175
-
11176
11898
 
11177
- <div class="doc doc-children">
11178
11899
 
11900
+ <div class="doc doc-children">
11179
11901
 
11180
11902
 
11181
11903
 
@@ -11188,38 +11910,35 @@ could we then literally have the parser just return list(reader) and not need th
11188
11910
  <div class="doc doc-object doc-function">
11189
11911
 
11190
11912
 
11191
-
11192
11913
  <h3 id="nautobot.apps.api.ObjectTypeField.__init__" class="doc doc-heading">
11193
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">read_only</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11914
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">read_only</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11194
11915
 
11195
11916
  <a href="#nautobot.apps.api.ObjectTypeField.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
11196
11917
 
11197
11918
 
11198
- <div class="doc doc-contents ">
11199
-
11919
+ <div class="doc doc-contents ">
11920
+
11200
11921
  <p>Default read_only to True as this should never be a writable field.</p>
11201
11922
 
11202
- </div>
11923
+ </div>
11203
11924
 
11204
11925
  </div>
11205
11926
 
11206
-
11207
11927
  <div class="doc doc-object doc-function">
11208
11928
 
11209
11929
 
11210
-
11211
11930
  <h3 id="nautobot.apps.api.ObjectTypeField.to_representation" class="doc doc-heading">
11212
- <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">_value</span><span class="p">)</span></code>
11931
+ <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">_value</span><span class="p">)</span></code>
11213
11932
 
11214
11933
  <a href="#nautobot.apps.api.ObjectTypeField.to_representation" class="headerlink" title="Permanent link">&para;</a></h3>
11215
11934
 
11216
11935
 
11217
- <div class="doc doc-contents ">
11218
-
11936
+ <div class="doc doc-contents ">
11937
+
11219
11938
  <p>Get the content-type of this serializer's model.</p>
11220
11939
  <p>Implemented this way because <code>_value</code> may be None when generating the schema.</p>
11221
11940
 
11222
- </div>
11941
+ </div>
11223
11942
 
11224
11943
  </div>
11225
11944
 
@@ -11227,8 +11946,7 @@ could we then literally have the parser just return list(reader) and not need th
11227
11946
 
11228
11947
  </div>
11229
11948
 
11230
- </div>
11231
-
11949
+ </div>
11232
11950
 
11233
11951
  </div>
11234
11952
 
@@ -11237,20 +11955,20 @@ could we then literally have the parser just return list(reader) and not need th
11237
11955
 
11238
11956
 
11239
11957
  <h2 id="nautobot.apps.api.OptInFieldsMixin" class="doc doc-heading">
11240
- <code>nautobot.apps.api.OptInFieldsMixin</code>
11958
+ <code>nautobot.apps.api.OptInFieldsMixin</code>
11241
11959
 
11242
11960
 
11243
11961
  <a href="#nautobot.apps.api.OptInFieldsMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11244
11962
 
11245
11963
 
11246
- <div class="doc doc-contents ">
11964
+ <div class="doc doc-contents ">
11965
+
11247
11966
 
11248
-
11249
11967
  <p>A serializer mixin that takes an additional <code>opt_in_fields</code> argument that controls
11250
11968
  which fields should be displayed.</p>
11251
11969
 
11252
11970
 
11253
-
11971
+
11254
11972
 
11255
11973
  <div class="doc doc-children">
11256
11974
 
@@ -11265,8 +11983,8 @@ which fields should be displayed.</p>
11265
11983
 
11266
11984
 
11267
11985
  <h3 id="nautobot.apps.api.OptInFieldsMixin.fields" class="doc doc-heading">
11268
- <code class="highlight language-python"><span class="n">fields</span></code>
11269
-
11986
+ <code class="highlight language-python"><span class="n">fields</span></code>
11987
+
11270
11988
  <span class="doc doc-labels">
11271
11989
  <small class="doc doc-label doc-label-property"><code>property</code></small>
11272
11990
  </span>
@@ -11274,14 +11992,14 @@ which fields should be displayed.</p>
11274
11992
  <a href="#nautobot.apps.api.OptInFieldsMixin.fields" class="headerlink" title="Permanent link">&para;</a></h3>
11275
11993
 
11276
11994
 
11277
- <div class="doc doc-contents ">
11278
-
11995
+ <div class="doc doc-contents ">
11996
+
11279
11997
  <p>Removes all serializer fields specified in a serializers <code>opt_in_fields</code> list that aren't specified in the
11280
11998
  <code>include</code> query parameter.</p>
11281
11999
  <p>As an example, if the serializer specifies that <code>opt_in_fields = ["computed_fields"]</code>
11282
12000
  but <code>computed_fields</code> is not specified in the <code>?include</code> query parameter, <code>computed_fields</code> will be popped
11283
12001
  from the list of fields.</p>
11284
- </div>
12002
+ </div>
11285
12003
 
11286
12004
  </div>
11287
12005
 
@@ -11291,8 +12009,7 @@ from the list of fields.</p>
11291
12009
 
11292
12010
  </div>
11293
12011
 
11294
- </div>
11295
-
12012
+ </div>
11296
12013
 
11297
12014
  </div>
11298
12015
 
@@ -11301,22 +12018,21 @@ from the list of fields.</p>
11301
12018
 
11302
12019
 
11303
12020
  <h2 id="nautobot.apps.api.OrderedDefaultRouter" class="doc doc-heading">
11304
- <code>nautobot.apps.api.OrderedDefaultRouter</code>
12021
+ <code>nautobot.apps.api.OrderedDefaultRouter</code>
11305
12022
 
11306
12023
 
11307
12024
  <a href="#nautobot.apps.api.OrderedDefaultRouter" class="headerlink" title="Permanent link">&para;</a></h2>
11308
12025
 
11309
12026
 
11310
- <div class="doc doc-contents ">
11311
- <p class="doc doc-class-bases">
11312
- Bases: <code><span title="rest_framework.routers.DefaultRouter">DefaultRouter</span></code></p>
12027
+ <div class="doc doc-contents ">
12028
+ <p class="doc doc-class-bases">
12029
+ Bases: <code><span title="rest_framework.routers.DefaultRouter">DefaultRouter</span></code></p>
11313
12030
 
11314
12031
 
11315
12032
 
11316
-
11317
12033
 
11318
- <div class="doc doc-children">
11319
12034
 
12035
+ <div class="doc doc-children">
11320
12036
 
11321
12037
 
11322
12038
 
@@ -11329,38 +12045,35 @@ from the list of fields.</p>
11329
12045
  <div class="doc doc-object doc-function">
11330
12046
 
11331
12047
 
11332
-
11333
12048
  <h3 id="nautobot.apps.api.OrderedDefaultRouter.get_api_root_view" class="doc doc-heading">
11334
- <code class="highlight language-python"><span class="n">get_api_root_view</span><span class="p">(</span><span class="n">api_urls</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
12049
+ <code class="highlight language-python"><span class="n">get_api_root_view</span><span class="p">(</span><span class="n">api_urls</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
11335
12050
 
11336
12051
  <a href="#nautobot.apps.api.OrderedDefaultRouter.get_api_root_view" class="headerlink" title="Permanent link">&para;</a></h3>
11337
12052
 
11338
12053
 
11339
- <div class="doc doc-contents ">
11340
-
12054
+ <div class="doc doc-contents ">
12055
+
11341
12056
  <p>Wrap DRF's DefaultRouter to return an alphabetized list of endpoints.</p>
11342
12057
 
11343
- </div>
12058
+ </div>
11344
12059
 
11345
12060
  </div>
11346
12061
 
11347
-
11348
12062
  <div class="doc doc-object doc-function">
11349
12063
 
11350
12064
 
11351
-
11352
12065
  <h3 id="nautobot.apps.api.OrderedDefaultRouter.register" class="doc doc-heading">
11353
- <code class="highlight language-python"><span class="n">register</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">viewset</span><span class="p">,</span> <span class="n">basename</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
12066
+ <code class="highlight language-python"><span class="n">register</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">viewset</span><span class="p">,</span> <span class="n">basename</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
11354
12067
 
11355
12068
  <a href="#nautobot.apps.api.OrderedDefaultRouter.register" class="headerlink" title="Permanent link">&para;</a></h3>
11356
12069
 
11357
12070
 
11358
- <div class="doc doc-contents ">
11359
-
12071
+ <div class="doc doc-contents ">
12072
+
11360
12073
  <p>Override DRF's BaseRouter.register() to bypass an unnecessary restriction added in version 3.15.0.</p>
11361
12074
  <p>(Reference: https://github.com/encode/django-rest-framework/pull/8438)</p>
11362
12075
 
11363
- </div>
12076
+ </div>
11364
12077
 
11365
12078
  </div>
11366
12079
 
@@ -11368,8 +12081,7 @@ from the list of fields.</p>
11368
12081
 
11369
12082
  </div>
11370
12083
 
11371
- </div>
11372
-
12084
+ </div>
11373
12085
 
11374
12086
  </div>
11375
12087
 
@@ -11378,22 +12090,21 @@ from the list of fields.</p>
11378
12090
 
11379
12091
 
11380
12092
  <h2 id="nautobot.apps.api.ReadOnlyModelViewSet" class="doc doc-heading">
11381
- <code>nautobot.apps.api.ReadOnlyModelViewSet</code>
12093
+ <code>nautobot.apps.api.ReadOnlyModelViewSet</code>
11382
12094
 
11383
12095
 
11384
12096
  <a href="#nautobot.apps.api.ReadOnlyModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
11385
12097
 
11386
12098
 
11387
- <div class="doc doc-contents ">
11388
- <p class="doc doc-class-bases">
11389
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ReadOnlyModelViewSet">ReadOnlyModelViewSet</span></code></p>
12099
+ <div class="doc doc-contents ">
12100
+ <p class="doc doc-class-bases">
12101
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ReadOnlyModelViewSet">ReadOnlyModelViewSet</span></code></p>
11390
12102
 
11391
-
11392
- <p>Extend DRF's ReadOnlyModelViewSet to support queryset restriction.</p>
11393
12103
 
12104
+ <p>Extend DRF's ReadOnlyModelViewSet to support queryset restriction.</p>
11394
12105
 
11395
- </div>
11396
12106
 
12107
+ </div>
11397
12108
 
11398
12109
  </div>
11399
12110
 
@@ -11402,24 +12113,23 @@ from the list of fields.</p>
11402
12113
 
11403
12114
 
11404
12115
  <h2 id="nautobot.apps.api.RelationshipModelSerializerMixin" class="doc doc-heading">
11405
- <code>nautobot.apps.api.RelationshipModelSerializerMixin</code>
12116
+ <code>nautobot.apps.api.RelationshipModelSerializerMixin</code>
11406
12117
 
11407
12118
 
11408
12119
  <a href="#nautobot.apps.api.RelationshipModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11409
12120
 
11410
12121
 
11411
- <div class="doc doc-contents ">
11412
- <p class="doc doc-class-bases">
11413
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
12122
+ <div class="doc doc-contents ">
12123
+ <p class="doc doc-class-bases">
12124
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
12125
+
11414
12126
 
11415
-
11416
12127
  <p>Extend ValidatedModelSerializer with a <code>relationships</code> field.</p>
11417
12128
 
11418
12129
 
11419
-
11420
12130
 
11421
- <div class="doc doc-children">
11422
12131
 
12132
+ <div class="doc doc-children">
11423
12133
 
11424
12134
 
11425
12135
 
@@ -11432,18 +12142,17 @@ from the list of fields.</p>
11432
12142
  <div class="doc doc-object doc-function">
11433
12143
 
11434
12144
 
11435
-
11436
12145
  <h3 id="nautobot.apps.api.RelationshipModelSerializerMixin.get_field_names" class="doc doc-heading">
11437
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
12146
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11438
12147
 
11439
12148
  <a href="#nautobot.apps.api.RelationshipModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11440
12149
 
11441
12150
 
11442
- <div class="doc doc-contents ">
11443
-
12151
+ <div class="doc doc-contents ">
12152
+
11444
12153
  <p>Ensure that "relationships" is included as an opt-in field on root serializers.</p>
11445
12154
 
11446
- </div>
12155
+ </div>
11447
12156
 
11448
12157
  </div>
11449
12158
 
@@ -11451,8 +12160,7 @@ from the list of fields.</p>
11451
12160
 
11452
12161
  </div>
11453
12162
 
11454
- </div>
11455
-
12163
+ </div>
11456
12164
 
11457
12165
  </div>
11458
12166
 
@@ -11461,25 +12169,24 @@ from the list of fields.</p>
11461
12169
 
11462
12170
 
11463
12171
  <h2 id="nautobot.apps.api.SerializedPKRelatedField" class="doc doc-heading">
11464
- <code>nautobot.apps.api.SerializedPKRelatedField</code>
12172
+ <code>nautobot.apps.api.SerializedPKRelatedField</code>
11465
12173
 
11466
12174
 
11467
12175
  <a href="#nautobot.apps.api.SerializedPKRelatedField" class="headerlink" title="Permanent link">&para;</a></h2>
11468
12176
 
11469
12177
 
11470
- <div class="doc doc-contents ">
11471
- <p class="doc doc-class-bases">
11472
- Bases: <code><span title="rest_framework.relations.PrimaryKeyRelatedField">PrimaryKeyRelatedField</span></code></p>
12178
+ <div class="doc doc-contents ">
12179
+ <p class="doc doc-class-bases">
12180
+ Bases: <code><span title="rest_framework.relations.PrimaryKeyRelatedField">PrimaryKeyRelatedField</span></code></p>
12181
+
11473
12182
 
11474
-
11475
12183
  <p>Extends PrimaryKeyRelatedField to return a serialized object on read. This is useful for representing related
11476
12184
  objects in a ManyToManyField while still allowing a set of primary keys to be written.</p>
11477
12185
 
11478
12186
 
11479
-
11480
12187
 
11481
- <div class="doc doc-children">
11482
12188
 
12189
+ <div class="doc doc-children">
11483
12190
 
11484
12191
 
11485
12192
 
@@ -11490,10 +12197,10 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11490
12197
 
11491
12198
 
11492
12199
 
11493
- </div>
11494
12200
 
11495
12201
  </div>
11496
12202
 
12203
+ </div>
11497
12204
 
11498
12205
  </div>
11499
12206
 
@@ -11502,22 +12209,21 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11502
12209
 
11503
12210
 
11504
12211
  <h2 id="nautobot.apps.api.TaggedModelSerializerMixin" class="doc doc-heading">
11505
- <code>nautobot.apps.api.TaggedModelSerializerMixin</code>
12212
+ <code>nautobot.apps.api.TaggedModelSerializerMixin</code>
11506
12213
 
11507
12214
 
11508
12215
  <a href="#nautobot.apps.api.TaggedModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11509
12216
 
11510
12217
 
11511
- <div class="doc doc-contents ">
11512
- <p class="doc doc-class-bases">
11513
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12218
+ <div class="doc doc-contents ">
12219
+ <p class="doc doc-class-bases">
12220
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
11514
12221
 
11515
12222
 
11516
12223
 
11517
-
11518
12224
 
11519
- <div class="doc doc-children">
11520
12225
 
12226
+ <div class="doc doc-children">
11521
12227
 
11522
12228
 
11523
12229
 
@@ -11530,18 +12236,17 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11530
12236
  <div class="doc doc-object doc-function">
11531
12237
 
11532
12238
 
11533
-
11534
12239
  <h3 id="nautobot.apps.api.TaggedModelSerializerMixin.get_field_names" class="doc doc-heading">
11535
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
12240
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11536
12241
 
11537
12242
  <a href="#nautobot.apps.api.TaggedModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11538
12243
 
11539
12244
 
11540
- <div class="doc doc-contents ">
11541
-
12245
+ <div class="doc doc-contents ">
12246
+
11542
12247
  <p>Ensure that 'tags' field is always present except on nested serializers.</p>
11543
12248
 
11544
- </div>
12249
+ </div>
11545
12250
 
11546
12251
  </div>
11547
12252
 
@@ -11549,8 +12254,7 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11549
12254
 
11550
12255
  </div>
11551
12256
 
11552
- </div>
11553
-
12257
+ </div>
11554
12258
 
11555
12259
  </div>
11556
12260
 
@@ -11559,22 +12263,21 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11559
12263
 
11560
12264
 
11561
12265
  <h2 id="nautobot.apps.api.TimeZoneSerializerField" class="doc doc-heading">
11562
- <code>nautobot.apps.api.TimeZoneSerializerField</code>
12266
+ <code>nautobot.apps.api.TimeZoneSerializerField</code>
11563
12267
 
11564
12268
 
11565
12269
  <a href="#nautobot.apps.api.TimeZoneSerializerField" class="headerlink" title="Permanent link">&para;</a></h2>
11566
12270
 
11567
12271
 
11568
- <div class="doc doc-contents ">
11569
- <p class="doc doc-class-bases">
11570
- Bases: <code><span title="timezone_field.rest_framework.TimeZoneSerializerField">TimeZoneSerializerField</span></code></p>
12272
+ <div class="doc doc-contents ">
12273
+ <p class="doc doc-class-bases">
12274
+ Bases: <code><span title="timezone_field.rest_framework.TimeZoneSerializerField">TimeZoneSerializerField</span></code></p>
11571
12275
 
11572
-
11573
- <p>Represents a time zone as a string.</p>
11574
12276
 
12277
+ <p>Represents a time zone as a string.</p>
11575
12278
 
11576
- </div>
11577
12279
 
12280
+ </div>
11578
12281
 
11579
12282
  </div>
11580
12283
 
@@ -11583,24 +12286,23 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11583
12286
 
11584
12287
 
11585
12288
  <h2 id="nautobot.apps.api.TreeModelSerializerMixin" class="doc doc-heading">
11586
- <code>nautobot.apps.api.TreeModelSerializerMixin</code>
12289
+ <code>nautobot.apps.api.TreeModelSerializerMixin</code>
11587
12290
 
11588
12291
 
11589
12292
  <a href="#nautobot.apps.api.TreeModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11590
12293
 
11591
12294
 
11592
- <div class="doc doc-contents ">
11593
- <p class="doc doc-class-bases">
11594
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12295
+ <div class="doc doc-contents ">
12296
+ <p class="doc doc-class-bases">
12297
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12298
+
11595
12299
 
11596
-
11597
12300
  <p>Add a <code>tree_depth</code> field to non-nested model serializers based on django-tree-queries.</p>
11598
12301
 
11599
12302
 
11600
-
11601
12303
 
11602
- <div class="doc doc-children">
11603
12304
 
12305
+ <div class="doc doc-children">
11604
12306
 
11605
12307
 
11606
12308
 
@@ -11613,37 +12315,34 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11613
12315
  <div class="doc doc-object doc-function">
11614
12316
 
11615
12317
 
11616
-
11617
12318
  <h3 id="nautobot.apps.api.TreeModelSerializerMixin.get_field_names" class="doc doc-heading">
11618
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
12319
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11619
12320
 
11620
12321
  <a href="#nautobot.apps.api.TreeModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11621
12322
 
11622
12323
 
11623
- <div class="doc doc-contents ">
11624
-
12324
+ <div class="doc doc-contents ">
12325
+
11625
12326
  <p>Ensure that "tree_depth" is included on root serializers only, as nested objects are not annotated.</p>
11626
12327
 
11627
- </div>
12328
+ </div>
11628
12329
 
11629
12330
  </div>
11630
12331
 
11631
-
11632
12332
  <div class="doc doc-object doc-function">
11633
12333
 
11634
12334
 
11635
-
11636
12335
  <h3 id="nautobot.apps.api.TreeModelSerializerMixin.get_tree_depth" class="doc doc-heading">
11637
- <code class="highlight language-python"><span class="n">get_tree_depth</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span></code>
12336
+ <code class="highlight language-python"><span class="n">get_tree_depth</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span></code>
11638
12337
 
11639
12338
  <a href="#nautobot.apps.api.TreeModelSerializerMixin.get_tree_depth" class="headerlink" title="Permanent link">&para;</a></h3>
11640
12339
 
11641
12340
 
11642
- <div class="doc doc-contents ">
11643
-
12341
+ <div class="doc doc-contents ">
12342
+
11644
12343
  <p>The <code>tree_depth</code> is not a database field, but an annotation automatically added by django-tree-queries.</p>
11645
12344
 
11646
- </div>
12345
+ </div>
11647
12346
 
11648
12347
  </div>
11649
12348
 
@@ -11651,8 +12350,7 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11651
12350
 
11652
12351
  </div>
11653
12352
 
11654
- </div>
11655
-
12353
+ </div>
11656
12354
 
11657
12355
  </div>
11658
12356
 
@@ -11661,25 +12359,24 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11661
12359
 
11662
12360
 
11663
12361
  <h2 id="nautobot.apps.api.ValidatedModelSerializer" class="doc doc-heading">
11664
- <code>nautobot.apps.api.ValidatedModelSerializer</code>
12362
+ <code>nautobot.apps.api.ValidatedModelSerializer</code>
11665
12363
 
11666
12364
 
11667
12365
  <a href="#nautobot.apps.api.ValidatedModelSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
11668
12366
 
11669
12367
 
11670
- <div class="doc doc-contents ">
11671
- <p class="doc doc-class-bases">
11672
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12368
+ <div class="doc doc-contents ">
12369
+ <p class="doc doc-class-bases">
12370
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12371
+
11673
12372
 
11674
-
11675
12373
  <p>Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
11676
12374
  validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)</p>
11677
12375
 
11678
12376
 
11679
-
11680
12377
 
11681
- <div class="doc doc-children">
11682
12378
 
12379
+ <div class="doc doc-children">
11683
12380
 
11684
12381
 
11685
12382
 
@@ -11690,10 +12387,10 @@ validation. (DRF does not do this by default; see https://github.com/encode/djan
11690
12387
 
11691
12388
 
11692
12389
 
11693
- </div>
11694
12390
 
11695
12391
  </div>
11696
12392
 
12393
+ </div>
11697
12394
 
11698
12395
  </div>
11699
12396
 
@@ -11702,17 +12399,17 @@ validation. (DRF does not do this by default; see https://github.com/encode/djan
11702
12399
 
11703
12400
 
11704
12401
  <h2 id="nautobot.apps.api.WritableNestedSerializer" class="doc doc-heading">
11705
- <code>nautobot.apps.api.WritableNestedSerializer</code>
12402
+ <code>nautobot.apps.api.WritableNestedSerializer</code>
11706
12403
 
11707
12404
 
11708
12405
  <a href="#nautobot.apps.api.WritableNestedSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
11709
12406
 
11710
12407
 
11711
- <div class="doc doc-contents ">
11712
- <p class="doc doc-class-bases">
11713
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12408
+ <div class="doc doc-contents ">
12409
+ <p class="doc doc-class-bases">
12410
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12411
+
11714
12412
 
11715
-
11716
12413
  <p>Returns a nested representation of an object on read, but accepts either the nested representation or the
11717
12414
  primary key value on write operations.</p>
11718
12415
  <p>Note that subclasses will always have a read-only <code>object_type</code> field, which represents the content-type of this
@@ -11721,10 +12418,9 @@ PolymorphicProxySerializer class defined below, relies upon this field as a way
11721
12418
  which of several possible nested serializers are in use for a given attribute.</p>
11722
12419
 
11723
12420
 
11724
-
11725
12421
 
11726
- <div class="doc doc-children">
11727
12422
 
12423
+ <div class="doc doc-children">
11728
12424
 
11729
12425
 
11730
12426
 
@@ -11735,10 +12431,10 @@ which of several possible nested serializers are in use for a given attribute.</
11735
12431
 
11736
12432
 
11737
12433
 
11738
- </div>
11739
12434
 
11740
12435
  </div>
11741
12436
 
12437
+ </div>
11742
12438
 
11743
12439
  </div>
11744
12440
 
@@ -11747,15 +12443,15 @@ which of several possible nested serializers are in use for a given attribute.</
11747
12443
 
11748
12444
 
11749
12445
  <h2 id="nautobot.apps.api.WritableSerializerMixin" class="doc doc-heading">
11750
- <code>nautobot.apps.api.WritableSerializerMixin</code>
12446
+ <code>nautobot.apps.api.WritableSerializerMixin</code>
11751
12447
 
11752
12448
 
11753
12449
  <a href="#nautobot.apps.api.WritableSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11754
12450
 
11755
12451
 
11756
- <div class="doc doc-contents ">
12452
+ <div class="doc doc-contents ">
12453
+
11757
12454
 
11758
-
11759
12455
  <p>WritableSerializerMixin provides the to_internal_value() function.
11760
12456
  The function provides the ability to write API requests that identify unique objects based on
11761
12457
  combinations of fields other than the primary key.
@@ -11765,10 +12461,9 @@ vs
11765
12461
  "parent": "10dff139-7333-46b0-bef6-f6a5a7b5497c"</p>
11766
12462
 
11767
12463
 
11768
-
11769
12464
 
11770
- <div class="doc doc-children">
11771
12465
 
12466
+ <div class="doc doc-children">
11772
12467
 
11773
12468
 
11774
12469
 
@@ -11781,78 +12476,71 @@ vs
11781
12476
  <div class="doc doc-object doc-function">
11782
12477
 
11783
12478
 
11784
-
11785
12479
  <h3 id="nautobot.apps.api.WritableSerializerMixin.get_object" class="doc doc-heading">
11786
- <code class="highlight language-python"><span class="n">get_object</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
12480
+ <code class="highlight language-python"><span class="n">get_object</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
11787
12481
 
11788
12482
  <a href="#nautobot.apps.api.WritableSerializerMixin.get_object" class="headerlink" title="Permanent link">&para;</a></h3>
11789
12483
 
11790
12484
 
11791
- <div class="doc doc-contents ">
11792
-
12485
+ <div class="doc doc-contents ">
12486
+
11793
12487
  <p>Retrieve an unique object based on a dictionary of data attributes and raise errors accordingly if the object is not found.</p>
11794
12488
 
11795
- </div>
12489
+ </div>
11796
12490
 
11797
12491
  </div>
11798
12492
 
11799
-
11800
12493
  <div class="doc doc-object doc-function">
11801
12494
 
11802
12495
 
11803
-
11804
12496
  <h3 id="nautobot.apps.api.WritableSerializerMixin.get_queryset_filter_params" class="doc doc-heading">
11805
- <code class="highlight language-python"><span class="n">get_queryset_filter_params</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
12497
+ <code class="highlight language-python"><span class="n">get_queryset_filter_params</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
11806
12498
 
11807
12499
  <a href="#nautobot.apps.api.WritableSerializerMixin.get_queryset_filter_params" class="headerlink" title="Permanent link">&para;</a></h3>
11808
12500
 
11809
12501
 
11810
- <div class="doc doc-contents ">
11811
-
12502
+ <div class="doc doc-contents ">
12503
+
11812
12504
  <p>Data could be a dictionary and an int (for the User model) or a str that represents the primary key.
11813
12505
  If it is a dictionary, we return it after remove non-filter fields.
11814
12506
  If it is a primary key, we return a dictionary object formatted like this {"pk": pk}</p>
11815
12507
 
11816
- </div>
12508
+ </div>
11817
12509
 
11818
12510
  </div>
11819
12511
 
11820
-
11821
12512
  <div class="doc doc-object doc-function">
11822
12513
 
11823
12514
 
11824
-
11825
12515
  <h3 id="nautobot.apps.api.WritableSerializerMixin.remove_non_filter_fields" class="doc doc-heading">
11826
- <code class="highlight language-python"><span class="n">remove_non_filter_fields</span><span class="p">(</span><span class="n">filter_params</span><span class="p">)</span></code>
12516
+ <code class="highlight language-python"><span class="n">remove_non_filter_fields</span><span class="p">(</span><span class="n">filter_params</span><span class="p">)</span></code>
11827
12517
 
11828
12518
  <a href="#nautobot.apps.api.WritableSerializerMixin.remove_non_filter_fields" class="headerlink" title="Permanent link">&para;</a></h3>
11829
12519
 
11830
12520
 
11831
- <div class="doc doc-contents ">
11832
-
12521
+ <div class="doc doc-contents ">
12522
+
11833
12523
  <p>Make output from a WritableSerializer "round-trip" capable by automatically stripping from the
11834
12524
  data any serializer fields that do not correspond to a specific model field</p>
11835
12525
 
11836
- </div>
12526
+ </div>
11837
12527
 
11838
12528
  </div>
11839
12529
 
11840
-
11841
12530
  <div class="doc doc-object doc-function">
11842
12531
 
11843
12532
 
11844
-
11845
12533
  <h3 id="nautobot.apps.api.WritableSerializerMixin.to_internal_value" class="doc doc-heading">
11846
- <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
12534
+ <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
11847
12535
 
11848
12536
  <a href="#nautobot.apps.api.WritableSerializerMixin.to_internal_value" class="headerlink" title="Permanent link">&para;</a></h3>
11849
12537
 
11850
12538
 
11851
- <div class="doc doc-contents ">
11852
-
12539
+ <div class="doc doc-contents ">
12540
+
11853
12541
  <p>Return an object or a list of objects based on a dictionary of data attributes or an UUID.</p>
11854
12542
 
11855
- </div>
12543
+ </div>
11856
12544
 
11857
12545
  </div>
11858
12546
 
@@ -11860,25 +12548,22 @@ data any serializer fields that do not correspond to a specific model field</p>
11860
12548
 
11861
12549
  </div>
11862
12550
 
11863
- </div>
11864
-
12551
+ </div>
11865
12552
 
11866
12553
  </div>
11867
12554
 
11868
12555
 
11869
-
11870
12556
  <div class="doc doc-object doc-function">
11871
12557
 
11872
12558
 
11873
-
11874
12559
  <h2 id="nautobot.apps.api.dict_to_filter_params" class="doc doc-heading">
11875
- <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">api</span><span class="o">.</span><span class="n">dict_to_filter_params</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
12560
+ <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">api</span><span class="o">.</span><span class="n">dict_to_filter_params</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
11876
12561
 
11877
12562
  <a href="#nautobot.apps.api.dict_to_filter_params" class="headerlink" title="Permanent link">&para;</a></h2>
11878
12563
 
11879
12564
 
11880
- <div class="doc doc-contents ">
11881
-
12565
+ <div class="doc doc-contents ">
12566
+
11882
12567
  <p>Translate a dictionary of attributes to a nested set of parameters suitable for QuerySet filtering. For example:</p>
11883
12568
  <div class="highlight"><pre><span></span><code>{
11884
12569
  &quot;name&quot;: &quot;Foo&quot;,
@@ -11897,290 +12582,272 @@ data any serializer fields that do not correspond to a specific model field</p>
11897
12582
  <div class="highlight"><pre><span></span><code>Device.objects.filter(**dict_to_filter(attrs_dict))
11898
12583
  </code></pre></div>
11899
12584
 
11900
- </div>
12585
+ </div>
11901
12586
 
11902
12587
  </div>
11903
12588
 
11904
-
11905
12589
  <div class="doc doc-object doc-function">
11906
12590
 
11907
12591
 
11908
-
11909
12592
  <h2 id="nautobot.apps.api.dynamic_import" class="doc doc-heading">
11910
- <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">api</span><span class="o">.</span><span class="n">dynamic_import</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></code>
12593
+ <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">api</span><span class="o">.</span><span class="n">dynamic_import</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></code>
11911
12594
 
11912
12595
  <a href="#nautobot.apps.api.dynamic_import" class="headerlink" title="Permanent link">&para;</a></h2>
11913
12596
 
11914
12597
 
11915
- <div class="doc doc-contents ">
11916
-
12598
+ <div class="doc doc-contents ">
12599
+
11917
12600
  <p>Dynamically import a class from an absolute path string</p>
11918
12601
 
11919
- </div>
12602
+ </div>
11920
12603
 
11921
12604
  </div>
11922
12605
 
11923
-
11924
12606
  <div class="doc doc-object doc-function">
11925
12607
 
11926
12608
 
11927
-
11928
12609
  <h2 id="nautobot.apps.api.get_api_version_serializer" class="doc doc-heading">
11929
- <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">api</span><span class="o">.</span><span class="n">get_api_version_serializer</span><span class="p">(</span><span class="n">serializer_choices</span><span class="p">,</span> <span class="n">api_version</span><span class="p">)</span></code>
12610
+ <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">api</span><span class="o">.</span><span class="n">get_api_version_serializer</span><span class="p">(</span><span class="n">serializer_choices</span><span class="p">,</span> <span class="n">api_version</span><span class="p">)</span></code>
11930
12611
 
11931
12612
  <a href="#nautobot.apps.api.get_api_version_serializer" class="headerlink" title="Permanent link">&para;</a></h2>
11932
12613
 
11933
12614
 
11934
- <div class="doc doc-contents ">
11935
-
11936
- <p>Returns the serializer of an api_version</p>
12615
+ <div class="doc doc-contents ">
11937
12616
 
12617
+ <p>Returns the serializer of an api_version</p>
11938
12618
 
11939
12619
 
11940
- <p><strong>Parameters:</strong></p>
11941
- <table>
11942
- <thead>
11943
- <tr>
11944
- <th>Name</th>
11945
- <th>Type</th>
11946
- <th>Description</th>
11947
- <th>Default</th>
11948
- </tr>
11949
- </thead>
11950
- <tbody>
11951
- <tr>
11952
- <td><code>serializer_choices</code></td>
11953
- <td>
11954
- <code>tuple</code>
11955
- </td>
11956
- <td>
11957
- <div class="doc-md-description">
11958
- <p>list of SerializerVersions</p>
11959
- </div>
11960
- </td>
11961
- <td>
11962
- <em>required</em>
11963
- </td>
11964
- </tr>
12620
+ <p><span class="doc-section-title">Parameters:</span></p>
12621
+ <table>
12622
+ <thead>
11965
12623
  <tr>
11966
- <td><code>api_version</code></td>
11967
- <td>
11968
- <code>str</code>
11969
- </td>
11970
- <td>
11971
- <div class="doc-md-description">
11972
- <p>Request API version</p>
11973
- </div>
11974
- </td>
11975
- <td>
11976
- <em>required</em>
11977
- </td>
12624
+ <th>Name</th>
12625
+ <th>Type</th>
12626
+ <th>Description</th>
12627
+ <th>Default</th>
11978
12628
  </tr>
11979
- </tbody>
11980
- </table>
11981
-
11982
-
11983
-
11984
- <p><strong>Returns:</strong></p>
11985
- <table>
11986
- <thead>
11987
- <tr>
11988
- <th>Type</th>
11989
- <th>Description</th>
11990
- </tr>
11991
- </thead>
11992
- <tbody>
12629
+ </thead>
12630
+ <tbody>
12631
+ <tr class="doc-section-item">
12632
+ <td><code>serializer_choices</code></td>
12633
+ <td>
12634
+ <code>tuple</code>
12635
+ </td>
12636
+ <td>
12637
+ <div class="doc-md-description">
12638
+ <p>list of SerializerVersions</p>
12639
+ </div>
12640
+ </td>
12641
+ <td>
12642
+ <em>required</em>
12643
+ </td>
12644
+ </tr>
12645
+ <tr class="doc-section-item">
12646
+ <td><code>api_version</code></td>
12647
+ <td>
12648
+ <code>str</code>
12649
+ </td>
12650
+ <td>
12651
+ <div class="doc-md-description">
12652
+ <p>Request API version</p>
12653
+ </div>
12654
+ </td>
12655
+ <td>
12656
+ <em>required</em>
12657
+ </td>
12658
+ </tr>
12659
+ </tbody>
12660
+ </table>
12661
+
12662
+
12663
+ <p><span class="doc-section-title">Returns:</span></p>
12664
+ <table>
12665
+ <thead>
11993
12666
  <tr>
11994
- <td>
11995
- <code>Serializer</code>
11996
- </td>
11997
- <td>
11998
- <div class="doc-md-description">
11999
- <p>the serializer for the api_version if found in serializer_choices else None</p>
12000
- </div>
12001
- </td>
12667
+ <th>Type</th>
12668
+ <th>Description</th>
12002
12669
  </tr>
12003
- </tbody>
12004
- </table>
12670
+ </thead>
12671
+ <tbody>
12672
+ <tr class="doc-section-item">
12673
+ <td>
12674
+ <code>Serializer</code>
12675
+ </td>
12676
+ <td>
12677
+ <div class="doc-md-description">
12678
+ <p>the serializer for the api_version if found in serializer_choices else None</p>
12679
+ </div>
12680
+ </td>
12681
+ </tr>
12682
+ </tbody>
12683
+ </table>
12005
12684
 
12006
- </div>
12685
+ </div>
12007
12686
 
12008
12687
  </div>
12009
12688
 
12010
-
12011
12689
  <div class="doc doc-object doc-function">
12012
12690
 
12013
12691
 
12014
-
12015
12692
  <h2 id="nautobot.apps.api.get_serializer_for_model" class="doc doc-heading">
12016
- <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">api</span><span class="o">.</span><span class="n">get_serializer_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
12693
+ <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">api</span><span class="o">.</span><span class="n">get_serializer_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
12017
12694
 
12018
12695
  <a href="#nautobot.apps.api.get_serializer_for_model" class="headerlink" title="Permanent link">&para;</a></h2>
12019
12696
 
12020
12697
 
12021
- <div class="doc doc-contents ">
12022
-
12023
- <p>Dynamically resolve and return the appropriate serializer for a model.</p>
12698
+ <div class="doc doc-contents ">
12024
12699
 
12700
+ <p>Dynamically resolve and return the appropriate serializer for a model.</p>
12025
12701
 
12026
12702
 
12027
- <p><strong>Raises:</strong></p>
12028
- <table>
12029
- <thead>
12030
- <tr>
12031
- <th>Type</th>
12032
- <th>Description</th>
12033
- </tr>
12034
- </thead>
12035
- <tbody>
12703
+ <p><span class="doc-section-title">Raises:</span></p>
12704
+ <table>
12705
+ <thead>
12036
12706
  <tr>
12037
- <td>
12038
- <code>SerializerNotFound</code>
12039
- </td>
12040
- <td>
12041
- <div class="doc-md-description">
12042
- <p>if the requested serializer cannot be located.</p>
12043
- </div>
12044
- </td>
12707
+ <th>Type</th>
12708
+ <th>Description</th>
12045
12709
  </tr>
12046
- </tbody>
12047
- </table>
12710
+ </thead>
12711
+ <tbody>
12712
+ <tr class="doc-section-item">
12713
+ <td>
12714
+ <code>SerializerNotFound</code>
12715
+ </td>
12716
+ <td>
12717
+ <div class="doc-md-description">
12718
+ <p>if the requested serializer cannot be located.</p>
12719
+ </div>
12720
+ </td>
12721
+ </tr>
12722
+ </tbody>
12723
+ </table>
12048
12724
 
12049
- </div>
12725
+ </div>
12050
12726
 
12051
12727
  </div>
12052
12728
 
12053
-
12054
12729
  <div class="doc doc-object doc-function">
12055
12730
 
12056
12731
 
12057
-
12058
12732
  <h2 id="nautobot.apps.api.get_view_name" class="doc doc-heading">
12059
- <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">api</span><span class="o">.</span><span class="n">get_view_name</span><span class="p">(</span><span class="n">view</span><span class="p">)</span></code>
12733
+ <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">api</span><span class="o">.</span><span class="n">get_view_name</span><span class="p">(</span><span class="n">view</span><span class="p">)</span></code>
12060
12734
 
12061
12735
  <a href="#nautobot.apps.api.get_view_name" class="headerlink" title="Permanent link">&para;</a></h2>
12062
12736
 
12063
12737
 
12064
- <div class="doc doc-contents ">
12065
-
12738
+ <div class="doc doc-contents ">
12739
+
12066
12740
  <p>Derive the view name from its associated model, if it has one. Fall back to DRF's built-in <code>get_view_name</code>.</p>
12067
12741
 
12068
- </div>
12742
+ </div>
12069
12743
 
12070
12744
  </div>
12071
12745
 
12072
-
12073
12746
  <div class="doc doc-object doc-function">
12074
12747
 
12075
12748
 
12076
-
12077
12749
  <h2 id="nautobot.apps.api.is_api_request" class="doc doc-heading">
12078
- <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">api</span><span class="o">.</span><span class="n">is_api_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span></code>
12750
+ <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">api</span><span class="o">.</span><span class="n">is_api_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span></code>
12079
12751
 
12080
12752
  <a href="#nautobot.apps.api.is_api_request" class="headerlink" title="Permanent link">&para;</a></h2>
12081
12753
 
12082
12754
 
12083
- <div class="doc doc-contents ">
12084
-
12755
+ <div class="doc doc-contents ">
12756
+
12085
12757
  <p>Return True of the request is being made via the REST API.</p>
12086
12758
 
12087
- </div>
12759
+ </div>
12088
12760
 
12089
12761
  </div>
12090
12762
 
12091
-
12092
12763
  <div class="doc doc-object doc-function">
12093
12764
 
12094
12765
 
12095
-
12096
12766
  <h2 id="nautobot.apps.api.rest_api_server_error" class="doc doc-heading">
12097
- <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">api</span><span class="o">.</span><span class="n">rest_api_server_error</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
12767
+ <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">api</span><span class="o">.</span><span class="n">rest_api_server_error</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
12098
12768
 
12099
12769
  <a href="#nautobot.apps.api.rest_api_server_error" class="headerlink" title="Permanent link">&para;</a></h2>
12100
12770
 
12101
12771
 
12102
- <div class="doc doc-contents ">
12103
-
12772
+ <div class="doc doc-contents ">
12773
+
12104
12774
  <p>Handle exceptions and return a useful error message for REST API requests.</p>
12105
12775
 
12106
- </div>
12776
+ </div>
12107
12777
 
12108
12778
  </div>
12109
12779
 
12110
-
12111
12780
  <div class="doc doc-object doc-function">
12112
12781
 
12113
12782
 
12114
-
12115
12783
  <h2 id="nautobot.apps.api.versioned_serializer_selector" class="doc doc-heading">
12116
- <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">api</span><span class="o">.</span><span class="n">versioned_serializer_selector</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">serializer_choices</span><span class="p">,</span> <span class="n">default_serializer</span><span class="p">)</span></code>
12784
+ <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">api</span><span class="o">.</span><span class="n">versioned_serializer_selector</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">serializer_choices</span><span class="p">,</span> <span class="n">default_serializer</span><span class="p">)</span></code>
12117
12785
 
12118
12786
  <a href="#nautobot.apps.api.versioned_serializer_selector" class="headerlink" title="Permanent link">&para;</a></h2>
12119
12787
 
12120
12788
 
12121
- <div class="doc doc-contents ">
12122
-
12123
- <p>Returns appropriate serializer class depending on request api_version, and swagger_fake_view</p>
12789
+ <div class="doc doc-contents ">
12124
12790
 
12791
+ <p>Returns appropriate serializer class depending on request api_version, and swagger_fake_view</p>
12125
12792
 
12126
12793
 
12127
- <p><strong>Parameters:</strong></p>
12128
- <table>
12129
- <thead>
12130
- <tr>
12131
- <th>Name</th>
12132
- <th>Type</th>
12133
- <th>Description</th>
12134
- <th>Default</th>
12135
- </tr>
12136
- </thead>
12137
- <tbody>
12794
+ <p><span class="doc-section-title">Parameters:</span></p>
12795
+ <table>
12796
+ <thead>
12138
12797
  <tr>
12139
- <td><code>obj</code></td>
12140
- <td>
12141
- <code>ViewSet instance</code>
12142
- </td>
12143
- <td>
12144
- <div class="doc-md-description">
12145
-
12146
- </div>
12147
- </td>
12148
- <td>
12149
- <em>required</em>
12150
- </td>
12151
- </tr>
12152
- <tr>
12153
- <td><code>serializer_choices</code></td>
12154
- <td>
12155
- <code>tuple</code>
12156
- </td>
12157
- <td>
12158
- <div class="doc-md-description">
12159
- <p>Tuple of SerializerVersions</p>
12160
- </div>
12161
- </td>
12162
- <td>
12163
- <em>required</em>
12164
- </td>
12165
- </tr>
12166
- <tr>
12167
- <td><code>default_serializer</code></td>
12168
- <td>
12169
- <code>Serializer</code>
12170
- </td>
12171
- <td>
12172
- <div class="doc-md-description">
12173
- <p>Default Serializer class</p>
12174
- </div>
12175
- </td>
12176
- <td>
12177
- <em>required</em>
12178
- </td>
12798
+ <th>Name</th>
12799
+ <th>Type</th>
12800
+ <th>Description</th>
12801
+ <th>Default</th>
12179
12802
  </tr>
12180
- </tbody>
12181
- </table>
12803
+ </thead>
12804
+ <tbody>
12805
+ <tr class="doc-section-item">
12806
+ <td><code>obj</code></td>
12807
+ <td>
12808
+ <code>ViewSet instance</code>
12809
+ </td>
12810
+ <td>
12811
+ <div class="doc-md-description">
12812
+
12813
+ </div>
12814
+ </td>
12815
+ <td>
12816
+ <em>required</em>
12817
+ </td>
12818
+ </tr>
12819
+ <tr class="doc-section-item">
12820
+ <td><code>serializer_choices</code></td>
12821
+ <td>
12822
+ <code>tuple</code>
12823
+ </td>
12824
+ <td>
12825
+ <div class="doc-md-description">
12826
+ <p>Tuple of SerializerVersions</p>
12827
+ </div>
12828
+ </td>
12829
+ <td>
12830
+ <em>required</em>
12831
+ </td>
12832
+ </tr>
12833
+ <tr class="doc-section-item">
12834
+ <td><code>default_serializer</code></td>
12835
+ <td>
12836
+ <code>Serializer</code>
12837
+ </td>
12838
+ <td>
12839
+ <div class="doc-md-description">
12840
+ <p>Default Serializer class</p>
12841
+ </div>
12842
+ </td>
12843
+ <td>
12844
+ <em>required</em>
12845
+ </td>
12846
+ </tr>
12847
+ </tbody>
12848
+ </table>
12182
12849
 
12183
- </div>
12850
+ </div>
12184
12851
 
12185
12852
  </div>
12186
12853
 
@@ -12188,7 +12855,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12188
12855
 
12189
12856
  </div>
12190
12857
 
12191
- </div>
12858
+ </div>
12192
12859
 
12193
12860
  </div>
12194
12861