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

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

Potentially problematic release.


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

Files changed (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 +113 -0
  26. nautobot/cloud/filters.py +187 -0
  27. nautobot/cloud/forms.py +339 -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 +246 -0
  32. nautobot/cloud/navigation.py +85 -0
  33. nautobot/cloud/tables.py +157 -0
  34. nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +43 -0
  35. nautobot/cloud/templates/cloud/cloudnetwork_retrieve.html +122 -0
  36. nautobot/cloud/templates/cloud/cloudnetwork_update.html +33 -0
  37. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +111 -0
  38. nautobot/cloud/templates/cloud/cloudservice_retrieve.html +69 -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 +125 -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 +95 -13
  57. nautobot/core/forms/fields.py +10 -4
  58. nautobot/core/forms/forms.py +11 -3
  59. nautobot/core/forms/widgets.py +18 -1
  60. nautobot/core/graphql/schema.py +26 -4
  61. nautobot/core/jobs/__init__.py +16 -2
  62. nautobot/core/jobs/cleanup.py +100 -0
  63. nautobot/core/jobs/groups.py +38 -0
  64. nautobot/core/management/commands/generate_test_data.py +116 -3
  65. nautobot/core/models/__init__.py +34 -9
  66. nautobot/core/models/generics.py +19 -3
  67. nautobot/core/models/name_color_content_types.py +7 -28
  68. nautobot/core/models/querysets.py +4 -3
  69. nautobot/core/models/tree_queries.py +1 -1
  70. nautobot/core/models/utils.py +21 -5
  71. nautobot/core/settings.py +2 -17
  72. nautobot/core/settings.yaml +34 -13
  73. nautobot/core/settings_funcs.py +103 -0
  74. nautobot/core/tables.py +130 -56
  75. nautobot/core/templates/admin/search_form.html +1 -1
  76. nautobot/core/templates/buttons/add.html +11 -3
  77. nautobot/core/templates/buttons/consolidated_bulk_action_buttons.html +13 -0
  78. nautobot/core/templates/buttons/consolidated_detail_view_action_buttons.html +13 -0
  79. nautobot/core/templates/buttons/export.html +101 -53
  80. nautobot/core/templates/buttons/job_import.html +11 -3
  81. nautobot/core/templates/generic/object_bulk_destroy.html +3 -1
  82. nautobot/core/templates/generic/object_bulk_update.html +3 -1
  83. nautobot/core/templates/generic/object_changelog.html +0 -9
  84. nautobot/core/templates/generic/object_list.html +156 -17
  85. nautobot/core/templates/generic/object_retrieve.html +80 -16
  86. nautobot/core/templates/inc/extras_features_edit_form_fields.html +8 -0
  87. nautobot/core/templates/inc/javascript.html +2 -0
  88. nautobot/core/templates/inc/media.html +2 -2
  89. nautobot/core/templates/inc/nav_menu.html +1 -0
  90. nautobot/core/templates/inc/paginator.html +7 -7
  91. nautobot/core/templates/inc/search_panel.html +2 -2
  92. nautobot/core/templates/inc/table.html +2 -2
  93. nautobot/core/templates/nautobot_config.py.j2 +13 -8
  94. nautobot/core/templates/utilities/templatetags/dynamic_group_assignment_modal.html +37 -0
  95. nautobot/core/templates/utilities/templatetags/filter_form_modal.html +2 -2
  96. nautobot/core/templates/utilities/templatetags/saved_view_modal.html +38 -0
  97. nautobot/core/templates/utilities/theme_preview.html +25 -8
  98. nautobot/core/templates/utilities/worker_status.html +152 -0
  99. nautobot/core/templatetags/buttons.py +335 -38
  100. nautobot/core/templatetags/form_helpers.py +1 -1
  101. nautobot/core/templatetags/helpers.py +181 -11
  102. nautobot/core/testing/api.py +5 -4
  103. nautobot/core/testing/filters.py +63 -14
  104. nautobot/core/testing/mixins.py +46 -0
  105. nautobot/core/testing/models.py +22 -0
  106. nautobot/core/testing/schema.py +4 -8
  107. nautobot/core/testing/views.py +31 -14
  108. nautobot/core/tests/integration/test_import_objects_ui.py +1 -0
  109. nautobot/core/tests/integration/test_swagger.py +1 -1
  110. nautobot/core/tests/nautobot_config.py +0 -1
  111. nautobot/core/tests/runner.py +2 -2
  112. nautobot/core/tests/test_api.py +1 -0
  113. nautobot/core/tests/test_authentication.py +7 -2
  114. nautobot/core/tests/test_filters.py +11 -9
  115. nautobot/core/tests/test_forms.py +9 -0
  116. nautobot/core/tests/test_graphql.py +27 -16
  117. nautobot/core/tests/test_jobs.py +122 -0
  118. nautobot/core/tests/test_tables.py +3 -1
  119. nautobot/core/tests/test_templatetags_helpers.py +12 -5
  120. nautobot/core/tests/test_utils.py +31 -20
  121. nautobot/core/tests/test_views.py +6 -6
  122. nautobot/core/urls.py +8 -3
  123. nautobot/core/utils/deprecation.py +29 -0
  124. nautobot/core/utils/filtering.py +12 -9
  125. nautobot/core/utils/lookup.py +37 -2
  126. nautobot/core/utils/requests.py +4 -1
  127. nautobot/core/views/__init__.py +137 -24
  128. nautobot/core/views/generic.py +119 -67
  129. nautobot/core/views/mixins.py +105 -36
  130. nautobot/core/views/paginator.py +9 -3
  131. nautobot/core/views/renderers.py +121 -56
  132. nautobot/core/views/utils.py +81 -1
  133. nautobot/dcim/__init__.py +0 -1
  134. nautobot/dcim/api/serializers.py +180 -44
  135. nautobot/dcim/api/urls.py +7 -3
  136. nautobot/dcim/api/views.py +53 -7
  137. nautobot/dcim/apps.py +3 -0
  138. nautobot/dcim/choices.py +25 -0
  139. nautobot/dcim/constants.py +7 -0
  140. nautobot/dcim/factory.py +252 -18
  141. nautobot/dcim/filters/__init__.py +373 -193
  142. nautobot/dcim/filters/mixins.py +274 -1
  143. nautobot/dcim/forms.py +834 -121
  144. nautobot/dcim/graphql/types.py +2 -2
  145. nautobot/dcim/homepage.py +1 -1
  146. nautobot/dcim/migrations/0059_add_role_field_to_interface_models.py +27 -0
  147. nautobot/dcim/migrations/0060_alter_cable_status_alter_consoleport__path_and_more.py +303 -0
  148. nautobot/dcim/migrations/0061_module_models.py +862 -0
  149. nautobot/dcim/migrations/0062_module_data_migration.py +25 -0
  150. nautobot/dcim/models/__init__.py +8 -0
  151. nautobot/dcim/models/cables.py +15 -0
  152. nautobot/dcim/models/device_component_templates.py +207 -53
  153. nautobot/dcim/models/device_components.py +275 -99
  154. nautobot/dcim/models/devices.py +468 -13
  155. nautobot/dcim/models/racks.py +0 -1
  156. nautobot/dcim/navigation.py +47 -0
  157. nautobot/dcim/signals.py +3 -3
  158. nautobot/dcim/tables/__init__.py +35 -23
  159. nautobot/dcim/tables/devices.py +229 -43
  160. nautobot/dcim/tables/devicetypes.py +65 -9
  161. nautobot/dcim/tables/racks.py +5 -1
  162. nautobot/dcim/tables/template_code.py +46 -26
  163. nautobot/dcim/templates/dcim/cable_connect.html +76 -3
  164. nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -5
  165. nautobot/dcim/templates/dcim/device/base.html +14 -6
  166. nautobot/dcim/templates/dcim/device/consoleports.html +2 -3
  167. nautobot/dcim/templates/dcim/device/consoleserverports.html +2 -3
  168. nautobot/dcim/templates/dcim/device/devicebays.html +6 -7
  169. nautobot/dcim/templates/dcim/device/frontports.html +2 -3
  170. nautobot/dcim/templates/dcim/device/interfaces.html +2 -3
  171. nautobot/dcim/templates/dcim/device/inventory.html +2 -3
  172. nautobot/dcim/templates/dcim/device/modulebays.html +49 -0
  173. nautobot/dcim/templates/dcim/device/poweroutlets.html +2 -3
  174. nautobot/dcim/templates/dcim/device/powerports.html +2 -3
  175. nautobot/dcim/templates/dcim/device/rearports.html +2 -3
  176. nautobot/dcim/templates/dcim/device.html +45 -1
  177. nautobot/dcim/templates/dcim/device_component.html +13 -5
  178. nautobot/dcim/templates/dcim/device_list.html +2 -1
  179. nautobot/dcim/templates/dcim/devicetype.html +99 -98
  180. nautobot/dcim/templates/dcim/devicetype_list.html +8 -16
  181. nautobot/dcim/templates/dcim/inc/devicetype_component_table.html +1 -1
  182. nautobot/dcim/templates/dcim/inc/moduletype_component_table.html +39 -0
  183. nautobot/dcim/templates/dcim/interface.html +17 -2
  184. nautobot/dcim/templates/dcim/interface_connection_list.html +7 -5
  185. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  186. nautobot/dcim/templates/dcim/manufacturer.html +24 -0
  187. nautobot/dcim/templates/dcim/module/base.html +97 -0
  188. nautobot/dcim/templates/dcim/module_bulk_destroy.html +5 -0
  189. nautobot/dcim/templates/dcim/module_consoleports.html +53 -0
  190. nautobot/dcim/templates/dcim/module_consoleserverports.html +53 -0
  191. nautobot/dcim/templates/dcim/module_destroy.html +5 -0
  192. nautobot/dcim/templates/dcim/module_frontports.html +53 -0
  193. nautobot/dcim/templates/dcim/module_interfaces.html +57 -0
  194. nautobot/dcim/templates/dcim/module_list.html +20 -0
  195. nautobot/dcim/templates/dcim/module_modulebays.html +49 -0
  196. nautobot/dcim/templates/dcim/module_poweroutlets.html +53 -0
  197. nautobot/dcim/templates/dcim/module_powerports.html +53 -0
  198. nautobot/dcim/templates/dcim/module_rearports.html +53 -0
  199. nautobot/dcim/templates/dcim/module_retrieve.html +63 -0
  200. nautobot/dcim/templates/dcim/module_update.html +71 -0
  201. nautobot/dcim/templates/dcim/modulebay_bulk_destroy.html +5 -0
  202. nautobot/dcim/templates/dcim/modulebay_destroy.html +8 -0
  203. nautobot/dcim/templates/dcim/modulebay_retrieve.html +101 -0
  204. nautobot/dcim/templates/dcim/moduletype_list.html +11 -0
  205. nautobot/dcim/templates/dcim/moduletype_retrieve.html +159 -0
  206. nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -5
  207. nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +65 -19
  208. nautobot/dcim/tests/integration/test_cable_connect_form.py +4 -4
  209. nautobot/dcim/tests/test_api.py +693 -208
  210. nautobot/dcim/tests/test_filters.py +843 -217
  211. nautobot/dcim/tests/test_models.py +1072 -8
  212. nautobot/dcim/tests/test_views.py +1510 -341
  213. nautobot/dcim/urls.py +17 -2
  214. nautobot/dcim/utils.py +2 -3
  215. nautobot/dcim/views.py +1106 -116
  216. nautobot/extras/__init__.py +0 -1
  217. nautobot/extras/api/serializers.py +115 -3
  218. nautobot/extras/api/urls.py +12 -0
  219. nautobot/extras/api/views.py +66 -0
  220. nautobot/extras/apps.py +2 -2
  221. nautobot/extras/choices.py +43 -0
  222. nautobot/extras/context_managers.py +13 -8
  223. nautobot/extras/datasources/git.py +2 -0
  224. nautobot/extras/factory.py +460 -9
  225. nautobot/extras/filters/__init__.py +174 -3
  226. nautobot/extras/filters/mixins.py +46 -43
  227. nautobot/extras/forms/base.py +24 -5
  228. nautobot/extras/forms/forms.py +227 -8
  229. nautobot/extras/forms/mixins.py +93 -0
  230. nautobot/extras/graphql/types.py +23 -10
  231. nautobot/extras/homepage.py +14 -1
  232. nautobot/extras/management/__init__.py +1 -0
  233. nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -16
  234. nautobot/extras/migrations/0021_customfield_changelog_data.py +1 -0
  235. nautobot/extras/migrations/0109_dynamicgroup_group_type_dynamicgroup_tags_and_more.py +108 -0
  236. nautobot/extras/migrations/0110_alter_configcontext_cluster_groups_and_more.py +111 -0
  237. nautobot/extras/migrations/0111_metadata.py +162 -0
  238. nautobot/extras/migrations/0112_dynamic_group_group_type_data_migration.py +28 -0
  239. nautobot/extras/migrations/0113_saved_views.py +77 -0
  240. nautobot/extras/models/__init__.py +15 -1
  241. nautobot/extras/models/change_logging.py +3 -3
  242. nautobot/extras/models/contacts.py +4 -0
  243. nautobot/extras/models/customfields.py +18 -3
  244. nautobot/extras/models/groups.py +389 -225
  245. nautobot/extras/models/jobs.py +6 -3
  246. nautobot/extras/models/metadata.py +441 -0
  247. nautobot/extras/models/mixins.py +72 -62
  248. nautobot/extras/models/models.py +118 -9
  249. nautobot/extras/models/relationships.py +9 -2
  250. nautobot/extras/models/tags.py +13 -2
  251. nautobot/extras/navigation.py +57 -0
  252. nautobot/extras/plugins/__init__.py +3 -1
  253. nautobot/extras/querysets.py +30 -66
  254. nautobot/extras/signals.py +95 -100
  255. nautobot/extras/tables.py +165 -12
  256. nautobot/extras/templates/extras/dynamicgroup.html +44 -15
  257. nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -0
  258. nautobot/extras/templates/extras/job.html +1 -1
  259. nautobot/extras/templates/extras/jobresult.html +61 -74
  260. nautobot/extras/templates/extras/metadatatype_create.html +89 -0
  261. nautobot/extras/templates/extras/metadatatype_retrieve.html +67 -0
  262. nautobot/extras/templates/extras/object_dynamicgroups.html +7 -0
  263. nautobot/extras/templates/extras/objectchange_list.html +0 -12
  264. nautobot/extras/templates/extras/plugins_list.html +1 -3
  265. nautobot/extras/templates/extras/role_retrieve.html +48 -0
  266. nautobot/extras/templates/extras/staticgroupassociation_retrieve.html +20 -0
  267. nautobot/extras/tests/integration/test_customfields.py +1 -0
  268. nautobot/extras/tests/test_api.py +509 -23
  269. nautobot/extras/tests/test_changelog.py +20 -9
  270. nautobot/extras/tests/test_context_managers.py +22 -15
  271. nautobot/extras/tests/test_datasources.py +13 -1
  272. nautobot/extras/tests/test_dynamicgroups.py +201 -171
  273. nautobot/extras/tests/test_filters.py +211 -12
  274. nautobot/extras/tests/test_jobs.py +6 -6
  275. nautobot/extras/tests/test_models.py +501 -4
  276. nautobot/extras/tests/test_relationships.py +1 -0
  277. nautobot/extras/tests/test_views.py +565 -8
  278. nautobot/extras/tests/test_webhooks.py +1 -1
  279. nautobot/extras/urls.py +5 -0
  280. nautobot/extras/utils.py +51 -11
  281. nautobot/extras/views.py +542 -76
  282. nautobot/ipam/__init__.py +0 -1
  283. nautobot/ipam/apps.py +1 -0
  284. nautobot/ipam/factory.py +17 -19
  285. nautobot/ipam/filters.py +13 -0
  286. nautobot/ipam/forms.py +8 -4
  287. nautobot/ipam/graphql/types.py +2 -2
  288. nautobot/ipam/migrations/0047_alter_ipaddress_role_alter_ipaddress_status_and_more.py +59 -0
  289. nautobot/ipam/models.py +11 -8
  290. nautobot/ipam/querysets.py +1 -1
  291. nautobot/ipam/signals.py +4 -2
  292. nautobot/ipam/tables.py +5 -0
  293. nautobot/ipam/templates/ipam/ipaddress_interfaces.html +1 -1
  294. nautobot/ipam/templates/ipam/ipaddress_vm_interfaces.html +1 -1
  295. nautobot/ipam/templates/ipam/prefix.html +1 -0
  296. nautobot/ipam/tests/test_api.py +37 -18
  297. nautobot/ipam/tests/test_filters.py +26 -2
  298. nautobot/ipam/tests/test_models.py +6 -0
  299. nautobot/ipam/tests/test_querysets.py +1 -1
  300. nautobot/ipam/tests/test_views.py +3 -2
  301. nautobot/ipam/urls.py +2 -2
  302. nautobot/ipam/views.py +18 -26
  303. nautobot/project-static/css/base.css +20 -0
  304. nautobot/project-static/css/dark.css +11 -0
  305. nautobot/project-static/docs/404.html +892 -88
  306. nautobot/project-static/docs/apps/index.html +892 -88
  307. nautobot/project-static/docs/apps/nautobot-apps.html +892 -88
  308. nautobot/project-static/docs/assets/_mkdocstrings.css +5 -0
  309. nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css +1 -0
  310. nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
  311. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +919 -120
  312. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +904 -101
  313. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1618 -903
  314. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +935 -144
  315. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +977 -188
  316. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +901 -99
  317. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +897 -93
  318. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +991 -193
  319. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +974 -131
  320. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1078 -272
  321. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1242 -334
  322. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1727 -875
  323. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +1164 -381
  324. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2088 -1374
  325. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +2246 -1422
  326. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +912 -111
  327. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +963 -163
  328. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1010 -223
  329. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +1913 -1277
  330. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +1846 -1102
  331. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +904 -101
  332. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +2331 -1699
  333. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1802 -1024
  334. nautobot/project-static/docs/development/apps/api/configuration-view.html +892 -88
  335. nautobot/project-static/docs/development/apps/api/database-backend-config.html +892 -88
  336. nautobot/project-static/docs/development/apps/api/models/django-admin.html +892 -88
  337. nautobot/project-static/docs/development/apps/api/models/global-search.html +892 -88
  338. nautobot/project-static/docs/development/apps/api/models/graphql.html +892 -88
  339. nautobot/project-static/docs/development/apps/api/models/index.html +942 -90
  340. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +892 -88
  341. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +892 -88
  342. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +892 -88
  343. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +892 -88
  344. nautobot/project-static/docs/development/apps/api/platform-features/index.html +892 -88
  345. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +892 -88
  346. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +892 -88
  347. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +892 -88
  348. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +892 -88
  349. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +892 -88
  350. nautobot/project-static/docs/development/apps/api/prometheus.html +892 -88
  351. nautobot/project-static/docs/development/apps/api/setup.html +892 -88
  352. nautobot/project-static/docs/development/apps/api/testing.html +892 -88
  353. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +892 -88
  354. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +892 -88
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +892 -88
  356. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +892 -88
  357. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +892 -88
  358. nautobot/project-static/docs/development/apps/api/views/base-template.html +892 -88
  359. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +892 -88
  360. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +892 -88
  361. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +892 -88
  362. nautobot/project-static/docs/development/apps/api/views/index.html +892 -88
  363. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +892 -88
  364. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +892 -88
  365. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +892 -88
  366. nautobot/project-static/docs/development/apps/api/views/notes.html +892 -88
  367. nautobot/project-static/docs/development/apps/api/views/rest-api.html +892 -88
  368. nautobot/project-static/docs/development/apps/api/views/urls.html +892 -88
  369. nautobot/project-static/docs/development/apps/index.html +892 -88
  370. nautobot/project-static/docs/development/apps/migration/code-updates.html +892 -88
  371. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +892 -88
  372. nautobot/project-static/docs/development/apps/migration/from-v1.html +892 -88
  373. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +892 -88
  374. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +892 -88
  375. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +892 -88
  376. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +892 -88
  377. nautobot/project-static/docs/development/apps/porting-from-netbox.html +892 -88
  378. nautobot/project-static/docs/development/core/application-registry.html +892 -88
  379. nautobot/project-static/docs/development/core/best-practices.html +893 -88
  380. nautobot/project-static/docs/development/core/bootstrap-ui.html +892 -88
  381. nautobot/project-static/docs/development/core/caching.html +892 -88
  382. nautobot/project-static/docs/development/core/controllers.html +892 -88
  383. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +892 -88
  384. nautobot/project-static/docs/development/core/generic-views.html +892 -88
  385. nautobot/project-static/docs/development/core/getting-started.html +892 -88
  386. nautobot/project-static/docs/development/core/homepage.html +892 -88
  387. nautobot/project-static/docs/development/core/index.html +892 -88
  388. nautobot/project-static/docs/development/core/model-checklist.html +901 -89
  389. nautobot/project-static/docs/development/core/model-features.html +892 -88
  390. nautobot/project-static/docs/development/core/natural-keys.html +892 -88
  391. nautobot/project-static/docs/development/core/navigation-menu.html +892 -88
  392. nautobot/project-static/docs/development/core/release-checklist.html +895 -91
  393. nautobot/project-static/docs/development/core/role-internals.html +892 -88
  394. nautobot/project-static/docs/development/core/settings.html +892 -88
  395. nautobot/project-static/docs/development/core/style-guide.html +893 -89
  396. nautobot/project-static/docs/development/core/templates.html +904 -89
  397. nautobot/project-static/docs/development/core/testing.html +892 -88
  398. nautobot/project-static/docs/development/core/user-preferences.html +892 -88
  399. nautobot/project-static/docs/development/index.html +892 -88
  400. nautobot/project-static/docs/development/jobs/index.html +893 -89
  401. nautobot/project-static/docs/development/jobs/migration/from-v1.html +892 -88
  402. nautobot/project-static/docs/index.html +892 -88
  403. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_dark.png +0 -0
  404. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_light.png +0 -0
  405. nautobot/project-static/docs/models/cloud/cloudaccount.html +15 -0
  406. nautobot/project-static/docs/models/cloud/cloudnetwork.html +15 -0
  407. nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +15 -0
  408. nautobot/project-static/docs/models/cloud/cloudresourcetype.html +15 -0
  409. nautobot/project-static/docs/models/cloud/cloudservice.html +15 -0
  410. nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +15 -0
  411. nautobot/project-static/docs/models/dcim/module.html +15 -0
  412. nautobot/project-static/docs/models/dcim/modulebay.html +15 -0
  413. nautobot/project-static/docs/models/dcim/modulebaytemplate.html +15 -0
  414. nautobot/project-static/docs/models/dcim/moduletype.html +15 -0
  415. nautobot/project-static/docs/models/extras/metadatachoice.html +15 -0
  416. nautobot/project-static/docs/models/extras/metadatatype.html +15 -0
  417. nautobot/project-static/docs/models/extras/objectmetadata.html +15 -0
  418. nautobot/project-static/docs/models/extras/role.html +15 -0
  419. nautobot/project-static/docs/models/extras/savedview.html +15 -0
  420. nautobot/project-static/docs/models/extras/staticgroupassociation.html +15 -0
  421. nautobot/project-static/docs/models/extras/status.html +15 -0
  422. nautobot/project-static/docs/objects.inv +0 -0
  423. nautobot/project-static/docs/overview/application_stack.html +900 -89
  424. nautobot/project-static/docs/overview/design_philosophy.html +892 -88
  425. nautobot/project-static/docs/release-notes/index.html +1129 -92
  426. nautobot/project-static/docs/release-notes/version-1.0.html +892 -88
  427. nautobot/project-static/docs/release-notes/version-1.1.html +892 -88
  428. nautobot/project-static/docs/release-notes/version-1.2.html +892 -88
  429. nautobot/project-static/docs/release-notes/version-1.3.html +892 -88
  430. nautobot/project-static/docs/release-notes/version-1.4.html +892 -88
  431. nautobot/project-static/docs/release-notes/version-1.5.html +893 -89
  432. nautobot/project-static/docs/release-notes/version-1.6.html +893 -89
  433. nautobot/project-static/docs/release-notes/version-2.0.html +892 -88
  434. nautobot/project-static/docs/release-notes/version-2.1.html +892 -88
  435. nautobot/project-static/docs/release-notes/version-2.2.html +895 -91
  436. nautobot/project-static/docs/release-notes/version-2.3.html +9954 -0
  437. nautobot/project-static/docs/requirements.txt +5 -5
  438. nautobot/project-static/docs/search/search_index.json +1 -1
  439. nautobot/project-static/docs/sitemap.xml +331 -256
  440. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  441. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +892 -88
  442. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +892 -88
  443. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +892 -88
  444. nautobot/project-static/docs/user-guide/administration/configuration/index.html +892 -88
  445. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +992 -174
  446. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +892 -88
  447. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +892 -88
  448. nautobot/project-static/docs/user-guide/administration/guides/caching.html +892 -88
  449. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +896 -88
  450. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +892 -88
  451. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +892 -88
  452. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +892 -88
  453. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +892 -88
  454. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +892 -88
  455. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +892 -88
  456. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +892 -88
  457. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +892 -88
  458. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +944 -153
  459. nautobot/project-static/docs/user-guide/administration/installation/index.html +901 -93
  460. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +934 -122
  461. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +954 -157
  462. nautobot/project-static/docs/user-guide/administration/installation/services.html +913 -112
  463. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +908 -99
  464. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +892 -88
  465. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +892 -88
  466. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +892 -88
  467. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +892 -88
  468. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +893 -89
  469. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +892 -88
  470. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +892 -88
  471. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +892 -88
  472. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +892 -88
  473. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +892 -88
  474. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +892 -88
  475. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +892 -88
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +892 -88
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +892 -88
  478. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +892 -88
  479. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +892 -88
  480. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +893 -89
  481. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +892 -88
  482. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +896 -88
  483. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +895 -91
  484. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +8984 -0
  485. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +8828 -0
  486. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +8829 -0
  487. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +8828 -0
  488. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +8829 -0
  489. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +8833 -0
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +8828 -0
  491. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +906 -102
  492. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +923 -105
  493. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +923 -105
  494. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +918 -100
  495. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +923 -105
  496. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +906 -102
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +906 -102
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +913 -105
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +920 -116
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +921 -117
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +918 -114
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +906 -102
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +914 -105
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +926 -108
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +936 -118
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +928 -106
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +906 -102
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +937 -119
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +928 -110
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +918 -114
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +921 -117
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +923 -115
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +8828 -0
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +8846 -0
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +8843 -0
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +8823 -0
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +916 -112
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +906 -102
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +940 -83
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +924 -106
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +906 -102
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +943 -86
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +921 -103
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +929 -125
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +918 -114
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +906 -102
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +922 -104
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +924 -106
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +906 -102
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +906 -102
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +906 -102
  532. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +936 -88
  533. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +892 -88
  534. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +897 -89
  535. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +897 -89
  536. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +892 -88
  537. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +892 -88
  538. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +892 -88
  539. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +892 -88
  540. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +892 -88
  541. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +892 -88
  542. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +892 -88
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +892 -88
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +892 -88
  545. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +892 -88
  546. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +901 -96
  547. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +892 -88
  548. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +892 -88
  549. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +892 -88
  550. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +892 -88
  551. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +892 -88
  552. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +897 -89
  553. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +892 -88
  554. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +892 -88
  555. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +892 -88
  556. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +892 -88
  557. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +892 -88
  558. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +892 -88
  559. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +892 -88
  560. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +892 -88
  561. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +892 -88
  562. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +892 -88
  563. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +892 -88
  564. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +892 -88
  565. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +892 -88
  566. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/clear-view-button.png +0 -0
  567. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/cleared-view.png +0 -0
  568. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/config-table-columns-to-locations.png +0 -0
  569. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/configure-button.png +0 -0
  570. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/create-saved-view-success.png +0 -0
  571. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/current-saved-view-drop-down-menu.png +0 -0
  572. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/default-location-list-view.png +0 -0
  573. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/dropdown-button-after-new-saved-view.png +0 -0
  574. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-application-to-locations.png +0 -0
  575. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-button.png +0 -0
  576. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/global-default-location-list-view.png +0 -0
  577. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/location-list-view-with-saved-views.png +0 -0
  578. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/navigation-menu.png +0 -0
  579. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-as-new-view-drop-down.png +0 -0
  580. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-view-modal.png +0 -0
  581. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-buttons.png +0 -0
  582. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-success.png +0 -0
  583. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view-unchecked.png +0 -0
  584. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view.png +0 -0
  585. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-different-user.png +0 -0
  586. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-modal-unchecked.png +0 -0
  587. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-button.png +0 -0
  588. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-success.png +0 -0
  589. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/unsaved-saved-view.png +0 -0
  590. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/updated-saved-view.png +0 -0
  591. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +892 -88
  592. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +892 -88
  593. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +892 -88
  594. nautobot/project-static/docs/user-guide/index.html +892 -88
  595. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +892 -88
  596. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +892 -88
  597. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +892 -88
  598. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +892 -88
  599. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1258 -785
  600. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +895 -91
  601. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +892 -88
  602. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +892 -88
  603. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +892 -88
  604. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +892 -88
  605. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +892 -88
  606. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +892 -88
  607. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +892 -88
  608. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +892 -88
  609. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +892 -88
  610. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +896 -88
  611. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +892 -88
  612. nautobot/project-static/docs/user-guide/platform-functionality/note.html +895 -91
  613. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +9061 -0
  614. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +895 -91
  615. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +892 -88
  616. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +892 -88
  617. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +892 -88
  618. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +892 -88
  619. nautobot/project-static/docs/user-guide/platform-functionality/role.html +895 -91
  620. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9137 -0
  621. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +895 -91
  622. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +8933 -0
  623. nautobot/project-static/docs/user-guide/platform-functionality/status.html +892 -88
  624. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +892 -88
  625. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +950 -121
  626. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +892 -88
  627. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +892 -88
  628. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +892 -88
  629. nautobot/project-static/js/forms.js +71 -0
  630. nautobot/project-static/js/table_sorting_indicator.js +46 -0
  631. nautobot/project-static/js/tableconfig.js +6 -1
  632. nautobot/project-static/materialdesignicons-7.4.47/css/materialdesignicons.min.css +3 -0
  633. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.eot +0 -0
  634. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.ttf +0 -0
  635. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff +0 -0
  636. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff2 +0 -0
  637. nautobot/tenancy/__init__.py +0 -1
  638. nautobot/tenancy/apps.py +1 -0
  639. nautobot/tenancy/factory.py +3 -2
  640. nautobot/tenancy/filters/__init__.py +1 -0
  641. nautobot/tenancy/forms.py +1 -1
  642. nautobot/tenancy/templates/tenancy/tenant.html +24 -20
  643. nautobot/tenancy/views.py +11 -10
  644. nautobot/users/__init__.py +0 -1
  645. nautobot/users/api/serializers.py +1 -1
  646. nautobot/users/api/views.py +4 -2
  647. nautobot/users/apps.py +3 -2
  648. nautobot/users/factory.py +3 -3
  649. nautobot/users/migrations/0010_user_default_saved_views.py +20 -0
  650. nautobot/users/models.py +12 -0
  651. nautobot/users/tests/test_filters.py +6 -3
  652. nautobot/users/urls.py +8 -0
  653. nautobot/virtualization/__init__.py +0 -1
  654. nautobot/virtualization/apps.py +1 -0
  655. nautobot/virtualization/filters.py +6 -1
  656. nautobot/virtualization/forms.py +11 -3
  657. nautobot/virtualization/graphql/types.py +2 -2
  658. nautobot/virtualization/migrations/0029_add_role_field_to_interface_models.py +27 -0
  659. nautobot/virtualization/migrations/0030_alter_virtualmachine_local_config_context_data_owner_content_type_and_more.py +67 -0
  660. nautobot/virtualization/models.py +0 -2
  661. nautobot/virtualization/tables.py +10 -3
  662. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -1
  663. nautobot/virtualization/templates/virtualization/vminterface.html +7 -1
  664. nautobot/virtualization/templates/virtualization/vminterface_edit.html +1 -0
  665. nautobot/virtualization/tests/test_api.py +9 -4
  666. nautobot/virtualization/tests/test_filters.py +22 -0
  667. nautobot/virtualization/tests/test_models.py +7 -3
  668. nautobot/virtualization/tests/test_views.py +19 -3
  669. nautobot/virtualization/urls.py +2 -2
  670. nautobot/virtualization/views.py +10 -32
  671. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/METADATA +20 -18
  672. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/RECORD +677 -557
  673. nautobot/project-static/docs/assets/stylesheets/main.76a95c52.min.css +0 -1
  674. nautobot/project-static/docs/assets/stylesheets/main.76a95c52.min.css.map +0 -1
  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.0.dist-info}/LICENSE.txt +0 -0
  695. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/NOTICE +0 -0
  696. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/WHEEL +0 -0
  697. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
21
+ <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.31">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.76a95c52.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.3cba04c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0h-32zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1z"/></svg>');}</style>
41
+ <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0h-32zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1z"/></svg>');}</style>
42
42
 
43
43
 
44
44
 
@@ -217,7 +217,7 @@
217
217
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
218
218
  <div class="md-source__icon md-icon">
219
219
 
220
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
220
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
221
221
  </div>
222
222
  <div class="md-source__repository">
223
223
  GitHub
@@ -377,7 +377,7 @@
377
377
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
378
378
  <div class="md-source__icon md-icon">
379
379
 
380
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
380
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
381
381
  </div>
382
382
  <div class="md-source__repository">
383
383
  GitHub
@@ -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>
@@ -2555,7 +2735,506 @@
2555
2735
 
2556
2736
 
2557
2737
  <span class="md-ellipsis">
2558
- Rack Group
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">
3192
+
3193
+
3194
+ <span class="md-ellipsis">
3195
+ Front Port
3196
+ </span>
3197
+
3198
+
3199
+ </a>
3200
+ </li>
3201
+
3202
+
3203
+
3204
+
3205
+
3206
+
3207
+
3208
+
3209
+
3210
+
3211
+ <li class="md-nav__item">
3212
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
3213
+
3214
+
3215
+ <span class="md-ellipsis">
3216
+ Interface
3217
+ </span>
3218
+
3219
+
3220
+ </a>
3221
+ </li>
3222
+
3223
+
3224
+
3225
+
3226
+
3227
+
3228
+
3229
+
3230
+
3231
+
3232
+ <li class="md-nav__item">
3233
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3234
+
3235
+
3236
+ <span class="md-ellipsis">
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
+
4098
4792
 
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
 
@@ -4453,6 +5194,27 @@
4453
5194
 
4454
5195
 
4455
5196
 
5197
+ <li class="md-nav__item">
5198
+ <a href="../../../user-guide/platform-functionality/objectmetadata.html" class="md-nav__link">
5199
+
5200
+
5201
+ <span class="md-ellipsis">
5202
+ Object Metadata
5203
+ </span>
5204
+
5205
+
5206
+ </a>
5207
+ </li>
5208
+
5209
+
5210
+
5211
+
5212
+
5213
+
5214
+
5215
+
5216
+
5217
+
4456
5218
  <li class="md-nav__item">
4457
5219
  <a href="../../../user-guide/platform-functionality/relationship.html" class="md-nav__link">
4458
5220
 
@@ -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>
@@ -6393,6 +7176,15 @@
6393
7176
  <nav class="md-nav" aria-label="NaturalKeyOrPKMultipleChoiceFilter">
6394
7177
  <ul class="md-nav__list">
6395
7178
 
7179
+ <li class="md-nav__item">
7180
+ <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.__init__" class="md-nav__link">
7181
+ <span class="md-ellipsis">
7182
+ __init__
7183
+ </span>
7184
+ </a>
7185
+
7186
+ </li>
7187
+
6396
7188
  <li class="md-nav__item">
6397
7189
  <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.get_filter_predicate" class="md-nav__link">
6398
7190
  <span class="md-ellipsis">
@@ -7679,6 +8471,27 @@
7679
8471
 
7680
8472
 
7681
8473
 
8474
+ <li class="md-nav__item">
8475
+ <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
8476
+
8477
+
8478
+ <span class="md-ellipsis">
8479
+ Version 2.3
8480
+ </span>
8481
+
8482
+
8483
+ </a>
8484
+ </li>
8485
+
8486
+
8487
+
8488
+
8489
+
8490
+
8491
+
8492
+
8493
+
8494
+
7682
8495
  <li class="md-nav__item">
7683
8496
  <a href="../../../release-notes/version-2.2.html" class="md-nav__link">
7684
8497
 
@@ -8435,6 +9248,15 @@
8435
9248
  <nav class="md-nav" aria-label="NaturalKeyOrPKMultipleChoiceFilter">
8436
9249
  <ul class="md-nav__list">
8437
9250
 
9251
+ <li class="md-nav__item">
9252
+ <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.__init__" class="md-nav__link">
9253
+ <span class="md-ellipsis">
9254
+ __init__
9255
+ </span>
9256
+ </a>
9257
+
9258
+ </li>
9259
+
8438
9260
  <li class="md-nav__item">
8439
9261
  <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.get_filter_predicate" class="md-nav__link">
8440
9262
  <span class="md-ellipsis">
@@ -8628,16 +9450,16 @@
8628
9450
 
8629
9451
 
8630
9452
  <h1 id="nautobot.apps.filters" class="doc doc-heading">
8631
- <code>nautobot.apps.filters</code>
9453
+ <code>nautobot.apps.filters</code>
8632
9454
 
8633
9455
 
8634
9456
  <a href="#nautobot.apps.filters" class="headerlink" title="Permanent link">&para;</a></h1>
8635
9457
 
8636
- <div class="doc doc-contents first">
8637
-
9458
+ <div class="doc doc-contents first">
9459
+
8638
9460
  <p>Filterset base classes and mixins for app implementation.</p>
8639
9461
 
8640
-
9462
+
8641
9463
 
8642
9464
  <div class="doc doc-children">
8643
9465
 
@@ -8653,21 +9475,21 @@
8653
9475
 
8654
9476
 
8655
9477
  <h2 id="nautobot.apps.filters.BaseFilterSet" class="doc doc-heading">
8656
- <code>nautobot.apps.filters.BaseFilterSet</code>
9478
+ <code>nautobot.apps.filters.BaseFilterSet</code>
8657
9479
 
8658
9480
 
8659
9481
  <a href="#nautobot.apps.filters.BaseFilterSet" class="headerlink" title="Permanent link">&para;</a></h2>
8660
9482
 
8661
9483
 
8662
- <div class="doc doc-contents ">
8663
- <p class="doc doc-class-bases">
8664
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
9484
+ <div class="doc doc-contents ">
9485
+ <p class="doc doc-class-bases">
9486
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
9487
+
8665
9488
 
8666
-
8667
9489
  <p>A base filterset which provides common functionality to all Nautobot filtersets.</p>
8668
9490
 
8669
9491
 
8670
-
9492
+
8671
9493
 
8672
9494
  <div class="doc doc-children">
8673
9495
 
@@ -8682,8 +9504,8 @@
8682
9504
 
8683
9505
 
8684
9506
  <h3 id="nautobot.apps.filters.BaseFilterSet.errors" class="doc doc-heading">
8685
- <code class="highlight language-python"><span class="n">errors</span></code>
8686
-
9507
+ <code class="highlight language-python"><span class="n">errors</span></code>
9508
+
8687
9509
  <span class="doc doc-labels">
8688
9510
  <small class="doc doc-label doc-label-property"><code>property</code></small>
8689
9511
  </span>
@@ -8691,23 +9513,21 @@
8691
9513
  <a href="#nautobot.apps.filters.BaseFilterSet.errors" class="headerlink" title="Permanent link">&para;</a></h3>
8692
9514
 
8693
9515
 
8694
- <div class="doc doc-contents ">
8695
-
9516
+ <div class="doc doc-contents ">
9517
+
8696
9518
  <p>Extend FilterSet.errors to potentially include additional errors from settings.STRICT_FILTERING.</p>
8697
- </div>
9519
+ </div>
8698
9520
 
8699
9521
  </div>
8700
9522
 
8701
9523
 
8702
9524
 
8703
-
8704
9525
  <div class="doc doc-object doc-function">
8705
9526
 
8706
9527
 
8707
-
8708
9528
  <h3 id="nautobot.apps.filters.BaseFilterSet.add_filter" class="doc doc-heading">
8709
- <code class="highlight language-python"><span class="n">add_filter</span><span class="p">(</span><span class="n">new_filter_name</span><span class="p">,</span> <span class="n">new_filter_field</span><span class="p">)</span></code>
8710
-
9529
+ <code class="highlight language-python"><span class="n">add_filter</span><span class="p">(</span><span class="n">new_filter_name</span><span class="p">,</span> <span class="n">new_filter_field</span><span class="p">)</span></code>
9530
+
8711
9531
  <span class="doc doc-labels">
8712
9532
  <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
8713
9533
  </span>
@@ -8715,23 +9535,21 @@
8715
9535
  <a href="#nautobot.apps.filters.BaseFilterSet.add_filter" class="headerlink" title="Permanent link">&para;</a></h3>
8716
9536
 
8717
9537
 
8718
- <div class="doc doc-contents ">
8719
-
9538
+ <div class="doc doc-contents ">
9539
+
8720
9540
  <p>Allow filters to be added post-generation on import.</p>
8721
9541
  <p>Will provide <code>&lt;field_name&gt;__&lt;lookup_expr&gt;</code> generation automagically.</p>
8722
9542
 
8723
- </div>
9543
+ </div>
8724
9544
 
8725
9545
  </div>
8726
9546
 
8727
-
8728
9547
  <div class="doc doc-object doc-function">
8729
9548
 
8730
9549
 
8731
-
8732
9550
  <h3 id="nautobot.apps.filters.BaseFilterSet.filter_for_lookup" class="doc doc-heading">
8733
- <code class="highlight language-python"><span class="n">filter_for_lookup</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">lookup_type</span><span class="p">)</span></code>
8734
-
9551
+ <code class="highlight language-python"><span class="n">filter_for_lookup</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">lookup_type</span><span class="p">)</span></code>
9552
+
8735
9553
  <span class="doc doc-labels">
8736
9554
  <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
8737
9555
  </span>
@@ -8739,23 +9557,21 @@
8739
9557
  <a href="#nautobot.apps.filters.BaseFilterSet.filter_for_lookup" class="headerlink" title="Permanent link">&para;</a></h3>
8740
9558
 
8741
9559
 
8742
- <div class="doc doc-contents ">
8743
-
9560
+ <div class="doc doc-contents ">
9561
+
8744
9562
  <p>Override filter_for_lookup method to set ChoiceField Filter to MultipleChoiceFilter.</p>
8745
9563
  <p>Note: Any CharField or IntegerField with choices set is a ChoiceField.</p>
8746
9564
 
8747
- </div>
9565
+ </div>
8748
9566
 
8749
9567
  </div>
8750
9568
 
8751
-
8752
9569
  <div class="doc doc-object doc-function">
8753
9570
 
8754
9571
 
8755
-
8756
9572
  <h3 id="nautobot.apps.filters.BaseFilterSet.get_filters" class="doc doc-heading">
8757
- <code class="highlight language-python"><span class="n">get_filters</span><span class="p">()</span></code>
8758
-
9573
+ <code class="highlight language-python"><span class="n">get_filters</span><span class="p">()</span></code>
9574
+
8759
9575
  <span class="doc doc-labels">
8760
9576
  <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
8761
9577
  </span>
@@ -8763,30 +9579,28 @@
8763
9579
  <a href="#nautobot.apps.filters.BaseFilterSet.get_filters" class="headerlink" title="Permanent link">&para;</a></h3>
8764
9580
 
8765
9581
 
8766
- <div class="doc doc-contents ">
8767
-
9582
+ <div class="doc doc-contents ">
9583
+
8768
9584
  <p>Override filter generation to support dynamic lookup expressions for certain filter types.</p>
8769
9585
 
8770
- </div>
9586
+ </div>
8771
9587
 
8772
9588
  </div>
8773
9589
 
8774
-
8775
9590
  <div class="doc doc-object doc-function">
8776
9591
 
8777
9592
 
8778
-
8779
9593
  <h3 id="nautobot.apps.filters.BaseFilterSet.is_valid" class="doc doc-heading">
8780
- <code class="highlight language-python"><span class="n">is_valid</span><span class="p">()</span></code>
9594
+ <code class="highlight language-python"><span class="n">is_valid</span><span class="p">()</span></code>
8781
9595
 
8782
9596
  <a href="#nautobot.apps.filters.BaseFilterSet.is_valid" class="headerlink" title="Permanent link">&para;</a></h3>
8783
9597
 
8784
9598
 
8785
- <div class="doc doc-contents ">
8786
-
9599
+ <div class="doc doc-contents ">
9600
+
8787
9601
  <p>Extend FilterSet.is_valid() to potentially enforce settings.STRICT_FILTERING.</p>
8788
9602
 
8789
- </div>
9603
+ </div>
8790
9604
 
8791
9605
  </div>
8792
9606
 
@@ -8794,8 +9608,7 @@
8794
9608
 
8795
9609
  </div>
8796
9610
 
8797
- </div>
8798
-
9611
+ </div>
8799
9612
 
8800
9613
  </div>
8801
9614
 
@@ -8804,24 +9617,23 @@
8804
9617
 
8805
9618
 
8806
9619
  <h2 id="nautobot.apps.filters.ConfigContextRoleFilter" class="doc doc-heading">
8807
- <code>nautobot.apps.filters.ConfigContextRoleFilter</code>
9620
+ <code>nautobot.apps.filters.ConfigContextRoleFilter</code>
8808
9621
 
8809
9622
 
8810
9623
  <a href="#nautobot.apps.filters.ConfigContextRoleFilter" class="headerlink" title="Permanent link">&para;</a></h2>
8811
9624
 
8812
9625
 
8813
- <div class="doc doc-contents ">
8814
- <p class="doc doc-class-bases">
8815
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
9626
+ <div class="doc doc-contents ">
9627
+ <p class="doc doc-class-bases">
9628
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
9629
+
8816
9630
 
8817
-
8818
9631
  <p>Limit role choices to the available role choices for Device and VM</p>
8819
9632
 
8820
9633
 
8821
-
8822
9634
 
8823
- <div class="doc doc-children">
8824
9635
 
9636
+ <div class="doc doc-children">
8825
9637
 
8826
9638
 
8827
9639
 
@@ -8832,10 +9644,10 @@
8832
9644
 
8833
9645
 
8834
9646
 
8835
- </div>
8836
9647
 
8837
9648
  </div>
8838
9649
 
9650
+ </div>
8839
9651
 
8840
9652
  </div>
8841
9653
 
@@ -8844,17 +9656,17 @@
8844
9656
 
8845
9657
 
8846
9658
  <h2 id="nautobot.apps.filters.ContentTypeChoiceFilter" class="doc doc-heading">
8847
- <code>nautobot.apps.filters.ContentTypeChoiceFilter</code>
9659
+ <code>nautobot.apps.filters.ContentTypeChoiceFilter</code>
8848
9660
 
8849
9661
 
8850
9662
  <a href="#nautobot.apps.filters.ContentTypeChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
8851
9663
 
8852
9664
 
8853
- <div class="doc doc-contents ">
8854
- <p class="doc doc-class-bases">
8855
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.ContentTypeFilterMixin" href="#nautobot.apps.filters.ContentTypeFilterMixin">ContentTypeFilterMixin</a></code>, <code><span title="django_filters.ChoiceFilter">ChoiceFilter</span></code></p>
9665
+ <div class="doc doc-contents ">
9666
+ <p class="doc doc-class-bases">
9667
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.ContentTypeFilterMixin" href="#nautobot.apps.filters.ContentTypeFilterMixin">ContentTypeFilterMixin</a></code>, <code><span title="django_filters.ChoiceFilter">ChoiceFilter</span></code></p>
9668
+
8856
9669
 
8857
-
8858
9670
  <p>Allows character-based ContentType filtering by <app_label>.<model> (e.g.
8859
9671
  "dcim.location") but an explicit set of choices must be provided.</p>
8860
9672
  <p>Example use on a <code>FilterSet</code>:</p>
@@ -8864,8 +9676,23 @@
8864
9676
  </code></pre></div>
8865
9677
 
8866
9678
 
9679
+
9680
+
9681
+ <div class="doc doc-children">
9682
+
9683
+
9684
+
9685
+
9686
+
9687
+
9688
+
9689
+
9690
+
9691
+
9692
+
8867
9693
  </div>
8868
9694
 
9695
+ </div>
8869
9696
 
8870
9697
  </div>
8871
9698
 
@@ -8874,25 +9701,40 @@
8874
9701
 
8875
9702
 
8876
9703
  <h2 id="nautobot.apps.filters.ContentTypeFilter" class="doc doc-heading">
8877
- <code>nautobot.apps.filters.ContentTypeFilter</code>
9704
+ <code>nautobot.apps.filters.ContentTypeFilter</code>
8878
9705
 
8879
9706
 
8880
9707
  <a href="#nautobot.apps.filters.ContentTypeFilter" class="headerlink" title="Permanent link">&para;</a></h2>
8881
9708
 
8882
9709
 
8883
- <div class="doc doc-contents ">
8884
- <p class="doc doc-class-bases">
8885
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.ContentTypeFilterMixin" href="#nautobot.apps.filters.ContentTypeFilterMixin">ContentTypeFilterMixin</a></code>, <code><span title="django_filters.CharFilter">CharFilter</span></code></p>
9710
+ <div class="doc doc-contents ">
9711
+ <p class="doc doc-class-bases">
9712
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.ContentTypeFilterMixin" href="#nautobot.apps.filters.ContentTypeFilterMixin">ContentTypeFilterMixin</a></code>, <code><span title="django_filters.CharFilter">CharFilter</span></code></p>
9713
+
8886
9714
 
8887
-
8888
9715
  <p>Allows character-based ContentType filtering by <app_label>.<model> (e.g. "dcim.location").</p>
8889
9716
  <p>Does not support limiting of choices. Can be used without arguments on a <code>FilterSet</code>:</p>
8890
9717
  <div class="highlight"><pre><span></span><code>content_type = ContentTypeFilter()
8891
9718
  </code></pre></div>
8892
9719
 
8893
9720
 
9721
+
9722
+
9723
+ <div class="doc doc-children">
9724
+
9725
+
9726
+
9727
+
9728
+
9729
+
9730
+
9731
+
9732
+
9733
+
9734
+
8894
9735
  </div>
8895
9736
 
9737
+ </div>
8896
9738
 
8897
9739
  </div>
8898
9740
 
@@ -8901,22 +9743,21 @@
8901
9743
 
8902
9744
 
8903
9745
  <h2 id="nautobot.apps.filters.ContentTypeFilterMixin" class="doc doc-heading">
8904
- <code>nautobot.apps.filters.ContentTypeFilterMixin</code>
9746
+ <code>nautobot.apps.filters.ContentTypeFilterMixin</code>
8905
9747
 
8906
9748
 
8907
9749
  <a href="#nautobot.apps.filters.ContentTypeFilterMixin" class="headerlink" title="Permanent link">&para;</a></h2>
8908
9750
 
8909
9751
 
8910
- <div class="doc doc-contents ">
9752
+ <div class="doc doc-contents ">
9753
+
8911
9754
 
8912
-
8913
9755
  <p>Mixin to allow specifying a ContentType by <app_label>.<model> (e.g. "dcim.location").</p>
8914
9756
 
8915
9757
 
8916
-
8917
9758
 
8918
- <div class="doc doc-children">
8919
9759
 
9760
+ <div class="doc doc-children">
8920
9761
 
8921
9762
 
8922
9763
 
@@ -8927,10 +9768,10 @@
8927
9768
 
8928
9769
 
8929
9770
 
8930
- </div>
8931
9771
 
8932
9772
  </div>
8933
9773
 
9774
+ </div>
8934
9775
 
8935
9776
  </div>
8936
9777
 
@@ -8939,17 +9780,17 @@
8939
9780
 
8940
9781
 
8941
9782
  <h2 id="nautobot.apps.filters.ContentTypeMultipleChoiceFilter" class="doc doc-heading">
8942
- <code>nautobot.apps.filters.ContentTypeMultipleChoiceFilter</code>
9783
+ <code>nautobot.apps.filters.ContentTypeMultipleChoiceFilter</code>
8943
9784
 
8944
9785
 
8945
9786
  <a href="#nautobot.apps.filters.ContentTypeMultipleChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
8946
9787
 
8947
9788
 
8948
- <div class="doc doc-contents ">
8949
- <p class="doc doc-class-bases">
8950
- Bases: <code><span title="django_filters.MultipleChoiceFilter">MultipleChoiceFilter</span></code></p>
9789
+ <div class="doc doc-contents ">
9790
+ <p class="doc doc-class-bases">
9791
+ Bases: <code><span title="django_filters.MultipleChoiceFilter">MultipleChoiceFilter</span></code></p>
9792
+
8951
9793
 
8952
-
8953
9794
  <p>Allows multiple-choice ContentType filtering by <app_label>.<model> (e.g. "dcim.location").</p>
8954
9795
  <p>Defaults to joining multiple options with "AND". Pass <code>conjoined=False</code> to
8955
9796
  override this behavior to join with "OR" instead.</p>
@@ -8960,10 +9801,9 @@ override this behavior to join with "OR" instead.</p>
8960
9801
  </code></pre></div>
8961
9802
 
8962
9803
 
8963
-
8964
9804
 
8965
- <div class="doc doc-children">
8966
9805
 
9806
+ <div class="doc doc-children">
8967
9807
 
8968
9808
 
8969
9809
 
@@ -8976,19 +9816,18 @@ override this behavior to join with "OR" instead.</p>
8976
9816
  <div class="doc doc-object doc-function">
8977
9817
 
8978
9818
 
8979
-
8980
9819
  <h3 id="nautobot.apps.filters.ContentTypeMultipleChoiceFilter.filter" class="doc doc-heading">
8981
- <code class="highlight language-python"><span class="nb">filter</span><span class="p">(</span><span class="n">qs</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></code>
9820
+ <code class="highlight language-python"><span class="nb">filter</span><span class="p">(</span><span class="n">qs</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></code>
8982
9821
 
8983
9822
  <a href="#nautobot.apps.filters.ContentTypeMultipleChoiceFilter.filter" class="headerlink" title="Permanent link">&para;</a></h3>
8984
9823
 
8985
9824
 
8986
- <div class="doc doc-contents ">
8987
-
9825
+ <div class="doc doc-contents ">
9826
+
8988
9827
  <p>Filter on value, which should be list of content-type names.</p>
8989
9828
  <p>e.g. <code>['dcim.device', 'dcim.rack']</code></p>
8990
9829
 
8991
- </div>
9830
+ </div>
8992
9831
 
8993
9832
  </div>
8994
9833
 
@@ -8996,8 +9835,7 @@ override this behavior to join with "OR" instead.</p>
8996
9835
 
8997
9836
  </div>
8998
9837
 
8999
- </div>
9000
-
9838
+ </div>
9001
9839
 
9002
9840
  </div>
9003
9841
 
@@ -9006,25 +9844,24 @@ override this behavior to join with "OR" instead.</p>
9006
9844
 
9007
9845
 
9008
9846
  <h2 id="nautobot.apps.filters.CustomFieldModelFilterSetMixin" class="doc doc-heading">
9009
- <code>nautobot.apps.filters.CustomFieldModelFilterSetMixin</code>
9847
+ <code>nautobot.apps.filters.CustomFieldModelFilterSetMixin</code>
9010
9848
 
9011
9849
 
9012
9850
  <a href="#nautobot.apps.filters.CustomFieldModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9013
9851
 
9014
9852
 
9015
- <div class="doc doc-contents ">
9016
- <p class="doc doc-class-bases">
9017
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
9853
+ <div class="doc doc-contents ">
9854
+ <p class="doc doc-class-bases">
9855
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
9856
+
9018
9857
 
9019
-
9020
9858
  <p>Dynamically add a Filter for each CustomField applicable to the parent model. Add filters for
9021
9859
  extra lookup expressions on supported CustomField types.</p>
9022
9860
 
9023
9861
 
9024
-
9025
9862
 
9026
- <div class="doc doc-children">
9027
9863
 
9864
+ <div class="doc doc-children">
9028
9865
 
9029
9866
 
9030
9867
 
@@ -9035,10 +9872,10 @@ extra lookup expressions on supported CustomField types.</p>
9035
9872
 
9036
9873
 
9037
9874
 
9038
- </div>
9039
9875
 
9040
9876
  </div>
9041
9877
 
9878
+ </div>
9042
9879
 
9043
9880
  </div>
9044
9881
 
@@ -9047,22 +9884,21 @@ extra lookup expressions on supported CustomField types.</p>
9047
9884
 
9048
9885
 
9049
9886
  <h2 id="nautobot.apps.filters.FilterExtension" class="doc doc-heading">
9050
- <code>nautobot.apps.filters.FilterExtension</code>
9887
+ <code>nautobot.apps.filters.FilterExtension</code>
9051
9888
 
9052
9889
 
9053
9890
  <a href="#nautobot.apps.filters.FilterExtension" class="headerlink" title="Permanent link">&para;</a></h2>
9054
9891
 
9055
9892
 
9056
- <div class="doc doc-contents ">
9893
+ <div class="doc doc-contents ">
9894
+
9057
9895
 
9058
-
9059
9896
  <p>Class that may be returned by a registered Filter Extension function.</p>
9060
9897
 
9061
9898
 
9062
-
9063
9899
 
9064
- <div class="doc doc-children">
9065
9900
 
9901
+ <div class="doc doc-children">
9066
9902
 
9067
9903
 
9068
9904
 
@@ -9073,10 +9909,10 @@ extra lookup expressions on supported CustomField types.</p>
9073
9909
 
9074
9910
 
9075
9911
 
9076
- </div>
9077
9912
 
9078
9913
  </div>
9079
9914
 
9915
+ </div>
9080
9916
 
9081
9917
  </div>
9082
9918
 
@@ -9085,15 +9921,15 @@ extra lookup expressions on supported CustomField types.</p>
9085
9921
 
9086
9922
 
9087
9923
  <h2 id="nautobot.apps.filters.MappedPredicatesFilterMixin" class="doc doc-heading">
9088
- <code>nautobot.apps.filters.MappedPredicatesFilterMixin</code>
9924
+ <code>nautobot.apps.filters.MappedPredicatesFilterMixin</code>
9089
9925
 
9090
9926
 
9091
9927
  <a href="#nautobot.apps.filters.MappedPredicatesFilterMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9092
9928
 
9093
9929
 
9094
- <div class="doc doc-contents ">
9930
+ <div class="doc doc-contents ">
9931
+
9095
9932
 
9096
-
9097
9933
  <p>A filter mixin to provide the ability to specify fields and lookup expressions to use for
9098
9934
  filtering.</p>
9099
9935
  <p>A mapping of filter predicates (field_name: lookup_expr) must be provided to the filter when
@@ -9123,10 +9959,9 @@ providing the value as a nested dict with "lookup_expr" and "preprocessor" keys.
9123
9959
  skipped.</p>
9124
9960
 
9125
9961
 
9126
-
9127
9962
 
9128
- <div class="doc doc-children">
9129
9963
 
9964
+ <div class="doc doc-children">
9130
9965
 
9131
9966
 
9132
9967
 
@@ -9139,19 +9974,18 @@ skipped.</p>
9139
9974
  <div class="doc doc-object doc-function">
9140
9975
 
9141
9976
 
9142
-
9143
9977
  <h3 id="nautobot.apps.filters.MappedPredicatesFilterMixin.generate_query" class="doc doc-heading">
9144
- <code class="highlight language-python"><span class="n">generate_query</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
9978
+ <code class="highlight language-python"><span class="n">generate_query</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
9145
9979
 
9146
9980
  <a href="#nautobot.apps.filters.MappedPredicatesFilterMixin.generate_query" class="headerlink" title="Permanent link">&para;</a></h3>
9147
9981
 
9148
9982
 
9149
- <div class="doc doc-contents ">
9150
-
9983
+ <div class="doc doc-contents ">
9984
+
9151
9985
  <p>Given a <code>value</code>, return a <code>Q</code> object for 2-tuple of <code>predicate=value</code>. Filter predicates are
9152
9986
  read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9153
9987
 
9154
- </div>
9988
+ </div>
9155
9989
 
9156
9990
  </div>
9157
9991
 
@@ -9159,8 +9993,7 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9159
9993
 
9160
9994
  </div>
9161
9995
 
9162
- </div>
9163
-
9996
+ </div>
9164
9997
 
9165
9998
  </div>
9166
9999
 
@@ -9169,22 +10002,37 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9169
10002
 
9170
10003
 
9171
10004
  <h2 id="nautobot.apps.filters.MultiValueBigNumberFilter" class="doc doc-heading">
9172
- <code>nautobot.apps.filters.MultiValueBigNumberFilter</code>
10005
+ <code>nautobot.apps.filters.MultiValueBigNumberFilter</code>
9173
10006
 
9174
10007
 
9175
10008
  <a href="#nautobot.apps.filters.MultiValueBigNumberFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9176
10009
 
9177
10010
 
9178
- <div class="doc doc-contents ">
9179
- <p class="doc doc-class-bases">
9180
- Bases: <code><span title="nautobot.core.filters.MultiValueNumberFilter">MultiValueNumberFilter</span></code></p>
10011
+ <div class="doc doc-contents ">
10012
+ <p class="doc doc-class-bases">
10013
+ Bases: <code><span title="nautobot.core.filters.MultiValueNumberFilter">MultiValueNumberFilter</span></code></p>
10014
+
9181
10015
 
9182
-
9183
10016
  <p>Subclass of MultiValueNumberFilter used for BigInteger model fields.</p>
9184
10017
 
9185
10018
 
10019
+
10020
+
10021
+ <div class="doc doc-children">
10022
+
10023
+
10024
+
10025
+
10026
+
10027
+
10028
+
10029
+
10030
+
10031
+
10032
+
9186
10033
  </div>
9187
10034
 
10035
+ </div>
9188
10036
 
9189
10037
  </div>
9190
10038
 
@@ -9193,24 +10041,23 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9193
10041
 
9194
10042
 
9195
10043
  <h2 id="nautobot.apps.filters.NameSearchFilterSet" class="doc doc-heading">
9196
- <code>nautobot.apps.filters.NameSearchFilterSet</code>
10044
+ <code>nautobot.apps.filters.NameSearchFilterSet</code>
9197
10045
 
9198
10046
 
9199
10047
  <a href="#nautobot.apps.filters.NameSearchFilterSet" class="headerlink" title="Permanent link">&para;</a></h2>
9200
10048
 
9201
10049
 
9202
- <div class="doc doc-contents ">
9203
- <p class="doc doc-class-bases">
9204
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10050
+ <div class="doc doc-contents ">
10051
+ <p class="doc doc-class-bases">
10052
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10053
+
9205
10054
 
9206
-
9207
10055
  <p>A base class for adding the search method to models which only expose the <code>name</code> field in searches.</p>
9208
10056
 
9209
10057
 
9210
-
9211
10058
 
9212
- <div class="doc doc-children">
9213
10059
 
10060
+ <div class="doc doc-children">
9214
10061
 
9215
10062
 
9216
10063
 
@@ -9221,10 +10068,10 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9221
10068
 
9222
10069
 
9223
10070
 
9224
- </div>
9225
10071
 
9226
10072
  </div>
9227
10073
 
10074
+ </div>
9228
10075
 
9229
10076
  </div>
9230
10077
 
@@ -9233,26 +10080,27 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9233
10080
 
9234
10081
 
9235
10082
  <h2 id="nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter" class="doc doc-heading">
9236
- <code>nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter</code>
10083
+ <code>nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter</code>
9237
10084
 
9238
10085
 
9239
10086
  <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9240
10087
 
9241
10088
 
9242
- <div class="doc doc-contents ">
9243
- <p class="doc doc-class-bases">
9244
- Bases: <code><span title="django_filters.ModelMultipleChoiceFilter">ModelMultipleChoiceFilter</span></code></p>
10089
+ <div class="doc doc-contents ">
10090
+ <p class="doc doc-class-bases">
10091
+ Bases: <code><span title="django_filters.ModelMultipleChoiceFilter">ModelMultipleChoiceFilter</span></code></p>
10092
+
9245
10093
 
9246
-
9247
10094
  <p>Filter that supports filtering on values matching the <code>pk</code> field and another
9248
10095
  field of a foreign-key related object. The desired field is set using the <code>to_field_name</code>
9249
10096
  keyword argument on filter initialization (defaults to <code>name</code>).</p>
10097
+ <p>NOTE that the <code>to_field_name</code> field does not have to be a "true" natural key (ie. unique), it
10098
+ was just the best name we could come up with for this filter</p>
9250
10099
 
9251
10100
 
9252
-
9253
10101
 
9254
- <div class="doc doc-children">
9255
10102
 
10103
+ <div class="doc doc-children">
9256
10104
 
9257
10105
 
9258
10106
 
@@ -9265,19 +10113,64 @@ keyword argument on filter initialization (defaults to <code>name</code>).</p>
9265
10113
  <div class="doc doc-object doc-function">
9266
10114
 
9267
10115
 
10116
+ <h3 id="nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.__init__" class="doc doc-heading">
10117
+ <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">prefers_id</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>
10118
+
10119
+ <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
10120
+
10121
+
10122
+ <div class="doc doc-contents ">
10123
+
10124
+ <p>Initialize the NaturalKeyOrPKMultipleChoiceFilter.</p>
10125
+
10126
+
10127
+ <p><span class="doc-section-title">Parameters:</span></p>
10128
+ <table>
10129
+ <thead>
10130
+ <tr>
10131
+ <th>Name</th>
10132
+ <th>Type</th>
10133
+ <th>Description</th>
10134
+ <th>Default</th>
10135
+ </tr>
10136
+ </thead>
10137
+ <tbody>
10138
+ <tr class="doc-section-item">
10139
+ <td><code>prefers_id</code></td>
10140
+ <td>
10141
+ <code>bool</code>
10142
+ </td>
10143
+ <td>
10144
+ <div class="doc-md-description">
10145
+ <p>Prefer PK (ID) over the 'to_field_name'. Defaults to False.</p>
10146
+ </div>
10147
+ </td>
10148
+ <td>
10149
+ <code>False</code>
10150
+ </td>
10151
+ </tr>
10152
+ </tbody>
10153
+ </table>
10154
+
10155
+ </div>
10156
+
10157
+ </div>
10158
+
10159
+ <div class="doc doc-object doc-function">
10160
+
9268
10161
 
9269
10162
  <h3 id="nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.get_filter_predicate" class="doc doc-heading">
9270
- <code class="highlight language-python"><span class="n">get_filter_predicate</span><span class="p">(</span><span class="n">v</span><span class="p">)</span></code>
10163
+ <code class="highlight language-python"><span class="n">get_filter_predicate</span><span class="p">(</span><span class="n">v</span><span class="p">)</span></code>
9271
10164
 
9272
10165
  <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.get_filter_predicate" class="headerlink" title="Permanent link">&para;</a></h3>
9273
10166
 
9274
10167
 
9275
- <div class="doc doc-contents ">
9276
-
10168
+ <div class="doc doc-contents ">
10169
+
9277
10170
  <p>Override base filter behavior to force the filter to use the <code>pk</code> field instead of
9278
10171
  the natural key in the generated filter.</p>
9279
10172
 
9280
- </div>
10173
+ </div>
9281
10174
 
9282
10175
  </div>
9283
10176
 
@@ -9285,8 +10178,7 @@ the natural key in the generated filter.</p>
9285
10178
 
9286
10179
  </div>
9287
10180
 
9288
- </div>
9289
-
10181
+ </div>
9290
10182
 
9291
10183
  </div>
9292
10184
 
@@ -9295,24 +10187,39 @@ the natural key in the generated filter.</p>
9295
10187
 
9296
10188
 
9297
10189
  <h2 id="nautobot.apps.filters.NautobotFilterSet" class="doc doc-heading">
9298
- <code>nautobot.apps.filters.NautobotFilterSet</code>
10190
+ <code>nautobot.apps.filters.NautobotFilterSet</code>
9299
10191
 
9300
10192
 
9301
10193
  <a href="#nautobot.apps.filters.NautobotFilterSet" class="headerlink" title="Permanent link">&para;</a></h2>
9302
10194
 
9303
10195
 
9304
- <div class="doc doc-contents ">
9305
- <p class="doc doc-class-bases">
9306
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.BaseFilterSet" href="#nautobot.apps.filters.BaseFilterSet">BaseFilterSet</a></code>, <code><span title="nautobot.extras.filters.mixins.CreatedUpdatedModelFilterSetMixin">CreatedUpdatedModelFilterSetMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.filters.mixins.RelationshipModelFilterSetMixin" href="#nautobot.apps.filters.RelationshipModelFilterSetMixin">RelationshipModelFilterSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.filters.mixins.CustomFieldModelFilterSetMixin" href="#nautobot.apps.filters.CustomFieldModelFilterSetMixin">CustomFieldModelFilterSetMixin</a></code></p>
10196
+ <div class="doc doc-contents ">
10197
+ <p class="doc doc-class-bases">
10198
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.BaseFilterSet" href="#nautobot.apps.filters.BaseFilterSet">BaseFilterSet</a></code>, <code><span title="nautobot.extras.filters.mixins.CreatedUpdatedModelFilterSetMixin">CreatedUpdatedModelFilterSetMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.filters.mixins.RelationshipModelFilterSetMixin" href="#nautobot.apps.filters.RelationshipModelFilterSetMixin">RelationshipModelFilterSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.filters.mixins.CustomFieldModelFilterSetMixin" href="#nautobot.apps.filters.CustomFieldModelFilterSetMixin">CustomFieldModelFilterSetMixin</a></code></p>
10199
+
9307
10200
 
9308
-
9309
10201
  <p>This class exists to combine common functionality and is used as a base class throughout the codebase where all of
9310
10202
  BaseFilterSet, CreatedUpdatedModelFilterSetMixin, RelationshipModelFilterSetMixin and CustomFieldModelFilterSetMixin
9311
10203
  are needed.</p>
9312
10204
 
9313
10205
 
10206
+
10207
+
10208
+ <div class="doc doc-children">
10209
+
10210
+
10211
+
10212
+
10213
+
10214
+
10215
+
10216
+
10217
+
10218
+
10219
+
9314
10220
  </div>
9315
10221
 
10222
+ </div>
9316
10223
 
9317
10224
  </div>
9318
10225
 
@@ -9321,24 +10228,23 @@ are needed.</p>
9321
10228
 
9322
10229
 
9323
10230
  <h2 id="nautobot.apps.filters.NumericArrayFilter" class="doc doc-heading">
9324
- <code>nautobot.apps.filters.NumericArrayFilter</code>
10231
+ <code>nautobot.apps.filters.NumericArrayFilter</code>
9325
10232
 
9326
10233
 
9327
10234
  <a href="#nautobot.apps.filters.NumericArrayFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9328
10235
 
9329
10236
 
9330
- <div class="doc doc-contents ">
9331
- <p class="doc doc-class-bases">
9332
- Bases: <code><span title="django_filters.NumberFilter">NumberFilter</span></code></p>
10237
+ <div class="doc doc-contents ">
10238
+ <p class="doc doc-class-bases">
10239
+ Bases: <code><span title="django_filters.NumberFilter">NumberFilter</span></code></p>
10240
+
9333
10241
 
9334
-
9335
10242
  <p>Filter based on the presence of an integer within an ArrayField.</p>
9336
10243
 
9337
10244
 
9338
-
9339
10245
 
9340
- <div class="doc doc-children">
9341
10246
 
10247
+ <div class="doc doc-children">
9342
10248
 
9343
10249
 
9344
10250
 
@@ -9349,10 +10255,10 @@ are needed.</p>
9349
10255
 
9350
10256
 
9351
10257
 
9352
- </div>
9353
10258
 
9354
10259
  </div>
9355
10260
 
10261
+ </div>
9356
10262
 
9357
10263
  </div>
9358
10264
 
@@ -9361,34 +10267,52 @@ are needed.</p>
9361
10267
 
9362
10268
 
9363
10269
  <h2 id="nautobot.apps.filters.RelatedMembershipBooleanFilter" class="doc doc-heading">
9364
- <code>nautobot.apps.filters.RelatedMembershipBooleanFilter</code>
10270
+ <code>nautobot.apps.filters.RelatedMembershipBooleanFilter</code>
9365
10271
 
9366
10272
 
9367
10273
  <a href="#nautobot.apps.filters.RelatedMembershipBooleanFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9368
10274
 
9369
10275
 
9370
- <div class="doc doc-contents ">
9371
- <p class="doc doc-class-bases">
9372
- Bases: <code><span title="django_filters.BooleanFilter">BooleanFilter</span></code></p>
10276
+ <div class="doc doc-contents ">
10277
+ <p class="doc doc-class-bases">
10278
+ Bases: <code><span title="django_filters.BooleanFilter">BooleanFilter</span></code></p>
9373
10279
 
9374
-
9375
- <p>BooleanFilter for related objects that will explicitly perform <code>exclude=True</code> and <code>isnull</code>
9376
- lookups. The <code>field_name</code> argument is required and must be set to the related field on the
10280
+
10281
+ <p>BooleanFilter for related objects that will explicitly perform <code>isnull</code> lookups.
10282
+ The <code>field_name</code> argument is required and must be set to the related field on the
9377
10283
  model.</p>
9378
10284
  <p>This should be used instead of a default <code>BooleanFilter</code> paired <code>method=</code>
9379
10285
  argument to test for the existence of related objects.</p>
9380
10286
  <p>Example:</p>
9381
- <div class="highlight"><pre><span></span><code>has_interfaces = RelatedMembershipBooleanFilter(
9382
- field_name=&quot;interfaces&quot;,
9383
- label=&quot;Has interfaces&quot;,
10287
+ <div class="highlight"><pre><span></span><code>has_modules = RelatedMembershipBooleanFilter(
10288
+ field_name=&quot;module_bays__installed_module&quot;,
10289
+ label=&quot;Has modules&quot;,
9384
10290
  )
10291
+
10292
+ This would generate a filter that returns instances that have at least one module
10293
+ bay with an installed module. The `has_modules=False` filter would exclude instances
10294
+ with at least one module bay with an installed module.
10295
+
10296
+ Set `exclude=True` to reverse the behavior of the filter. This __may__ be useful
10297
+ for filtering on null directly related fields but this filter is not smart enough
10298
+ to differentiate between `fieldA__fieldB__isnull` and `fieldA__isnull` so it&#39;s not
10299
+ suitable for cases like the `has_empty_module_bays` filter where an instance may
10300
+ not have any module bays.
10301
+
10302
+ See the below table for more information:
10303
+
10304
+ | value | exclude | Result
10305
+ |-------------|------------------|-------
10306
+ | True | False (default) | Return instances with at least one non-null match -- qs.filter(field_name__isnull=False)
10307
+ | False | False (default) | Exclude instances with at least one non-null match -- qs.exclude(field_name__isnull=False)
10308
+ | True | True | Return instances with at least one null match -- qs.filter(field_name__isnull=True)
10309
+ | False | True | Exclude instances with at least one null match -- qs.exclude(field_name__isnull=True)
9385
10310
  </code></pre></div>
9386
10311
 
9387
10312
 
9388
-
9389
10313
 
9390
- <div class="doc doc-children">
9391
10314
 
10315
+ <div class="doc doc-children">
9392
10316
 
9393
10317
 
9394
10318
 
@@ -9399,10 +10323,10 @@ argument to test for the existence of related objects.</p>
9399
10323
 
9400
10324
 
9401
10325
 
9402
- </div>
9403
10326
 
9404
10327
  </div>
9405
10328
 
10329
+ </div>
9406
10330
 
9407
10331
  </div>
9408
10332
 
@@ -9411,24 +10335,23 @@ argument to test for the existence of related objects.</p>
9411
10335
 
9412
10336
 
9413
10337
  <h2 id="nautobot.apps.filters.RelationshipFilter" class="doc doc-heading">
9414
- <code>nautobot.apps.filters.RelationshipFilter</code>
10338
+ <code>nautobot.apps.filters.RelationshipFilter</code>
9415
10339
 
9416
10340
 
9417
10341
  <a href="#nautobot.apps.filters.RelationshipFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9418
10342
 
9419
10343
 
9420
- <div class="doc doc-contents ">
9421
- <p class="doc doc-class-bases">
9422
- Bases: <code><span title="django_filters.ModelMultipleChoiceFilter">ModelMultipleChoiceFilter</span></code></p>
10344
+ <div class="doc doc-contents ">
10345
+ <p class="doc doc-class-bases">
10346
+ Bases: <code><span title="django_filters.ModelMultipleChoiceFilter">ModelMultipleChoiceFilter</span></code></p>
10347
+
9423
10348
 
9424
-
9425
10349
  <p>Filter objects by the presence of associations on a given Relationship.</p>
9426
10350
 
9427
10351
 
9428
-
9429
10352
 
9430
- <div class="doc doc-children">
9431
10353
 
10354
+ <div class="doc doc-children">
9432
10355
 
9433
10356
 
9434
10357
 
@@ -9439,10 +10362,10 @@ argument to test for the existence of related objects.</p>
9439
10362
 
9440
10363
 
9441
10364
 
9442
- </div>
9443
10365
 
9444
10366
  </div>
9445
10367
 
10368
+ </div>
9446
10369
 
9447
10370
  </div>
9448
10371
 
@@ -9451,24 +10374,23 @@ argument to test for the existence of related objects.</p>
9451
10374
 
9452
10375
 
9453
10376
  <h2 id="nautobot.apps.filters.RelationshipModelFilterSetMixin" class="doc doc-heading">
9454
- <code>nautobot.apps.filters.RelationshipModelFilterSetMixin</code>
10377
+ <code>nautobot.apps.filters.RelationshipModelFilterSetMixin</code>
9455
10378
 
9456
10379
 
9457
10380
  <a href="#nautobot.apps.filters.RelationshipModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9458
10381
 
9459
10382
 
9460
- <div class="doc doc-contents ">
9461
- <p class="doc doc-class-bases">
9462
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10383
+ <div class="doc doc-contents ">
10384
+ <p class="doc doc-class-bases">
10385
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10386
+
9463
10387
 
9464
-
9465
10388
  <p>Filterset for relationships applicable to the parent model.</p>
9466
10389
 
9467
10390
 
9468
-
9469
10391
 
9470
- <div class="doc doc-children">
9471
10392
 
10393
+ <div class="doc doc-children">
9472
10394
 
9473
10395
 
9474
10396
 
@@ -9479,10 +10401,10 @@ argument to test for the existence of related objects.</p>
9479
10401
 
9480
10402
 
9481
10403
 
9482
- </div>
9483
10404
 
9484
10405
  </div>
9485
10406
 
10407
+ </div>
9486
10408
 
9487
10409
  </div>
9488
10410
 
@@ -9491,24 +10413,23 @@ argument to test for the existence of related objects.</p>
9491
10413
 
9492
10414
 
9493
10415
  <h2 id="nautobot.apps.filters.RoleFilter" class="doc doc-heading">
9494
- <code>nautobot.apps.filters.RoleFilter</code>
10416
+ <code>nautobot.apps.filters.RoleFilter</code>
9495
10417
 
9496
10418
 
9497
10419
  <a href="#nautobot.apps.filters.RoleFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9498
10420
 
9499
10421
 
9500
- <div class="doc doc-contents ">
9501
- <p class="doc doc-class-bases">
9502
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10422
+ <div class="doc doc-contents ">
10423
+ <p class="doc doc-class-bases">
10424
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10425
+
9503
10426
 
9504
-
9505
10427
  <p>Filter field used for filtering Role fields.</p>
9506
10428
 
9507
10429
 
9508
-
9509
10430
 
9510
- <div class="doc doc-children">
9511
10431
 
10432
+ <div class="doc doc-children">
9512
10433
 
9513
10434
 
9514
10435
 
@@ -9519,10 +10440,10 @@ argument to test for the existence of related objects.</p>
9519
10440
 
9520
10441
 
9521
10442
 
9522
- </div>
9523
10443
 
9524
10444
  </div>
9525
10445
 
10446
+ </div>
9526
10447
 
9527
10448
  </div>
9528
10449
 
@@ -9531,24 +10452,23 @@ argument to test for the existence of related objects.</p>
9531
10452
 
9532
10453
 
9533
10454
  <h2 id="nautobot.apps.filters.RoleModelFilterSetMixin" class="doc doc-heading">
9534
- <code>nautobot.apps.filters.RoleModelFilterSetMixin</code>
10455
+ <code>nautobot.apps.filters.RoleModelFilterSetMixin</code>
9535
10456
 
9536
10457
 
9537
10458
  <a href="#nautobot.apps.filters.RoleModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9538
10459
 
9539
10460
 
9540
- <div class="doc doc-contents ">
9541
- <p class="doc doc-class-bases">
9542
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10461
+ <div class="doc doc-contents ">
10462
+ <p class="doc doc-class-bases">
10463
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10464
+
9543
10465
 
9544
-
9545
10466
  <p>Mixin to add a <code>role</code> filter field to a FilterSet.</p>
9546
10467
 
9547
10468
 
9548
-
9549
10469
 
9550
- <div class="doc doc-children">
9551
10470
 
10471
+ <div class="doc doc-children">
9552
10472
 
9553
10473
 
9554
10474
 
@@ -9559,10 +10479,10 @@ argument to test for the existence of related objects.</p>
9559
10479
 
9560
10480
 
9561
10481
 
9562
- </div>
9563
10482
 
9564
10483
  </div>
9565
10484
 
10485
+ </div>
9566
10486
 
9567
10487
  </div>
9568
10488
 
@@ -9571,25 +10491,24 @@ argument to test for the existence of related objects.</p>
9571
10491
 
9572
10492
 
9573
10493
  <h2 id="nautobot.apps.filters.SearchFilter" class="doc doc-heading">
9574
- <code>nautobot.apps.filters.SearchFilter</code>
10494
+ <code>nautobot.apps.filters.SearchFilter</code>
9575
10495
 
9576
10496
 
9577
10497
  <a href="#nautobot.apps.filters.SearchFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9578
10498
 
9579
10499
 
9580
- <div class="doc doc-contents ">
9581
- <p class="doc doc-class-bases">
9582
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.MappedPredicatesFilterMixin" href="#nautobot.apps.filters.MappedPredicatesFilterMixin">MappedPredicatesFilterMixin</a></code>, <code><span title="django_filters.CharFilter">CharFilter</span></code></p>
10500
+ <div class="doc doc-contents ">
10501
+ <p class="doc doc-class-bases">
10502
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.MappedPredicatesFilterMixin" href="#nautobot.apps.filters.MappedPredicatesFilterMixin">MappedPredicatesFilterMixin</a></code>, <code><span title="django_filters.CharFilter">CharFilter</span></code></p>
10503
+
9583
10504
 
9584
-
9585
10505
  <p>Provide a search filter for use on filtersets as the <code>q=</code> parameter.</p>
9586
10506
  <p>See the docstring for <code>nautobot.core.filters.MappedPredicatesFilterMixin</code> for usage.</p>
9587
10507
 
9588
10508
 
9589
-
9590
10509
 
9591
- <div class="doc doc-children">
9592
10510
 
10511
+ <div class="doc doc-children">
9593
10512
 
9594
10513
 
9595
10514
 
@@ -9600,10 +10519,10 @@ argument to test for the existence of related objects.</p>
9600
10519
 
9601
10520
 
9602
10521
 
9603
- </div>
9604
10522
 
9605
10523
  </div>
9606
10524
 
10525
+ </div>
9607
10526
 
9608
10527
  </div>
9609
10528
 
@@ -9612,24 +10531,23 @@ argument to test for the existence of related objects.</p>
9612
10531
 
9613
10532
 
9614
10533
  <h2 id="nautobot.apps.filters.StatusFilter" class="doc doc-heading">
9615
- <code>nautobot.apps.filters.StatusFilter</code>
10534
+ <code>nautobot.apps.filters.StatusFilter</code>
9616
10535
 
9617
10536
 
9618
10537
  <a href="#nautobot.apps.filters.StatusFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9619
10538
 
9620
10539
 
9621
- <div class="doc doc-contents ">
9622
- <p class="doc doc-class-bases">
9623
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10540
+ <div class="doc doc-contents ">
10541
+ <p class="doc doc-class-bases">
10542
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10543
+
9624
10544
 
9625
-
9626
10545
  <p>Filter field used for filtering Status fields.</p>
9627
10546
 
9628
10547
 
9629
-
9630
10548
 
9631
- <div class="doc doc-children">
9632
10549
 
10550
+ <div class="doc doc-children">
9633
10551
 
9634
10552
 
9635
10553
 
@@ -9640,10 +10558,10 @@ argument to test for the existence of related objects.</p>
9640
10558
 
9641
10559
 
9642
10560
 
9643
- </div>
9644
10561
 
9645
10562
  </div>
9646
10563
 
10564
+ </div>
9647
10565
 
9648
10566
  </div>
9649
10567
 
@@ -9652,24 +10570,23 @@ argument to test for the existence of related objects.</p>
9652
10570
 
9653
10571
 
9654
10572
  <h2 id="nautobot.apps.filters.StatusModelFilterSetMixin" class="doc doc-heading">
9655
- <code>nautobot.apps.filters.StatusModelFilterSetMixin</code>
10573
+ <code>nautobot.apps.filters.StatusModelFilterSetMixin</code>
9656
10574
 
9657
10575
 
9658
10576
  <a href="#nautobot.apps.filters.StatusModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9659
10577
 
9660
10578
 
9661
- <div class="doc doc-contents ">
9662
- <p class="doc doc-class-bases">
9663
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10579
+ <div class="doc doc-contents ">
10580
+ <p class="doc doc-class-bases">
10581
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10582
+
9664
10583
 
9665
-
9666
10584
  <p>Mixin to add a <code>status</code> filter field to a FilterSet.</p>
9667
10585
 
9668
10586
 
9669
-
9670
10587
 
9671
- <div class="doc doc-children">
9672
10588
 
10589
+ <div class="doc doc-children">
9673
10590
 
9674
10591
 
9675
10592
 
@@ -9680,10 +10597,10 @@ argument to test for the existence of related objects.</p>
9680
10597
 
9681
10598
 
9682
10599
 
9683
- </div>
9684
10600
 
9685
10601
  </div>
9686
10602
 
10603
+ </div>
9687
10604
 
9688
10605
  </div>
9689
10606
 
@@ -9692,25 +10609,24 @@ argument to test for the existence of related objects.</p>
9692
10609
 
9693
10610
 
9694
10611
  <h2 id="nautobot.apps.filters.TagFilter" class="doc doc-heading">
9695
- <code>nautobot.apps.filters.TagFilter</code>
10612
+ <code>nautobot.apps.filters.TagFilter</code>
9696
10613
 
9697
10614
 
9698
10615
  <a href="#nautobot.apps.filters.TagFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9699
10616
 
9700
10617
 
9701
- <div class="doc doc-contents ">
9702
- <p class="doc doc-class-bases">
9703
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10618
+ <div class="doc doc-contents ">
10619
+ <p class="doc doc-class-bases">
10620
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10621
+
9704
10622
 
9705
-
9706
10623
  <p>Match on one or more assigned tags. If multiple tags are specified (e.g. ?tag=foo&amp;tag=bar), the queryset is filtered
9707
10624
  to objects matching all tags.</p>
9708
10625
 
9709
10626
 
9710
-
9711
10627
 
9712
- <div class="doc doc-children">
9713
10628
 
10629
+ <div class="doc doc-children">
9714
10630
 
9715
10631
 
9716
10632
 
@@ -9723,16 +10639,15 @@ to objects matching all tags.</p>
9723
10639
  <div class="doc doc-object doc-function">
9724
10640
 
9725
10641
 
9726
-
9727
10642
  <h3 id="nautobot.apps.filters.TagFilter.__init__" class="doc doc-heading">
9728
- <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>
10643
+ <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>
9729
10644
 
9730
10645
  <a href="#nautobot.apps.filters.TagFilter.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
9731
10646
 
9732
10647
 
9733
- <div class="doc doc-contents ">
10648
+ <div class="doc doc-contents ">
9734
10649
 
9735
- </div>
10650
+ </div>
9736
10651
 
9737
10652
  </div>
9738
10653
 
@@ -9740,8 +10655,7 @@ to objects matching all tags.</p>
9740
10655
 
9741
10656
  </div>
9742
10657
 
9743
- </div>
9744
-
10658
+ </div>
9745
10659
 
9746
10660
  </div>
9747
10661
 
@@ -9750,24 +10664,23 @@ to objects matching all tags.</p>
9750
10664
 
9751
10665
 
9752
10666
  <h2 id="nautobot.apps.filters.TenancyModelFilterSetMixin" class="doc doc-heading">
9753
- <code>nautobot.apps.filters.TenancyModelFilterSetMixin</code>
10667
+ <code>nautobot.apps.filters.TenancyModelFilterSetMixin</code>
9754
10668
 
9755
10669
 
9756
10670
  <a href="#nautobot.apps.filters.TenancyModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9757
10671
 
9758
10672
 
9759
- <div class="doc doc-contents ">
9760
- <p class="doc doc-class-bases">
9761
- Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10673
+ <div class="doc doc-contents ">
10674
+ <p class="doc doc-class-bases">
10675
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10676
+
9762
10677
 
9763
-
9764
10678
  <p>An inheritable FilterSet for models which support Tenant assignment.</p>
9765
10679
 
9766
10680
 
9767
-
9768
10681
 
9769
- <div class="doc doc-children">
9770
10682
 
10683
+ <div class="doc doc-children">
9771
10684
 
9772
10685
 
9773
10686
 
@@ -9778,10 +10691,10 @@ to objects matching all tags.</p>
9778
10691
 
9779
10692
 
9780
10693
 
9781
- </div>
9782
10694
 
9783
10695
  </div>
9784
10696
 
10697
+ </div>
9785
10698
 
9786
10699
  </div>
9787
10700
 
@@ -9790,17 +10703,17 @@ to objects matching all tags.</p>
9790
10703
 
9791
10704
 
9792
10705
  <h2 id="nautobot.apps.filters.TreeNodeMultipleChoiceFilter" class="doc doc-heading">
9793
- <code>nautobot.apps.filters.TreeNodeMultipleChoiceFilter</code>
10706
+ <code>nautobot.apps.filters.TreeNodeMultipleChoiceFilter</code>
9794
10707
 
9795
10708
 
9796
10709
  <a href="#nautobot.apps.filters.TreeNodeMultipleChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9797
10710
 
9798
10711
 
9799
- <div class="doc doc-contents ">
9800
- <p class="doc doc-class-bases">
9801
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10712
+ <div class="doc doc-contents ">
10713
+ <p class="doc doc-class-bases">
10714
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10715
+
9802
10716
 
9803
-
9804
10717
  <p>Filter that matches on the given model(s) (identified by name and/or pk) <em>as well as their tree descendants.</em></p>
9805
10718
  <p>For example, if we have:</p>
9806
10719
  <div class="highlight"><pre><span></span><code>Location &quot;Earth&quot;
@@ -9814,10 +10727,9 @@ but a TreeNodeMultipleChoiceFilter on Location for {"parent": "USA"}
9814
10727
  would match both "Athens" and "Durham" in addition to "GA" and "NC".</p>
9815
10728
 
9816
10729
 
9817
-
9818
10730
 
9819
- <div class="doc doc-children">
9820
10731
 
10732
+ <div class="doc doc-children">
9821
10733
 
9822
10734
 
9823
10735
 
@@ -9830,18 +10742,17 @@ would match both "Athens" and "Durham" in addition to "GA" and "NC".</p>
9830
10742
  <div class="doc doc-object doc-function">
9831
10743
 
9832
10744
 
9833
-
9834
10745
  <h3 id="nautobot.apps.filters.TreeNodeMultipleChoiceFilter.generate_query" class="doc doc-heading">
9835
- <code class="highlight language-python"><span class="n">generate_query</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">qs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10746
+ <code class="highlight language-python"><span class="n">generate_query</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">qs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
9836
10747
 
9837
10748
  <a href="#nautobot.apps.filters.TreeNodeMultipleChoiceFilter.generate_query" class="headerlink" title="Permanent link">&para;</a></h3>
9838
10749
 
9839
10750
 
9840
- <div class="doc doc-contents ">
9841
-
10751
+ <div class="doc doc-contents ">
10752
+
9842
10753
  <p>Given a filter value, return a <code>Q</code> object that accounts for nested tree node descendants.</p>
9843
10754
 
9844
- </div>
10755
+ </div>
9845
10756
 
9846
10757
  </div>
9847
10758
 
@@ -9849,29 +10760,26 @@ would match both "Athens" and "Durham" in addition to "GA" and "NC".</p>
9849
10760
 
9850
10761
  </div>
9851
10762
 
9852
- </div>
9853
-
10763
+ </div>
9854
10764
 
9855
10765
  </div>
9856
10766
 
9857
10767
 
9858
-
9859
10768
  <div class="doc doc-object doc-function">
9860
10769
 
9861
10770
 
9862
-
9863
10771
  <h2 id="nautobot.apps.filters.multivalue_field_factory" class="doc doc-heading">
9864
- <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">filters</span><span class="o">.</span><span class="n">multivalue_field_factory</span><span class="p">(</span><span class="n">field_class</span><span class="p">,</span> <span class="n">widget</span><span class="o">=</span><span class="n">django_forms</span><span class="o">.</span><span class="n">SelectMultiple</span><span class="p">)</span></code>
10772
+ <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">filters</span><span class="o">.</span><span class="n">multivalue_field_factory</span><span class="p">(</span><span class="n">field_class</span><span class="p">,</span> <span class="n">widget</span><span class="o">=</span><span class="n">django_forms</span><span class="o">.</span><span class="n">SelectMultiple</span><span class="p">)</span></code>
9865
10773
 
9866
10774
  <a href="#nautobot.apps.filters.multivalue_field_factory" class="headerlink" title="Permanent link">&para;</a></h2>
9867
10775
 
9868
10776
 
9869
- <div class="doc doc-contents ">
9870
-
10777
+ <div class="doc doc-contents ">
10778
+
9871
10779
  <p>Given a form field class, return a subclass capable of accepting multiple values. This allows us to OR on multiple
9872
10780
  filter values while maintaining the field's built-in validation. Example: GET /api/dcim/devices/?name=foo&amp;name=bar</p>
9873
10781
 
9874
- </div>
10782
+ </div>
9875
10783
 
9876
10784
  </div>
9877
10785
 
@@ -9879,7 +10787,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
9879
10787
 
9880
10788
  </div>
9881
10789
 
9882
- </div>
10790
+ </div>
9883
10791
 
9884
10792
  </div>
9885
10793
 
@@ -9978,7 +10886,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
9978
10886
 
9979
10887
 
9980
10888
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
9981
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zm0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0zm32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
10889
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zm0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0zm32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
9982
10890
  </a>
9983
10891
 
9984
10892
 
@@ -9986,7 +10894,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
9986
10894
 
9987
10895
 
9988
10896
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
9989
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
10897
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
9990
10898
  </a>
9991
10899
 
9992
10900
 
@@ -9994,7 +10902,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
9994
10902
 
9995
10903
 
9996
10904
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
9997
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
10905
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
9998
10906
  </a>
9999
10907
 
10000
10908
 
@@ -10002,7 +10910,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
10002
10910
 
10003
10911
 
10004
10912
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
10005
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
10913
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
10006
10914
  </a>
10007
10915
 
10008
10916
 
@@ -10010,7 +10918,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
10010
10918
 
10011
10919
 
10012
10920
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
10013
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
10921
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
10014
10922
  </a>
10015
10923
 
10016
10924
  </div>