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

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

Potentially problematic release.


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

Files changed (697) hide show
  1. nautobot/apps/forms.py +4 -0
  2. nautobot/apps/models.py +10 -1
  3. nautobot/circuits/__init__.py +0 -1
  4. nautobot/circuits/apps.py +1 -0
  5. nautobot/circuits/factory.py +15 -3
  6. nautobot/circuits/filters.py +13 -0
  7. nautobot/circuits/forms.py +13 -0
  8. nautobot/circuits/migrations/0021_alter_circuit_status_alter_circuittermination__path.py +32 -0
  9. nautobot/circuits/migrations/0022_circuittermination_cloud_network.py +25 -0
  10. nautobot/circuits/models.py +16 -3
  11. nautobot/circuits/tables.py +16 -2
  12. nautobot/circuits/templates/circuits/circuittermination_create.html +10 -2
  13. nautobot/circuits/templates/circuits/circuittermination_retrieve.html +6 -0
  14. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -1
  15. nautobot/circuits/tests/test_api.py +7 -5
  16. nautobot/circuits/tests/test_filters.py +12 -5
  17. nautobot/circuits/tests/test_models.py +33 -2
  18. nautobot/circuits/views.py +2 -3
  19. nautobot/cloud/__init__.py +0 -0
  20. nautobot/cloud/api/__init__.py +0 -0
  21. nautobot/cloud/api/serializers.py +54 -0
  22. nautobot/cloud/api/urls.py +16 -0
  23. nautobot/cloud/api/views.py +48 -0
  24. nautobot/cloud/apps.py +13 -0
  25. nautobot/cloud/factory.py +111 -0
  26. nautobot/cloud/filters.py +184 -0
  27. nautobot/cloud/forms.py +333 -0
  28. nautobot/cloud/homepage.py +43 -0
  29. nautobot/cloud/migrations/0001_initial.py +304 -0
  30. nautobot/cloud/migrations/__init__.py +0 -0
  31. nautobot/cloud/models.py +247 -0
  32. nautobot/cloud/navigation.py +85 -0
  33. nautobot/cloud/tables.py +173 -0
  34. nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +43 -0
  35. nautobot/cloud/templates/cloud/cloudnetwork_retrieve.html +128 -0
  36. nautobot/cloud/templates/cloud/cloudnetwork_update.html +33 -0
  37. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +100 -0
  38. nautobot/cloud/templates/cloud/cloudservice_retrieve.html +65 -0
  39. nautobot/cloud/templates/cloud/cloudservice_update.html +25 -0
  40. nautobot/cloud/tests/__init__.py +0 -0
  41. nautobot/cloud/tests/test_api.py +248 -0
  42. nautobot/cloud/tests/test_filters.py +113 -0
  43. nautobot/cloud/tests/test_models.py +43 -0
  44. nautobot/cloud/tests/test_views.py +153 -0
  45. nautobot/cloud/urls.py +14 -0
  46. nautobot/cloud/views.py +181 -0
  47. nautobot/core/__init__.py +0 -3
  48. nautobot/core/api/metadata.py +1 -0
  49. nautobot/core/api/parsers.py +7 -1
  50. nautobot/core/api/urls.py +1 -0
  51. nautobot/core/api/utils.py +1 -0
  52. nautobot/core/api/views.py +4 -0
  53. nautobot/core/apps/__init__.py +6 -3
  54. nautobot/core/constants.py +8 -0
  55. nautobot/core/factory.py +32 -1
  56. nautobot/core/filters.py +96 -28
  57. nautobot/core/forms/fields.py +10 -4
  58. nautobot/core/forms/forms.py +1 -1
  59. nautobot/core/forms/widgets.py +18 -1
  60. nautobot/core/graphql/generators.py +2 -2
  61. nautobot/core/graphql/schema.py +34 -4
  62. nautobot/core/jobs/__init__.py +17 -6
  63. nautobot/core/jobs/cleanup.py +100 -0
  64. nautobot/core/jobs/groups.py +38 -0
  65. nautobot/core/management/commands/generate_test_data.py +116 -3
  66. nautobot/core/models/__init__.py +34 -9
  67. nautobot/core/models/generics.py +19 -3
  68. nautobot/core/models/name_color_content_types.py +7 -28
  69. nautobot/core/models/querysets.py +4 -3
  70. nautobot/core/models/tree_queries.py +1 -1
  71. nautobot/core/models/utils.py +21 -5
  72. nautobot/core/settings.py +4 -30
  73. nautobot/core/settings.yaml +34 -27
  74. nautobot/core/settings_funcs.py +103 -0
  75. nautobot/core/tables.py +127 -56
  76. nautobot/core/templates/admin/search_form.html +1 -1
  77. nautobot/core/templates/buttons/add.html +11 -3
  78. nautobot/core/templates/buttons/consolidated_bulk_action_buttons.html +13 -0
  79. nautobot/core/templates/buttons/consolidated_detail_view_action_buttons.html +13 -0
  80. nautobot/core/templates/buttons/export.html +101 -53
  81. nautobot/core/templates/buttons/job_import.html +11 -3
  82. nautobot/core/templates/generic/object_bulk_destroy.html +3 -1
  83. nautobot/core/templates/generic/object_bulk_update.html +3 -1
  84. nautobot/core/templates/generic/object_changelog.html +0 -9
  85. nautobot/core/templates/generic/object_list.html +156 -17
  86. nautobot/core/templates/generic/object_retrieve.html +80 -16
  87. nautobot/core/templates/inc/extras_features_edit_form_fields.html +8 -0
  88. nautobot/core/templates/inc/javascript.html +2 -0
  89. nautobot/core/templates/inc/media.html +2 -2
  90. nautobot/core/templates/inc/nav_menu.html +1 -0
  91. nautobot/core/templates/inc/paginator.html +7 -7
  92. nautobot/core/templates/inc/search_panel.html +2 -2
  93. nautobot/core/templates/inc/table.html +2 -2
  94. nautobot/core/templates/nautobot_config.py.j2 +13 -23
  95. nautobot/core/templates/utilities/templatetags/dynamic_group_assignment_modal.html +37 -0
  96. nautobot/core/templates/utilities/templatetags/filter_form_modal.html +2 -2
  97. nautobot/core/templates/utilities/templatetags/saved_view_modal.html +38 -0
  98. nautobot/core/templates/utilities/theme_preview.html +25 -8
  99. nautobot/core/templates/utilities/worker_status.html +152 -0
  100. nautobot/core/templatetags/buttons.py +335 -38
  101. nautobot/core/templatetags/form_helpers.py +1 -1
  102. nautobot/core/templatetags/helpers.py +181 -11
  103. nautobot/core/testing/api.py +5 -4
  104. nautobot/core/testing/filters.py +51 -13
  105. nautobot/core/testing/mixins.py +46 -0
  106. nautobot/core/testing/models.py +22 -0
  107. nautobot/core/testing/schema.py +4 -8
  108. nautobot/core/testing/views.py +31 -14
  109. nautobot/core/tests/integration/test_general_functionality.py +1 -1
  110. nautobot/core/tests/integration/test_import_objects_ui.py +1 -0
  111. nautobot/core/tests/integration/test_swagger.py +1 -1
  112. nautobot/core/tests/nautobot_config.py +0 -1
  113. nautobot/core/tests/runner.py +2 -2
  114. nautobot/core/tests/test_api.py +1 -0
  115. nautobot/core/tests/test_authentication.py +7 -2
  116. nautobot/core/tests/test_filters.py +11 -9
  117. nautobot/core/tests/test_forms.py +9 -0
  118. nautobot/core/tests/test_graphql.py +27 -16
  119. nautobot/core/tests/test_jobs.py +123 -74
  120. nautobot/core/tests/test_tables.py +3 -1
  121. nautobot/core/tests/test_templatetags_helpers.py +12 -5
  122. nautobot/core/tests/test_utils.py +31 -20
  123. nautobot/core/tests/test_views.py +6 -6
  124. nautobot/core/urls.py +8 -3
  125. nautobot/core/utils/deprecation.py +29 -0
  126. nautobot/core/utils/filtering.py +12 -9
  127. nautobot/core/utils/lookup.py +37 -2
  128. nautobot/core/utils/requests.py +4 -1
  129. nautobot/core/views/__init__.py +137 -24
  130. nautobot/core/views/generic.py +118 -66
  131. nautobot/core/views/mixins.py +104 -35
  132. nautobot/core/views/paginator.py +9 -3
  133. nautobot/core/views/renderers.py +121 -56
  134. nautobot/core/views/utils.py +79 -1
  135. nautobot/dcim/__init__.py +0 -1
  136. nautobot/dcim/api/serializers.py +180 -44
  137. nautobot/dcim/api/urls.py +7 -3
  138. nautobot/dcim/api/views.py +53 -7
  139. nautobot/dcim/apps.py +3 -0
  140. nautobot/dcim/choices.py +25 -0
  141. nautobot/dcim/constants.py +7 -0
  142. nautobot/dcim/factory.py +249 -18
  143. nautobot/dcim/filters/__init__.py +369 -193
  144. nautobot/dcim/filters/mixins.py +274 -1
  145. nautobot/dcim/forms.py +817 -109
  146. nautobot/dcim/graphql/types.py +2 -2
  147. nautobot/dcim/homepage.py +1 -1
  148. nautobot/dcim/migrations/0059_add_role_field_to_interface_models.py +27 -0
  149. nautobot/dcim/migrations/0060_alter_cable_status_alter_consoleport__path_and_more.py +303 -0
  150. nautobot/dcim/migrations/0061_module_models.py +861 -0
  151. nautobot/dcim/migrations/0062_module_data_migration.py +25 -0
  152. nautobot/dcim/models/__init__.py +8 -0
  153. nautobot/dcim/models/cables.py +15 -0
  154. nautobot/dcim/models/device_component_templates.py +207 -53
  155. nautobot/dcim/models/device_components.py +275 -106
  156. nautobot/dcim/models/devices.py +466 -13
  157. nautobot/dcim/navigation.py +47 -0
  158. nautobot/dcim/signals.py +3 -3
  159. nautobot/dcim/tables/__init__.py +35 -23
  160. nautobot/dcim/tables/devices.py +231 -59
  161. nautobot/dcim/tables/devicetypes.py +65 -9
  162. nautobot/dcim/tables/racks.py +5 -1
  163. nautobot/dcim/tables/template_code.py +46 -26
  164. nautobot/dcim/templates/dcim/cable_connect.html +76 -3
  165. nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -5
  166. nautobot/dcim/templates/dcim/device/base.html +15 -7
  167. nautobot/dcim/templates/dcim/device/consoleports.html +2 -3
  168. nautobot/dcim/templates/dcim/device/consoleserverports.html +2 -3
  169. nautobot/dcim/templates/dcim/device/devicebays.html +6 -7
  170. nautobot/dcim/templates/dcim/device/frontports.html +2 -3
  171. nautobot/dcim/templates/dcim/device/interfaces.html +2 -3
  172. nautobot/dcim/templates/dcim/device/inventory.html +2 -3
  173. nautobot/dcim/templates/dcim/device/modulebays.html +49 -0
  174. nautobot/dcim/templates/dcim/device/poweroutlets.html +2 -3
  175. nautobot/dcim/templates/dcim/device/powerports.html +2 -3
  176. nautobot/dcim/templates/dcim/device/rearports.html +2 -3
  177. nautobot/dcim/templates/dcim/device.html +45 -1
  178. nautobot/dcim/templates/dcim/device_component.html +13 -5
  179. nautobot/dcim/templates/dcim/device_list.html +2 -1
  180. nautobot/dcim/templates/dcim/deviceredundancygroup_retrieve.html +0 -6
  181. nautobot/dcim/templates/dcim/devicetype.html +99 -98
  182. nautobot/dcim/templates/dcim/devicetype_list.html +8 -16
  183. nautobot/dcim/templates/dcim/inc/devicetype_component_table.html +1 -1
  184. nautobot/dcim/templates/dcim/inc/moduletype_component_table.html +39 -0
  185. nautobot/dcim/templates/dcim/interface.html +17 -2
  186. nautobot/dcim/templates/dcim/interface_connection_list.html +7 -5
  187. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  188. nautobot/dcim/templates/dcim/manufacturer.html +24 -0
  189. nautobot/dcim/templates/dcim/module/base.html +97 -0
  190. nautobot/dcim/templates/dcim/module_bulk_destroy.html +5 -0
  191. nautobot/dcim/templates/dcim/module_consoleports.html +53 -0
  192. nautobot/dcim/templates/dcim/module_consoleserverports.html +53 -0
  193. nautobot/dcim/templates/dcim/module_destroy.html +5 -0
  194. nautobot/dcim/templates/dcim/module_frontports.html +53 -0
  195. nautobot/dcim/templates/dcim/module_interfaces.html +57 -0
  196. nautobot/dcim/templates/dcim/module_list.html +20 -0
  197. nautobot/dcim/templates/dcim/module_modulebays.html +49 -0
  198. nautobot/dcim/templates/dcim/module_poweroutlets.html +53 -0
  199. nautobot/dcim/templates/dcim/module_powerports.html +53 -0
  200. nautobot/dcim/templates/dcim/module_rearports.html +53 -0
  201. nautobot/dcim/templates/dcim/module_retrieve.html +63 -0
  202. nautobot/dcim/templates/dcim/module_update.html +71 -0
  203. nautobot/dcim/templates/dcim/modulebay_bulk_destroy.html +5 -0
  204. nautobot/dcim/templates/dcim/modulebay_destroy.html +8 -0
  205. nautobot/dcim/templates/dcim/modulebay_retrieve.html +101 -0
  206. nautobot/dcim/templates/dcim/moduletype_list.html +11 -0
  207. nautobot/dcim/templates/dcim/moduletype_retrieve.html +142 -0
  208. nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -5
  209. nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +65 -19
  210. nautobot/dcim/tests/integration/test_cable_connect_form.py +4 -4
  211. nautobot/dcim/tests/test_api.py +691 -208
  212. nautobot/dcim/tests/test_filters.py +836 -217
  213. nautobot/dcim/tests/test_models.py +1072 -39
  214. nautobot/dcim/tests/test_views.py +1488 -358
  215. nautobot/dcim/urls.py +17 -2
  216. nautobot/dcim/utils.py +2 -3
  217. nautobot/dcim/views.py +1107 -120
  218. nautobot/extras/__init__.py +0 -1
  219. nautobot/extras/api/serializers.py +115 -3
  220. nautobot/extras/api/urls.py +12 -0
  221. nautobot/extras/api/views.py +125 -7
  222. nautobot/extras/apps.py +2 -2
  223. nautobot/extras/choices.py +43 -0
  224. nautobot/extras/context_managers.py +13 -8
  225. nautobot/extras/datasources/git.py +2 -0
  226. nautobot/extras/factory.py +422 -9
  227. nautobot/extras/filters/__init__.py +174 -3
  228. nautobot/extras/filters/mixins.py +46 -43
  229. nautobot/extras/forms/base.py +17 -4
  230. nautobot/extras/forms/forms.py +227 -8
  231. nautobot/extras/forms/mixins.py +93 -0
  232. nautobot/extras/graphql/types.py +23 -10
  233. nautobot/extras/homepage.py +16 -13
  234. nautobot/extras/jobs.py +2 -2
  235. nautobot/extras/management/__init__.py +1 -0
  236. nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -16
  237. nautobot/extras/migrations/0021_customfield_changelog_data.py +1 -0
  238. nautobot/extras/migrations/0109_dynamicgroup_group_type_dynamicgroup_tags_and_more.py +108 -0
  239. nautobot/extras/migrations/0110_alter_configcontext_cluster_groups_and_more.py +111 -0
  240. nautobot/extras/migrations/0111_metadata.py +162 -0
  241. nautobot/extras/migrations/0112_dynamic_group_group_type_data_migration.py +28 -0
  242. nautobot/extras/migrations/0113_saved_views.py +77 -0
  243. nautobot/extras/models/__init__.py +15 -1
  244. nautobot/extras/models/change_logging.py +3 -3
  245. nautobot/extras/models/contacts.py +4 -0
  246. nautobot/extras/models/customfields.py +18 -3
  247. nautobot/extras/models/groups.py +389 -225
  248. nautobot/extras/models/jobs.py +4 -84
  249. nautobot/extras/models/metadata.py +441 -0
  250. nautobot/extras/models/mixins.py +72 -62
  251. nautobot/extras/models/models.py +116 -9
  252. nautobot/extras/models/relationships.py +9 -2
  253. nautobot/extras/models/tags.py +13 -2
  254. nautobot/extras/navigation.py +57 -0
  255. nautobot/extras/plugins/__init__.py +3 -1
  256. nautobot/extras/querysets.py +30 -66
  257. nautobot/extras/signals.py +96 -114
  258. nautobot/extras/tables.py +171 -47
  259. nautobot/extras/templates/extras/dynamicgroup.html +44 -15
  260. nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -0
  261. nautobot/extras/templates/extras/job.html +1 -1
  262. nautobot/extras/templates/extras/job_detail.html +0 -11
  263. nautobot/extras/templates/extras/jobresult.html +61 -74
  264. nautobot/extras/templates/extras/metadatatype_create.html +89 -0
  265. nautobot/extras/templates/extras/metadatatype_retrieve.html +67 -0
  266. nautobot/extras/templates/extras/object_dynamicgroups.html +7 -0
  267. nautobot/extras/templates/extras/objectchange_list.html +0 -12
  268. nautobot/extras/templates/extras/plugins_list.html +1 -3
  269. nautobot/extras/templates/extras/role_retrieve.html +48 -0
  270. nautobot/extras/templates/extras/staticgroupassociation_retrieve.html +20 -0
  271. nautobot/extras/tests/integration/test_customfields.py +1 -0
  272. nautobot/extras/tests/test_api.py +501 -22
  273. nautobot/extras/tests/test_changelog.py +20 -9
  274. nautobot/extras/tests/test_context_managers.py +22 -15
  275. nautobot/extras/tests/test_datasources.py +13 -1
  276. nautobot/extras/tests/test_dynamicgroups.py +201 -171
  277. nautobot/extras/tests/test_filters.py +211 -12
  278. nautobot/extras/tests/test_jobs.py +4 -4
  279. nautobot/extras/tests/test_models.py +499 -4
  280. nautobot/extras/tests/test_relationships.py +1 -0
  281. nautobot/extras/tests/test_views.py +565 -28
  282. nautobot/extras/tests/test_webhooks.py +1 -1
  283. nautobot/extras/urls.py +5 -0
  284. nautobot/extras/utils.py +56 -45
  285. nautobot/extras/views.py +585 -96
  286. nautobot/ipam/__init__.py +0 -1
  287. nautobot/ipam/apps.py +1 -0
  288. nautobot/ipam/factory.py +17 -19
  289. nautobot/ipam/filters.py +14 -1
  290. nautobot/ipam/forms.py +9 -5
  291. nautobot/ipam/graphql/types.py +2 -2
  292. nautobot/ipam/migrations/0047_alter_ipaddress_role_alter_ipaddress_status_and_more.py +59 -0
  293. nautobot/ipam/models.py +23 -9
  294. nautobot/ipam/querysets.py +1 -1
  295. nautobot/ipam/signals.py +4 -2
  296. nautobot/ipam/tables.py +1 -0
  297. nautobot/ipam/templates/ipam/ipaddress_interfaces.html +1 -1
  298. nautobot/ipam/templates/ipam/ipaddress_vm_interfaces.html +1 -1
  299. nautobot/ipam/templates/ipam/prefix.html +1 -0
  300. nautobot/ipam/tests/test_api.py +37 -18
  301. nautobot/ipam/tests/test_filters.py +26 -2
  302. nautobot/ipam/tests/test_models.py +8 -3
  303. nautobot/ipam/tests/test_querysets.py +1 -1
  304. nautobot/ipam/tests/test_views.py +3 -2
  305. nautobot/ipam/urls.py +2 -2
  306. nautobot/ipam/views.py +25 -28
  307. nautobot/project-static/css/base.css +20 -1
  308. nautobot/project-static/css/dark.css +11 -0
  309. nautobot/project-static/docs/404.html +884 -80
  310. nautobot/project-static/docs/apps/index.html +884 -80
  311. nautobot/project-static/docs/apps/nautobot-apps.html +884 -80
  312. nautobot/project-static/docs/assets/_mkdocstrings.css +5 -0
  313. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +911 -112
  314. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +896 -93
  315. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1457 -790
  316. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +927 -136
  317. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +969 -180
  318. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +893 -91
  319. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +889 -85
  320. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +983 -185
  321. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +938 -143
  322. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1064 -274
  323. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1190 -346
  324. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1663 -865
  325. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +1156 -373
  326. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2200 -1502
  327. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +2229 -1421
  328. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +904 -103
  329. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +955 -155
  330. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1002 -215
  331. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +1911 -1275
  332. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +1835 -1091
  333. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +896 -93
  334. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +2323 -1693
  335. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1785 -1023
  336. nautobot/project-static/docs/development/apps/api/configuration-view.html +884 -80
  337. nautobot/project-static/docs/development/apps/api/database-backend-config.html +884 -80
  338. nautobot/project-static/docs/development/apps/api/models/django-admin.html +884 -80
  339. nautobot/project-static/docs/development/apps/api/models/global-search.html +884 -80
  340. nautobot/project-static/docs/development/apps/api/models/graphql.html +884 -80
  341. nautobot/project-static/docs/development/apps/api/models/index.html +922 -81
  342. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +884 -80
  343. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +884 -80
  344. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +884 -80
  345. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +884 -80
  346. nautobot/project-static/docs/development/apps/api/platform-features/index.html +884 -80
  347. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +884 -80
  348. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +884 -80
  349. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +884 -80
  350. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +884 -80
  351. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +884 -80
  352. nautobot/project-static/docs/development/apps/api/prometheus.html +884 -80
  353. nautobot/project-static/docs/development/apps/api/setup.html +884 -80
  354. nautobot/project-static/docs/development/apps/api/testing.html +884 -80
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +884 -80
  356. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +884 -80
  357. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +884 -80
  358. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +884 -80
  359. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +884 -80
  360. nautobot/project-static/docs/development/apps/api/views/base-template.html +884 -80
  361. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +884 -80
  362. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +884 -80
  363. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +884 -80
  364. nautobot/project-static/docs/development/apps/api/views/index.html +884 -80
  365. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +884 -80
  366. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +884 -80
  367. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +884 -80
  368. nautobot/project-static/docs/development/apps/api/views/notes.html +884 -80
  369. nautobot/project-static/docs/development/apps/api/views/rest-api.html +884 -80
  370. nautobot/project-static/docs/development/apps/api/views/urls.html +884 -80
  371. nautobot/project-static/docs/development/apps/index.html +884 -80
  372. nautobot/project-static/docs/development/apps/migration/code-updates.html +884 -80
  373. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +884 -80
  374. nautobot/project-static/docs/development/apps/migration/from-v1.html +884 -80
  375. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +884 -80
  376. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +884 -80
  377. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +884 -80
  378. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +884 -80
  379. nautobot/project-static/docs/development/apps/porting-from-netbox.html +884 -80
  380. nautobot/project-static/docs/development/core/application-registry.html +884 -80
  381. nautobot/project-static/docs/development/core/best-practices.html +885 -80
  382. nautobot/project-static/docs/development/core/bootstrap-ui.html +884 -80
  383. nautobot/project-static/docs/development/core/caching.html +884 -80
  384. nautobot/project-static/docs/development/core/controllers.html +884 -80
  385. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +884 -80
  386. nautobot/project-static/docs/development/core/generic-views.html +884 -80
  387. nautobot/project-static/docs/development/core/getting-started.html +884 -80
  388. nautobot/project-static/docs/development/core/homepage.html +884 -80
  389. nautobot/project-static/docs/development/core/index.html +884 -91
  390. nautobot/project-static/docs/development/core/model-checklist.html +887 -81
  391. nautobot/project-static/docs/development/core/model-features.html +884 -80
  392. nautobot/project-static/docs/development/core/natural-keys.html +884 -80
  393. nautobot/project-static/docs/development/core/navigation-menu.html +884 -80
  394. nautobot/project-static/docs/development/core/release-checklist.html +887 -83
  395. nautobot/project-static/docs/development/core/role-internals.html +884 -80
  396. nautobot/project-static/docs/development/core/settings.html +884 -80
  397. nautobot/project-static/docs/development/core/style-guide.html +885 -81
  398. nautobot/project-static/docs/development/core/templates.html +896 -81
  399. nautobot/project-static/docs/development/core/testing.html +884 -80
  400. nautobot/project-static/docs/development/core/user-preferences.html +884 -80
  401. nautobot/project-static/docs/development/index.html +884 -80
  402. nautobot/project-static/docs/development/jobs/index.html +1247 -457
  403. nautobot/project-static/docs/development/jobs/migration/from-v1.html +884 -80
  404. nautobot/project-static/docs/index.html +13 -8228
  405. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_dark.png +0 -0
  406. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_light.png +0 -0
  407. nautobot/project-static/docs/models/cloud/cloudaccount.html +15 -0
  408. nautobot/project-static/docs/models/cloud/cloudnetwork.html +15 -0
  409. nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +15 -0
  410. nautobot/project-static/docs/models/cloud/cloudresourcetype.html +15 -0
  411. nautobot/project-static/docs/models/cloud/cloudservice.html +15 -0
  412. nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +15 -0
  413. nautobot/project-static/docs/models/dcim/module.html +15 -0
  414. nautobot/project-static/docs/models/dcim/modulebay.html +15 -0
  415. nautobot/project-static/docs/models/dcim/modulebaytemplate.html +15 -0
  416. nautobot/project-static/docs/models/dcim/moduletype.html +15 -0
  417. nautobot/project-static/docs/models/extras/metadatachoice.html +15 -0
  418. nautobot/project-static/docs/models/extras/metadatatype.html +15 -0
  419. nautobot/project-static/docs/models/extras/objectmetadata.html +15 -0
  420. nautobot/project-static/docs/models/extras/role.html +15 -0
  421. nautobot/project-static/docs/models/extras/savedview.html +15 -0
  422. nautobot/project-static/docs/models/extras/staticgroupassociation.html +15 -0
  423. nautobot/project-static/docs/models/extras/status.html +15 -0
  424. nautobot/project-static/docs/objects.inv +0 -0
  425. nautobot/project-static/docs/overview/application_stack.html +892 -81
  426. nautobot/project-static/docs/overview/design_philosophy.html +886 -82
  427. nautobot/project-static/docs/overview/index.html +9032 -13
  428. nautobot/project-static/docs/release-notes/index.html +887 -83
  429. nautobot/project-static/docs/release-notes/version-1.0.html +884 -80
  430. nautobot/project-static/docs/release-notes/version-1.1.html +884 -80
  431. nautobot/project-static/docs/release-notes/version-1.2.html +884 -80
  432. nautobot/project-static/docs/release-notes/version-1.3.html +884 -80
  433. nautobot/project-static/docs/release-notes/version-1.4.html +884 -80
  434. nautobot/project-static/docs/release-notes/version-1.5.html +885 -81
  435. nautobot/project-static/docs/release-notes/version-1.6.html +885 -81
  436. nautobot/project-static/docs/release-notes/version-2.0.html +884 -80
  437. nautobot/project-static/docs/release-notes/version-2.1.html +884 -80
  438. nautobot/project-static/docs/release-notes/version-2.2.html +990 -323
  439. nautobot/project-static/docs/release-notes/version-2.3.html +9524 -0
  440. nautobot/project-static/docs/requirements.txt +4 -4
  441. nautobot/project-static/docs/search/search_index.json +1 -1
  442. nautobot/project-static/docs/sitemap.xml +335 -260
  443. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  444. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +884 -80
  445. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +884 -80
  446. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +884 -80
  447. nautobot/project-static/docs/user-guide/administration/configuration/index.html +884 -80
  448. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +983 -197
  449. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +884 -80
  450. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +884 -80
  451. nautobot/project-static/docs/user-guide/administration/guides/caching.html +884 -80
  452. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +888 -84
  453. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +884 -80
  454. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +884 -80
  455. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +884 -80
  456. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +884 -80
  457. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +884 -80
  458. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +884 -80
  459. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +884 -80
  460. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +884 -80
  461. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +884 -80
  462. nautobot/project-static/docs/user-guide/administration/installation/index.html +888 -80
  463. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +884 -80
  464. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +884 -80
  465. nautobot/project-static/docs/user-guide/administration/installation/services.html +888 -80
  466. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +900 -91
  467. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +884 -80
  468. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +884 -80
  469. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +884 -80
  470. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +884 -80
  471. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +915 -163
  472. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +884 -80
  473. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +884 -80
  474. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +884 -80
  475. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +884 -80
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +884 -80
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +884 -80
  478. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +884 -80
  479. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +884 -80
  480. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +884 -80
  481. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +884 -80
  482. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +884 -80
  483. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +885 -81
  484. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +884 -80
  485. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +888 -80
  486. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +887 -83
  487. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +8984 -0
  488. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +8828 -0
  489. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +8829 -0
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +8828 -0
  491. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +8829 -0
  492. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +8833 -0
  493. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +8828 -0
  494. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +898 -94
  495. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +915 -97
  496. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +915 -97
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +910 -92
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +915 -97
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +898 -94
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +898 -94
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +905 -97
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +912 -108
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +913 -109
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +910 -106
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +898 -94
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +906 -97
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +918 -100
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +928 -110
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +920 -98
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +898 -94
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +929 -111
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +920 -102
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +910 -106
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +913 -109
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +914 -106
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +8828 -0
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +8846 -0
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +8843 -0
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +8823 -0
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +908 -104
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +898 -94
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +932 -75
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +916 -98
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +898 -94
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +935 -78
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +913 -95
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +921 -117
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +910 -106
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +898 -94
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +914 -96
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +916 -98
  532. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +898 -94
  533. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +898 -94
  534. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +898 -94
  535. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +884 -80
  536. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +884 -80
  537. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +889 -81
  538. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +889 -81
  539. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +884 -80
  540. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +884 -80
  541. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +884 -80
  542. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +884 -80
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +884 -80
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +884 -80
  545. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +884 -80
  546. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +884 -80
  547. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +884 -80
  548. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +884 -80
  549. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +893 -88
  550. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +884 -80
  551. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +884 -80
  552. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +884 -80
  553. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +884 -80
  554. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +884 -80
  555. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +889 -81
  556. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +884 -80
  557. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +884 -80
  558. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +884 -80
  559. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +884 -80
  560. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +884 -80
  561. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +884 -80
  562. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +884 -80
  563. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +884 -80
  564. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +884 -80
  565. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +884 -80
  566. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +884 -80
  567. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +884 -80
  568. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +884 -80
  569. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/clear-view-button.png +0 -0
  570. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/cleared-view.png +0 -0
  571. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/config-table-columns-to-locations.png +0 -0
  572. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/configure-button.png +0 -0
  573. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/create-saved-view-success.png +0 -0
  574. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/current-saved-view-drop-down-menu.png +0 -0
  575. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/default-location-list-view.png +0 -0
  576. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/dropdown-button-after-new-saved-view.png +0 -0
  577. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-application-to-locations.png +0 -0
  578. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-button.png +0 -0
  579. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/global-default-location-list-view.png +0 -0
  580. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/location-list-view-with-saved-views.png +0 -0
  581. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/navigation-menu.png +0 -0
  582. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-as-new-view-drop-down.png +0 -0
  583. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-view-modal.png +0 -0
  584. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-buttons.png +0 -0
  585. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-success.png +0 -0
  586. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view-unchecked.png +0 -0
  587. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view.png +0 -0
  588. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-different-user.png +0 -0
  589. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-modal-unchecked.png +0 -0
  590. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-button.png +0 -0
  591. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-success.png +0 -0
  592. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/unsaved-saved-view.png +0 -0
  593. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/updated-saved-view.png +0 -0
  594. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +884 -80
  595. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +884 -80
  596. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +884 -80
  597. nautobot/project-static/docs/user-guide/index.html +884 -80
  598. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +884 -80
  599. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +884 -80
  600. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +884 -80
  601. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +884 -80
  602. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1250 -777
  603. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +887 -83
  604. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +884 -80
  605. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +884 -80
  606. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +884 -80
  607. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +884 -80
  608. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +884 -80
  609. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +884 -80
  610. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +887 -83
  611. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +884 -80
  612. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +884 -80
  613. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +888 -80
  614. nautobot/project-static/docs/user-guide/platform-functionality/metadata.html +8948 -0
  615. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +887 -83
  616. nautobot/project-static/docs/user-guide/platform-functionality/note.html +884 -80
  617. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +884 -80
  618. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +884 -80
  619. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +884 -80
  620. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +884 -80
  621. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +884 -80
  622. nautobot/project-static/docs/user-guide/platform-functionality/role.html +887 -83
  623. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9137 -0
  624. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +887 -83
  625. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +8933 -0
  626. nautobot/project-static/docs/user-guide/platform-functionality/status.html +884 -80
  627. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +884 -80
  628. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +942 -113
  629. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +884 -80
  630. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +884 -80
  631. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +884 -80
  632. nautobot/project-static/js/forms.js +71 -0
  633. nautobot/project-static/js/table_sorting_indicator.js +46 -0
  634. nautobot/project-static/js/tableconfig.js +6 -1
  635. nautobot/project-static/materialdesignicons-7.4.47/css/materialdesignicons.min.css +3 -0
  636. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.eot +0 -0
  637. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.ttf +0 -0
  638. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff +0 -0
  639. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff2 +0 -0
  640. nautobot/tenancy/__init__.py +0 -1
  641. nautobot/tenancy/apps.py +1 -0
  642. nautobot/tenancy/factory.py +3 -2
  643. nautobot/tenancy/filters/__init__.py +1 -0
  644. nautobot/tenancy/forms.py +1 -1
  645. nautobot/tenancy/templates/tenancy/tenant.html +22 -18
  646. nautobot/tenancy/views.py +11 -10
  647. nautobot/users/__init__.py +0 -1
  648. nautobot/users/api/serializers.py +1 -1
  649. nautobot/users/api/views.py +4 -2
  650. nautobot/users/apps.py +3 -2
  651. nautobot/users/factory.py +3 -3
  652. nautobot/users/migrations/0010_user_default_saved_views.py +20 -0
  653. nautobot/users/models.py +12 -0
  654. nautobot/users/tests/test_filters.py +6 -3
  655. nautobot/users/urls.py +8 -0
  656. nautobot/virtualization/__init__.py +0 -1
  657. nautobot/virtualization/apps.py +1 -0
  658. nautobot/virtualization/filters.py +6 -1
  659. nautobot/virtualization/forms.py +11 -3
  660. nautobot/virtualization/graphql/types.py +2 -2
  661. nautobot/virtualization/migrations/0029_add_role_field_to_interface_models.py +27 -0
  662. nautobot/virtualization/migrations/0030_alter_virtualmachine_local_config_context_data_owner_content_type_and_more.py +67 -0
  663. nautobot/virtualization/tables.py +15 -5
  664. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -1
  665. nautobot/virtualization/templates/virtualization/vminterface.html +7 -1
  666. nautobot/virtualization/templates/virtualization/vminterface_edit.html +1 -0
  667. nautobot/virtualization/tests/test_api.py +9 -4
  668. nautobot/virtualization/tests/test_filters.py +22 -0
  669. nautobot/virtualization/tests/test_models.py +7 -3
  670. nautobot/virtualization/tests/test_views.py +19 -3
  671. nautobot/virtualization/urls.py +2 -2
  672. nautobot/virtualization/views.py +10 -32
  673. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/METADATA +21 -19
  674. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/RECORD +679 -559
  675. nautobot/project-static/materialdesignicons-6.5.95/.github/ISSUE_TEMPLATE.md +0 -3
  676. nautobot/project-static/materialdesignicons-6.5.95/README.md +0 -25
  677. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css +0 -26654
  678. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css.map +0 -16
  679. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css +0 -3
  680. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css.map +0 -16
  681. nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff +0 -0
  682. nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff2 +0 -0
  683. nautobot/project-static/materialdesignicons-6.5.95/package.json +0 -28
  684. nautobot/project-static/materialdesignicons-6.5.95/preview.html +0 -717
  685. nautobot/project-static/materialdesignicons-6.5.95/scss/_animated.scss +0 -27
  686. nautobot/project-static/materialdesignicons-6.5.95/scss/_core.scss +0 -10
  687. nautobot/project-static/materialdesignicons-6.5.95/scss/_extras.scss +0 -65
  688. nautobot/project-static/materialdesignicons-6.5.95/scss/_functions.scss +0 -20
  689. nautobot/project-static/materialdesignicons-6.5.95/scss/_icons.scss +0 -10
  690. nautobot/project-static/materialdesignicons-6.5.95/scss/_path.scss +0 -10
  691. nautobot/project-static/materialdesignicons-6.5.95/scss/_variables.scss +0 -6606
  692. nautobot/project-static/materialdesignicons-6.5.95/scss/materialdesignicons.scss +0 -8
  693. /nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/LICENSE +0 -0
  694. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/LICENSE.txt +0 -0
  695. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/NOTICE +0 -0
  696. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/WHEEL +0 -0
  697. {nautobot-2.2.9.dist-info → nautobot-2.3.0b1.dist-info}/entry_points.txt +0 -0
@@ -238,7 +238,7 @@
238
238
 
239
239
 
240
240
  <li class="md-tabs__item">
241
- <a href="../../../index.html" class="md-tabs__link">
241
+ <a href="../../../overview/index.html" class="md-tabs__link">
242
242
 
243
243
 
244
244
 
@@ -409,7 +409,7 @@
409
409
 
410
410
 
411
411
  <div class="md-nav__link md-nav__container">
412
- <a href="../../../index.html" class="md-nav__link ">
412
+ <a href="../../../overview/index.html" class="md-nav__link ">
413
413
 
414
414
 
415
415
  <span class="md-ellipsis">
@@ -2484,23 +2484,702 @@
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">
2668
+
2669
+
2670
+ <span class="md-ellipsis">
2671
+ DCIM
2672
+ </span>
2673
+
2674
+
2675
+ <span class="md-nav__icon md-icon"></span>
2676
+ </label>
2677
+
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">
2680
+ <span class="md-nav__icon md-icon"></span>
2681
+ DCIM
2682
+ </label>
2683
+ <ul class="md-nav__list" data-md-scrollfix>
2684
+
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+ <li class="md-nav__item">
2692
+ <a href="../../../user-guide/core-data-model/dcim/locationtype.html" class="md-nav__link">
2693
+
2694
+
2695
+ <span class="md-ellipsis">
2696
+ Location Type
2697
+ </span>
2698
+
2699
+
2700
+ </a>
2701
+ </li>
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2712
+ <li class="md-nav__item">
2713
+ <a href="../../../user-guide/core-data-model/dcim/location.html" class="md-nav__link">
2714
+
2715
+
2716
+ <span class="md-ellipsis">
2717
+ Location
2718
+ </span>
2719
+
2720
+
2721
+ </a>
2722
+ </li>
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+ <li class="md-nav__item">
2734
+ <a href="../../../user-guide/core-data-model/dcim/rackgroup.html" class="md-nav__link">
2735
+
2736
+
2737
+ <span class="md-ellipsis">
2738
+ Rack Group
2739
+ </span>
2740
+
2741
+
2742
+ </a>
2743
+ </li>
2744
+
2745
+
2746
+
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+ <li class="md-nav__item">
2755
+ <a href="../../../user-guide/core-data-model/dcim/rack.html" class="md-nav__link">
2756
+
2757
+
2758
+ <span class="md-ellipsis">
2759
+ Rack
2760
+ </span>
2761
+
2762
+
2763
+ </a>
2764
+ </li>
2765
+
2766
+
2767
+
2768
+
2769
+
2770
+
2771
+
2772
+
2773
+
2774
+
2775
+ <li class="md-nav__item">
2776
+ <a href="../../../user-guide/core-data-model/dcim/manufacturer.html" class="md-nav__link">
2777
+
2778
+
2779
+ <span class="md-ellipsis">
2780
+ Manufacturer
2781
+ </span>
2782
+
2783
+
2784
+ </a>
2785
+ </li>
2786
+
2787
+
2788
+
2789
+
2790
+
2791
+
2792
+
2793
+
2794
+
2795
+
2796
+ <li class="md-nav__item">
2797
+ <a href="../../../user-guide/core-data-model/dcim/devicefamily.html" class="md-nav__link">
2798
+
2799
+
2800
+ <span class="md-ellipsis">
2801
+ Device Family
2802
+ </span>
2803
+
2804
+
2805
+ </a>
2806
+ </li>
2807
+
2808
+
2809
+
2810
+
2811
+
2812
+
2813
+
2814
+
2815
+
2816
+
2817
+ <li class="md-nav__item">
2818
+ <a href="../../../user-guide/core-data-model/dcim/platform.html" class="md-nav__link">
2819
+
2820
+
2821
+ <span class="md-ellipsis">
2822
+ Platform
2823
+ </span>
2824
+
2825
+
2826
+ </a>
2827
+ </li>
2828
+
2829
+
2830
+
2831
+
2832
+
2833
+
2834
+
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2843
+
2844
+
2845
+ <li class="md-nav__item md-nav__item--nested">
2846
+
2847
+
2848
+
2849
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_8" >
2850
+
2851
+
2852
+
2853
+ <div class="md-nav__link md-nav__container">
2854
+ <a href="../../../user-guide/core-data-model/dcim/devicetype.html" class="md-nav__link ">
2855
+
2856
+
2857
+ <span class="md-ellipsis">
2858
+ Device Type
2859
+ </span>
2860
+
2861
+
2862
+ </a>
2863
+
2864
+
2865
+ <label class="md-nav__link " for="__nav_2_3_4_8" id="__nav_2_3_4_8_label" tabindex="0">
2866
+ <span class="md-nav__icon md-icon"></span>
2867
+ </label>
2868
+
2869
+ </div>
2870
+
2871
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_8_label" aria-expanded="false">
2872
+ <label class="md-nav__title" for="__nav_2_3_4_8">
2873
+ <span class="md-nav__icon md-icon"></span>
2874
+ Device Type
2875
+ </label>
2876
+ <ul class="md-nav__list" data-md-scrollfix>
2877
+
2878
+
2879
+
2880
+
2881
+
2882
+
2883
+
2884
+ <li class="md-nav__item">
2885
+ <a href="../../../user-guide/core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
2886
+
2887
+
2888
+ <span class="md-ellipsis">
2889
+ Console Port Template
2890
+ </span>
2891
+
2892
+
2893
+ </a>
2894
+ </li>
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+
2904
+
2905
+ <li class="md-nav__item">
2906
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
2907
+
2908
+
2909
+ <span class="md-ellipsis">
2910
+ Console Server Port Template
2911
+ </span>
2912
+
2913
+
2914
+ </a>
2915
+ </li>
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+ <li class="md-nav__item">
2927
+ <a href="../../../user-guide/core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
2928
+
2929
+
2930
+ <span class="md-ellipsis">
2931
+ Device Bay Template
2932
+ </span>
2933
+
2934
+
2935
+ </a>
2936
+ </li>
2937
+
2938
+
2939
+
2940
+
2941
+
2942
+
2943
+
2944
+
2945
+
2946
+
2947
+ <li class="md-nav__item">
2948
+ <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
2949
+
2950
+
2951
+ <span class="md-ellipsis">
2952
+ Front Port Template
2953
+ </span>
2954
+
2955
+
2956
+ </a>
2957
+ </li>
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+
2964
+
2965
+
2966
+
2967
+
2968
+ <li class="md-nav__item">
2969
+ <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
2970
+
2971
+
2972
+ <span class="md-ellipsis">
2973
+ Interface Template
2974
+ </span>
2975
+
2976
+
2977
+ </a>
2978
+ </li>
2979
+
2980
+
2981
+
2982
+
2983
+
2984
+
2985
+
2986
+
2987
+
2988
+
2989
+ <li class="md-nav__item">
2990
+ <a href="../../../user-guide/core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
2991
+
2992
+
2993
+ <span class="md-ellipsis">
2994
+ Module Bay Template
2995
+ </span>
2996
+
2997
+
2998
+ </a>
2999
+ </li>
3000
+
3001
+
3002
+
3003
+
3004
+
3005
+
3006
+
3007
+
3008
+
3009
+
3010
+ <li class="md-nav__item">
3011
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
3012
+
3013
+
3014
+ <span class="md-ellipsis">
3015
+ Power Outlet Template
3016
+ </span>
3017
+
3018
+
3019
+ </a>
3020
+ </li>
3021
+
3022
+
3023
+
3024
+
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+
3031
+ <li class="md-nav__item">
3032
+ <a href="../../../user-guide/core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
3033
+
3034
+
3035
+ <span class="md-ellipsis">
3036
+ Power Port Template
3037
+ </span>
3038
+
3039
+
3040
+ </a>
3041
+ </li>
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+
3048
+
3049
+
3050
+
3051
+
3052
+ <li class="md-nav__item">
3053
+ <a href="../../../user-guide/core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
3054
+
3055
+
3056
+ <span class="md-ellipsis">
3057
+ Rear Port Template
3058
+ </span>
3059
+
3060
+
3061
+ </a>
3062
+ </li>
3063
+
3064
+
3065
+
3066
+
3067
+ </ul>
3068
+ </nav>
3069
+
3070
+ </li>
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+
3080
+
3081
+
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+ <li class="md-nav__item md-nav__item--nested">
3089
+
3090
+
3091
+
3092
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_9" >
3093
+
3094
+
3095
+
3096
+ <div class="md-nav__link md-nav__container">
3097
+ <a href="../../../user-guide/core-data-model/dcim/device.html" class="md-nav__link ">
3098
+
3099
+
3100
+ <span class="md-ellipsis">
3101
+ Device
3102
+ </span>
3103
+
3104
+
3105
+ </a>
3106
+
3107
+
3108
+ <label class="md-nav__link " for="__nav_2_3_4_9" id="__nav_2_3_4_9_label" tabindex="0">
3109
+ <span class="md-nav__icon md-icon"></span>
3110
+ </label>
3111
+
3112
+ </div>
3113
+
3114
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_9_label" aria-expanded="false">
3115
+ <label class="md-nav__title" for="__nav_2_3_4_9">
3116
+ <span class="md-nav__icon md-icon"></span>
3117
+ Device
3118
+ </label>
3119
+ <ul class="md-nav__list" data-md-scrollfix>
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+ <li class="md-nav__item">
3128
+ <a href="../../../user-guide/core-data-model/dcim/consoleport.html" class="md-nav__link">
3129
+
3130
+
3131
+ <span class="md-ellipsis">
3132
+ Console Port
3133
+ </span>
3134
+
3135
+
3136
+ </a>
3137
+ </li>
3138
+
3139
+
3140
+
2488
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
+
2489
3151
 
2490
3152
  <span class="md-ellipsis">
2491
- DCIM
3153
+ Console Server Port
2492
3154
  </span>
2493
3155
 
2494
3156
 
2495
- <span class="md-nav__icon md-icon"></span>
2496
- </label>
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">
2497
3171
 
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">
2500
- <span class="md-nav__icon md-icon"></span>
2501
- DCIM
2502
- </label>
2503
- <ul class="md-nav__list" data-md-scrollfix>
3172
+
3173
+ <span class="md-ellipsis">
3174
+ Device Bay
3175
+ </span>
3176
+
3177
+
3178
+ </a>
3179
+ </li>
3180
+
3181
+
3182
+
2504
3183
 
2505
3184
 
2506
3185
 
@@ -2509,11 +3188,11 @@
2509
3188
 
2510
3189
 
2511
3190
  <li class="md-nav__item">
2512
- <a href="../../../user-guide/core-data-model/dcim/locationtype.html" class="md-nav__link">
3191
+ <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
2513
3192
 
2514
3193
 
2515
3194
  <span class="md-ellipsis">
2516
- Location Type
3195
+ Front Port
2517
3196
  </span>
2518
3197
 
2519
3198
 
@@ -2530,11 +3209,11 @@
2530
3209
 
2531
3210
 
2532
3211
  <li class="md-nav__item">
2533
- <a href="../../../user-guide/core-data-model/dcim/location.html" class="md-nav__link">
3212
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
2534
3213
 
2535
3214
 
2536
3215
  <span class="md-ellipsis">
2537
- Location
3216
+ Interface
2538
3217
  </span>
2539
3218
 
2540
3219
 
@@ -2551,11 +3230,11 @@
2551
3230
 
2552
3231
 
2553
3232
  <li class="md-nav__item">
2554
- <a href="../../../user-guide/core-data-model/dcim/rackgroup.html" class="md-nav__link">
3233
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
2555
3234
 
2556
3235
 
2557
3236
  <span class="md-ellipsis">
2558
- Rack Group
3237
+ Inventory Item
2559
3238
  </span>
2560
3239
 
2561
3240
 
@@ -2572,11 +3251,11 @@
2572
3251
 
2573
3252
 
2574
3253
  <li class="md-nav__item">
2575
- <a href="../../../user-guide/core-data-model/dcim/rack.html" class="md-nav__link">
3254
+ <a href="../../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
2576
3255
 
2577
3256
 
2578
3257
  <span class="md-ellipsis">
2579
- Rack
3258
+ Module Bay
2580
3259
  </span>
2581
3260
 
2582
3261
 
@@ -2593,11 +3272,11 @@
2593
3272
 
2594
3273
 
2595
3274
  <li class="md-nav__item">
2596
- <a href="../../../user-guide/core-data-model/dcim/manufacturer.html" class="md-nav__link">
3275
+ <a href="../../../user-guide/core-data-model/dcim/powerport.html" class="md-nav__link">
2597
3276
 
2598
3277
 
2599
3278
  <span class="md-ellipsis">
2600
- Manufacturer
3279
+ Power Port
2601
3280
  </span>
2602
3281
 
2603
3282
 
@@ -2614,11 +3293,11 @@
2614
3293
 
2615
3294
 
2616
3295
  <li class="md-nav__item">
2617
- <a href="../../../user-guide/core-data-model/dcim/devicefamily.html" class="md-nav__link">
3296
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlet.html" class="md-nav__link">
2618
3297
 
2619
3298
 
2620
3299
  <span class="md-ellipsis">
2621
- Device Family
3300
+ Power Outlet
2622
3301
  </span>
2623
3302
 
2624
3303
 
@@ -2635,11 +3314,11 @@
2635
3314
 
2636
3315
 
2637
3316
  <li class="md-nav__item">
2638
- <a href="../../../user-guide/core-data-model/dcim/platform.html" class="md-nav__link">
3317
+ <a href="../../../user-guide/core-data-model/dcim/rearport.html" class="md-nav__link">
2639
3318
 
2640
3319
 
2641
3320
  <span class="md-ellipsis">
2642
- Platform
3321
+ Rear Port
2643
3322
  </span>
2644
3323
 
2645
3324
 
@@ -2649,6 +3328,14 @@
2649
3328
 
2650
3329
 
2651
3330
 
3331
+ </ul>
3332
+ </nav>
3333
+
3334
+ </li>
3335
+
3336
+
3337
+
3338
+
2652
3339
 
2653
3340
 
2654
3341
 
@@ -2666,32 +3353,32 @@
2666
3353
 
2667
3354
 
2668
3355
 
2669
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3_8" >
3356
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_10" >
2670
3357
 
2671
3358
 
2672
3359
 
2673
3360
  <div class="md-nav__link md-nav__container">
2674
- <a href="../../../user-guide/core-data-model/dcim/devicetype.html" class="md-nav__link ">
3361
+ <a href="../../../user-guide/core-data-model/dcim/moduletype.html" class="md-nav__link ">
2675
3362
 
2676
3363
 
2677
3364
  <span class="md-ellipsis">
2678
- Device Type
3365
+ Module Type
2679
3366
  </span>
2680
3367
 
2681
3368
 
2682
3369
  </a>
2683
3370
 
2684
3371
 
2685
- <label class="md-nav__link " for="__nav_2_3_3_8" id="__nav_2_3_3_8_label" tabindex="0">
3372
+ <label class="md-nav__link " for="__nav_2_3_4_10" id="__nav_2_3_4_10_label" tabindex="0">
2686
3373
  <span class="md-nav__icon md-icon"></span>
2687
3374
  </label>
2688
3375
 
2689
3376
  </div>
2690
3377
 
2691
- <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_3_8_label" aria-expanded="false">
2692
- <label class="md-nav__title" for="__nav_2_3_3_8">
3378
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_10_label" aria-expanded="false">
3379
+ <label class="md-nav__title" for="__nav_2_3_4_10">
2693
3380
  <span class="md-nav__icon md-icon"></span>
2694
- Device Type
3381
+ Module Type
2695
3382
  </label>
2696
3383
  <ul class="md-nav__list" data-md-scrollfix>
2697
3384
 
@@ -2744,11 +3431,11 @@
2744
3431
 
2745
3432
 
2746
3433
  <li class="md-nav__item">
2747
- <a href="../../../user-guide/core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
3434
+ <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
2748
3435
 
2749
3436
 
2750
3437
  <span class="md-ellipsis">
2751
- Device Bay Template
3438
+ Front Port Template
2752
3439
  </span>
2753
3440
 
2754
3441
 
@@ -2765,11 +3452,11 @@
2765
3452
 
2766
3453
 
2767
3454
  <li class="md-nav__item">
2768
- <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
3455
+ <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
2769
3456
 
2770
3457
 
2771
3458
  <span class="md-ellipsis">
2772
- Front Port Template
3459
+ Interface Template
2773
3460
  </span>
2774
3461
 
2775
3462
 
@@ -2786,11 +3473,11 @@
2786
3473
 
2787
3474
 
2788
3475
  <li class="md-nav__item">
2789
- <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
3476
+ <a href="../../../user-guide/core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
2790
3477
 
2791
3478
 
2792
3479
  <span class="md-ellipsis">
2793
- Interface Template
3480
+ Module Bay Template
2794
3481
  </span>
2795
3482
 
2796
3483
 
@@ -2888,32 +3575,32 @@
2888
3575
 
2889
3576
 
2890
3577
 
2891
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3_9" >
3578
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
2892
3579
 
2893
3580
 
2894
3581
 
2895
3582
  <div class="md-nav__link md-nav__container">
2896
- <a href="../../../user-guide/core-data-model/dcim/device.html" class="md-nav__link ">
3583
+ <a href="../../../user-guide/core-data-model/dcim/module.html" class="md-nav__link ">
2897
3584
 
2898
3585
 
2899
3586
  <span class="md-ellipsis">
2900
- Device
3587
+ Module
2901
3588
  </span>
2902
3589
 
2903
3590
 
2904
3591
  </a>
2905
3592
 
2906
3593
 
2907
- <label class="md-nav__link " for="__nav_2_3_3_9" id="__nav_2_3_3_9_label" tabindex="0">
3594
+ <label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
2908
3595
  <span class="md-nav__icon md-icon"></span>
2909
3596
  </label>
2910
3597
 
2911
3598
  </div>
2912
3599
 
2913
- <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_3_9_label" aria-expanded="false">
2914
- <label class="md-nav__title" for="__nav_2_3_3_9">
3600
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
3601
+ <label class="md-nav__title" for="__nav_2_3_4_11">
2915
3602
  <span class="md-nav__icon md-icon"></span>
2916
- Device
3603
+ Module
2917
3604
  </label>
2918
3605
  <ul class="md-nav__list" data-md-scrollfix>
2919
3606
 
@@ -2966,11 +3653,11 @@
2966
3653
 
2967
3654
 
2968
3655
  <li class="md-nav__item">
2969
- <a href="../../../user-guide/core-data-model/dcim/devicebay.html" class="md-nav__link">
3656
+ <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
2970
3657
 
2971
3658
 
2972
3659
  <span class="md-ellipsis">
2973
- Device Bay
3660
+ Front Port
2974
3661
  </span>
2975
3662
 
2976
3663
 
@@ -2987,11 +3674,11 @@
2987
3674
 
2988
3675
 
2989
3676
  <li class="md-nav__item">
2990
- <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
3677
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
2991
3678
 
2992
3679
 
2993
3680
  <span class="md-ellipsis">
2994
- Front Port
3681
+ Interface
2995
3682
  </span>
2996
3683
 
2997
3684
 
@@ -3008,11 +3695,11 @@
3008
3695
 
3009
3696
 
3010
3697
  <li class="md-nav__item">
3011
- <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
3698
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3012
3699
 
3013
3700
 
3014
3701
  <span class="md-ellipsis">
3015
- Interface
3702
+ Inventory Item
3016
3703
  </span>
3017
3704
 
3018
3705
 
@@ -3029,11 +3716,11 @@
3029
3716
 
3030
3717
 
3031
3718
  <li class="md-nav__item">
3032
- <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3719
+ <a href="../../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
3033
3720
 
3034
3721
 
3035
3722
  <span class="md-ellipsis">
3036
- Inventory Item
3723
+ Module Bay
3037
3724
  </span>
3038
3725
 
3039
3726
 
@@ -3370,10 +4057,10 @@
3370
4057
 
3371
4058
 
3372
4059
 
3373
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4" >
4060
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
3374
4061
 
3375
4062
 
3376
- <label class="md-nav__link" for="__nav_2_3_4" id="__nav_2_3_4_label" tabindex="0">
4063
+ <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
3377
4064
 
3378
4065
 
3379
4066
  <span class="md-ellipsis">
@@ -3384,8 +4071,8 @@
3384
4071
  <span class="md-nav__icon md-icon"></span>
3385
4072
  </label>
3386
4073
 
3387
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
3388
- <label class="md-nav__title" for="__nav_2_3_4">
4074
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
4075
+ <label class="md-nav__title" for="__nav_2_3_5">
3389
4076
  <span class="md-nav__icon md-icon"></span>
3390
4077
  Extras
3391
4078
  </label>
@@ -3500,10 +4187,10 @@
3500
4187
 
3501
4188
 
3502
4189
 
3503
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
4190
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
3504
4191
 
3505
4192
 
3506
- <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
4193
+ <label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
3507
4194
 
3508
4195
 
3509
4196
  <span class="md-ellipsis">
@@ -3514,8 +4201,8 @@
3514
4201
  <span class="md-nav__icon md-icon"></span>
3515
4202
  </label>
3516
4203
 
3517
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
3518
- <label class="md-nav__title" for="__nav_2_3_5">
4204
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
4205
+ <label class="md-nav__title" for="__nav_2_3_6">
3519
4206
  <span class="md-nav__icon md-icon"></span>
3520
4207
  IPAM
3521
4208
  </label>
@@ -3735,10 +4422,10 @@
3735
4422
 
3736
4423
 
3737
4424
 
3738
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
4425
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
3739
4426
 
3740
4427
 
3741
- <label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
4428
+ <label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
3742
4429
 
3743
4430
 
3744
4431
  <span class="md-ellipsis">
@@ -3749,8 +4436,8 @@
3749
4436
  <span class="md-nav__icon md-icon"></span>
3750
4437
  </label>
3751
4438
 
3752
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
3753
- <label class="md-nav__title" for="__nav_2_3_6">
4439
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
4440
+ <label class="md-nav__title" for="__nav_2_3_7">
3754
4441
  <span class="md-nav__icon md-icon"></span>
3755
4442
  Tenancy
3756
4443
  </label>
@@ -3823,10 +4510,10 @@
3823
4510
 
3824
4511
 
3825
4512
 
3826
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
4513
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_8" >
3827
4514
 
3828
4515
 
3829
- <label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
4516
+ <label class="md-nav__link" for="__nav_2_3_8" id="__nav_2_3_8_label" tabindex="0">
3830
4517
 
3831
4518
 
3832
4519
  <span class="md-ellipsis">
@@ -3837,8 +4524,8 @@
3837
4524
  <span class="md-nav__icon md-icon"></span>
3838
4525
  </label>
3839
4526
 
3840
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
3841
- <label class="md-nav__title" for="__nav_2_3_7">
4527
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_8_label" aria-expanded="false">
4528
+ <label class="md-nav__title" for="__nav_2_3_8">
3842
4529
  <span class="md-nav__icon md-icon"></span>
3843
4530
  Virtualization
3844
4531
  </label>
@@ -4093,21 +4780,75 @@
4093
4780
 
4094
4781
 
4095
4782
 
4096
- <li class="md-nav__item">
4097
- <a href="../../../user-guide/platform-functionality/dynamicgroup.html" class="md-nav__link">
4783
+
4784
+
4785
+
4786
+
4787
+
4788
+
4789
+
4790
+ <li class="md-nav__item md-nav__item--nested">
4791
+
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
 
@@ -4411,6 +5152,27 @@
4411
5152
 
4412
5153
 
4413
5154
 
5155
+ <li class="md-nav__item">
5156
+ <a href="../../../user-guide/platform-functionality/metadata.html" class="md-nav__link">
5157
+
5158
+
5159
+ <span class="md-ellipsis">
5160
+ Metadata
5161
+ </span>
5162
+
5163
+
5164
+ </a>
5165
+ </li>
5166
+
5167
+
5168
+
5169
+
5170
+
5171
+
5172
+
5173
+
5174
+
5175
+
4414
5176
  <li class="md-nav__item">
4415
5177
  <a href="../../../user-guide/platform-functionality/napalm.html" class="md-nav__link">
4416
5178
 
@@ -4485,7 +5247,7 @@
4485
5247
 
4486
5248
 
4487
5249
 
4488
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_15" >
5250
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
4489
5251
 
4490
5252
 
4491
5253
 
@@ -4501,14 +5263,14 @@
4501
5263
  </a>
4502
5264
 
4503
5265
 
4504
- <label class="md-nav__link " for="__nav_2_4_15" id="__nav_2_4_15_label" tabindex="0">
5266
+ <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
4505
5267
  <span class="md-nav__icon md-icon"></span>
4506
5268
  </label>
4507
5269
 
4508
5270
  </div>
4509
5271
 
4510
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_15_label" aria-expanded="false">
4511
- <label class="md-nav__title" for="__nav_2_4_15">
5272
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
5273
+ <label class="md-nav__title" for="__nav_2_4_16">
4512
5274
  <span class="md-nav__icon md-icon"></span>
4513
5275
  REST API
4514
5276
  </label>
@@ -4612,6 +5374,27 @@
4612
5374
 
4613
5375
 
4614
5376
 
5377
+ <li class="md-nav__item">
5378
+ <a href="../../../user-guide/platform-functionality/savedview.html" class="md-nav__link">
5379
+
5380
+
5381
+ <span class="md-ellipsis">
5382
+ Saved Views
5383
+ </span>
5384
+
5385
+
5386
+ </a>
5387
+ </li>
5388
+
5389
+
5390
+
5391
+
5392
+
5393
+
5394
+
5395
+
5396
+
5397
+
4615
5398
  <li class="md-nav__item">
4616
5399
  <a href="../../../user-guide/platform-functionality/secret.html" class="md-nav__link">
4617
5400
 
@@ -4707,10 +5490,10 @@
4707
5490
 
4708
5491
 
4709
5492
 
4710
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_21" >
5493
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
4711
5494
 
4712
5495
 
4713
- <label class="md-nav__link" for="__nav_2_4_21" id="__nav_2_4_21_label" tabindex="0">
5496
+ <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
4714
5497
 
4715
5498
 
4716
5499
  <span class="md-ellipsis">
@@ -4721,8 +5504,8 @@
4721
5504
  <span class="md-nav__icon md-icon"></span>
4722
5505
  </label>
4723
5506
 
4724
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_21_label" aria-expanded="false">
4725
- <label class="md-nav__title" for="__nav_2_4_21">
5507
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
5508
+ <label class="md-nav__title" for="__nav_2_4_23">
4726
5509
  <span class="md-nav__icon md-icon"></span>
4727
5510
  Users
4728
5511
  </label>
@@ -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,7 @@
8864
9676
  </code></pre></div>
8865
9677
 
8866
9678
 
8867
- </div>
8868
-
9679
+ </div>
8869
9680
 
8870
9681
  </div>
8871
9682
 
@@ -8874,25 +9685,24 @@
8874
9685
 
8875
9686
 
8876
9687
  <h2 id="nautobot.apps.filters.ContentTypeFilter" class="doc doc-heading">
8877
- <code>nautobot.apps.filters.ContentTypeFilter</code>
9688
+ <code>nautobot.apps.filters.ContentTypeFilter</code>
8878
9689
 
8879
9690
 
8880
9691
  <a href="#nautobot.apps.filters.ContentTypeFilter" class="headerlink" title="Permanent link">&para;</a></h2>
8881
9692
 
8882
9693
 
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>
9694
+ <div class="doc doc-contents ">
9695
+ <p class="doc doc-class-bases">
9696
+ 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>
9697
+
8886
9698
 
8887
-
8888
9699
  <p>Allows character-based ContentType filtering by <app_label>.<model> (e.g. "dcim.location").</p>
8889
9700
  <p>Does not support limiting of choices. Can be used without arguments on a <code>FilterSet</code>:</p>
8890
9701
  <div class="highlight"><pre><span></span><code>content_type = ContentTypeFilter()
8891
9702
  </code></pre></div>
8892
9703
 
8893
9704
 
8894
- </div>
8895
-
9705
+ </div>
8896
9706
 
8897
9707
  </div>
8898
9708
 
@@ -8901,22 +9711,21 @@
8901
9711
 
8902
9712
 
8903
9713
  <h2 id="nautobot.apps.filters.ContentTypeFilterMixin" class="doc doc-heading">
8904
- <code>nautobot.apps.filters.ContentTypeFilterMixin</code>
9714
+ <code>nautobot.apps.filters.ContentTypeFilterMixin</code>
8905
9715
 
8906
9716
 
8907
9717
  <a href="#nautobot.apps.filters.ContentTypeFilterMixin" class="headerlink" title="Permanent link">&para;</a></h2>
8908
9718
 
8909
9719
 
8910
- <div class="doc doc-contents ">
9720
+ <div class="doc doc-contents ">
9721
+
8911
9722
 
8912
-
8913
9723
  <p>Mixin to allow specifying a ContentType by <app_label>.<model> (e.g. "dcim.location").</p>
8914
9724
 
8915
9725
 
8916
-
8917
9726
 
8918
- <div class="doc doc-children">
8919
9727
 
9728
+ <div class="doc doc-children">
8920
9729
 
8921
9730
 
8922
9731
 
@@ -8927,10 +9736,10 @@
8927
9736
 
8928
9737
 
8929
9738
 
8930
- </div>
8931
9739
 
8932
9740
  </div>
8933
9741
 
9742
+ </div>
8934
9743
 
8935
9744
  </div>
8936
9745
 
@@ -8939,17 +9748,17 @@
8939
9748
 
8940
9749
 
8941
9750
  <h2 id="nautobot.apps.filters.ContentTypeMultipleChoiceFilter" class="doc doc-heading">
8942
- <code>nautobot.apps.filters.ContentTypeMultipleChoiceFilter</code>
9751
+ <code>nautobot.apps.filters.ContentTypeMultipleChoiceFilter</code>
8943
9752
 
8944
9753
 
8945
9754
  <a href="#nautobot.apps.filters.ContentTypeMultipleChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
8946
9755
 
8947
9756
 
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>
9757
+ <div class="doc doc-contents ">
9758
+ <p class="doc doc-class-bases">
9759
+ Bases: <code><span title="django_filters.MultipleChoiceFilter">MultipleChoiceFilter</span></code></p>
9760
+
8951
9761
 
8952
-
8953
9762
  <p>Allows multiple-choice ContentType filtering by <app_label>.<model> (e.g. "dcim.location").</p>
8954
9763
  <p>Defaults to joining multiple options with "AND". Pass <code>conjoined=False</code> to
8955
9764
  override this behavior to join with "OR" instead.</p>
@@ -8960,10 +9769,9 @@ override this behavior to join with "OR" instead.</p>
8960
9769
  </code></pre></div>
8961
9770
 
8962
9771
 
8963
-
8964
9772
 
8965
- <div class="doc doc-children">
8966
9773
 
9774
+ <div class="doc doc-children">
8967
9775
 
8968
9776
 
8969
9777
 
@@ -8976,19 +9784,18 @@ override this behavior to join with "OR" instead.</p>
8976
9784
  <div class="doc doc-object doc-function">
8977
9785
 
8978
9786
 
8979
-
8980
9787
  <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>
9788
+ <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
9789
 
8983
9790
  <a href="#nautobot.apps.filters.ContentTypeMultipleChoiceFilter.filter" class="headerlink" title="Permanent link">&para;</a></h3>
8984
9791
 
8985
9792
 
8986
- <div class="doc doc-contents ">
8987
-
9793
+ <div class="doc doc-contents ">
9794
+
8988
9795
  <p>Filter on value, which should be list of content-type names.</p>
8989
9796
  <p>e.g. <code>['dcim.device', 'dcim.rack']</code></p>
8990
9797
 
8991
- </div>
9798
+ </div>
8992
9799
 
8993
9800
  </div>
8994
9801
 
@@ -8996,8 +9803,7 @@ override this behavior to join with "OR" instead.</p>
8996
9803
 
8997
9804
  </div>
8998
9805
 
8999
- </div>
9000
-
9806
+ </div>
9001
9807
 
9002
9808
  </div>
9003
9809
 
@@ -9006,25 +9812,24 @@ override this behavior to join with "OR" instead.</p>
9006
9812
 
9007
9813
 
9008
9814
  <h2 id="nautobot.apps.filters.CustomFieldModelFilterSetMixin" class="doc doc-heading">
9009
- <code>nautobot.apps.filters.CustomFieldModelFilterSetMixin</code>
9815
+ <code>nautobot.apps.filters.CustomFieldModelFilterSetMixin</code>
9010
9816
 
9011
9817
 
9012
9818
  <a href="#nautobot.apps.filters.CustomFieldModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9013
9819
 
9014
9820
 
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>
9821
+ <div class="doc doc-contents ">
9822
+ <p class="doc doc-class-bases">
9823
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
9824
+
9018
9825
 
9019
-
9020
9826
  <p>Dynamically add a Filter for each CustomField applicable to the parent model. Add filters for
9021
9827
  extra lookup expressions on supported CustomField types.</p>
9022
9828
 
9023
9829
 
9024
-
9025
9830
 
9026
- <div class="doc doc-children">
9027
9831
 
9832
+ <div class="doc doc-children">
9028
9833
 
9029
9834
 
9030
9835
 
@@ -9035,10 +9840,10 @@ extra lookup expressions on supported CustomField types.</p>
9035
9840
 
9036
9841
 
9037
9842
 
9038
- </div>
9039
9843
 
9040
9844
  </div>
9041
9845
 
9846
+ </div>
9042
9847
 
9043
9848
  </div>
9044
9849
 
@@ -9047,22 +9852,21 @@ extra lookup expressions on supported CustomField types.</p>
9047
9852
 
9048
9853
 
9049
9854
  <h2 id="nautobot.apps.filters.FilterExtension" class="doc doc-heading">
9050
- <code>nautobot.apps.filters.FilterExtension</code>
9855
+ <code>nautobot.apps.filters.FilterExtension</code>
9051
9856
 
9052
9857
 
9053
9858
  <a href="#nautobot.apps.filters.FilterExtension" class="headerlink" title="Permanent link">&para;</a></h2>
9054
9859
 
9055
9860
 
9056
- <div class="doc doc-contents ">
9861
+ <div class="doc doc-contents ">
9862
+
9057
9863
 
9058
-
9059
9864
  <p>Class that may be returned by a registered Filter Extension function.</p>
9060
9865
 
9061
9866
 
9062
-
9063
9867
 
9064
- <div class="doc doc-children">
9065
9868
 
9869
+ <div class="doc doc-children">
9066
9870
 
9067
9871
 
9068
9872
 
@@ -9073,10 +9877,10 @@ extra lookup expressions on supported CustomField types.</p>
9073
9877
 
9074
9878
 
9075
9879
 
9076
- </div>
9077
9880
 
9078
9881
  </div>
9079
9882
 
9883
+ </div>
9080
9884
 
9081
9885
  </div>
9082
9886
 
@@ -9085,15 +9889,15 @@ extra lookup expressions on supported CustomField types.</p>
9085
9889
 
9086
9890
 
9087
9891
  <h2 id="nautobot.apps.filters.MappedPredicatesFilterMixin" class="doc doc-heading">
9088
- <code>nautobot.apps.filters.MappedPredicatesFilterMixin</code>
9892
+ <code>nautobot.apps.filters.MappedPredicatesFilterMixin</code>
9089
9893
 
9090
9894
 
9091
9895
  <a href="#nautobot.apps.filters.MappedPredicatesFilterMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9092
9896
 
9093
9897
 
9094
- <div class="doc doc-contents ">
9898
+ <div class="doc doc-contents ">
9899
+
9095
9900
 
9096
-
9097
9901
  <p>A filter mixin to provide the ability to specify fields and lookup expressions to use for
9098
9902
  filtering.</p>
9099
9903
  <p>A mapping of filter predicates (field_name: lookup_expr) must be provided to the filter when
@@ -9123,10 +9927,9 @@ providing the value as a nested dict with "lookup_expr" and "preprocessor" keys.
9123
9927
  skipped.</p>
9124
9928
 
9125
9929
 
9126
-
9127
9930
 
9128
- <div class="doc doc-children">
9129
9931
 
9932
+ <div class="doc doc-children">
9130
9933
 
9131
9934
 
9132
9935
 
@@ -9139,19 +9942,18 @@ skipped.</p>
9139
9942
  <div class="doc doc-object doc-function">
9140
9943
 
9141
9944
 
9142
-
9143
9945
  <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>
9946
+ <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
9947
 
9146
9948
  <a href="#nautobot.apps.filters.MappedPredicatesFilterMixin.generate_query" class="headerlink" title="Permanent link">&para;</a></h3>
9147
9949
 
9148
9950
 
9149
- <div class="doc doc-contents ">
9150
-
9951
+ <div class="doc doc-contents ">
9952
+
9151
9953
  <p>Given a <code>value</code>, return a <code>Q</code> object for 2-tuple of <code>predicate=value</code>. Filter predicates are
9152
9954
  read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9153
9955
 
9154
- </div>
9956
+ </div>
9155
9957
 
9156
9958
  </div>
9157
9959
 
@@ -9159,8 +9961,7 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9159
9961
 
9160
9962
  </div>
9161
9963
 
9162
- </div>
9163
-
9964
+ </div>
9164
9965
 
9165
9966
  </div>
9166
9967
 
@@ -9169,22 +9970,21 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9169
9970
 
9170
9971
 
9171
9972
  <h2 id="nautobot.apps.filters.MultiValueBigNumberFilter" class="doc doc-heading">
9172
- <code>nautobot.apps.filters.MultiValueBigNumberFilter</code>
9973
+ <code>nautobot.apps.filters.MultiValueBigNumberFilter</code>
9173
9974
 
9174
9975
 
9175
9976
  <a href="#nautobot.apps.filters.MultiValueBigNumberFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9176
9977
 
9177
9978
 
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>
9979
+ <div class="doc doc-contents ">
9980
+ <p class="doc doc-class-bases">
9981
+ Bases: <code><span title="nautobot.core.filters.MultiValueNumberFilter">MultiValueNumberFilter</span></code></p>
9181
9982
 
9182
-
9183
- <p>Subclass of MultiValueNumberFilter used for BigInteger model fields.</p>
9184
9983
 
9984
+ <p>Subclass of MultiValueNumberFilter used for BigInteger model fields.</p>
9185
9985
 
9186
- </div>
9187
9986
 
9987
+ </div>
9188
9988
 
9189
9989
  </div>
9190
9990
 
@@ -9193,24 +9993,23 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9193
9993
 
9194
9994
 
9195
9995
  <h2 id="nautobot.apps.filters.NameSearchFilterSet" class="doc doc-heading">
9196
- <code>nautobot.apps.filters.NameSearchFilterSet</code>
9996
+ <code>nautobot.apps.filters.NameSearchFilterSet</code>
9197
9997
 
9198
9998
 
9199
9999
  <a href="#nautobot.apps.filters.NameSearchFilterSet" class="headerlink" title="Permanent link">&para;</a></h2>
9200
10000
 
9201
10001
 
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>
10002
+ <div class="doc doc-contents ">
10003
+ <p class="doc doc-class-bases">
10004
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10005
+
9205
10006
 
9206
-
9207
10007
  <p>A base class for adding the search method to models which only expose the <code>name</code> field in searches.</p>
9208
10008
 
9209
10009
 
9210
-
9211
10010
 
9212
- <div class="doc doc-children">
9213
10011
 
10012
+ <div class="doc doc-children">
9214
10013
 
9215
10014
 
9216
10015
 
@@ -9221,10 +10020,10 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9221
10020
 
9222
10021
 
9223
10022
 
9224
- </div>
9225
10023
 
9226
10024
  </div>
9227
10025
 
10026
+ </div>
9228
10027
 
9229
10028
  </div>
9230
10029
 
@@ -9233,26 +10032,27 @@ read from the instance filter. Any <code>kwargs</code> are ignored.</p>
9233
10032
 
9234
10033
 
9235
10034
  <h2 id="nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter" class="doc doc-heading">
9236
- <code>nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter</code>
10035
+ <code>nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter</code>
9237
10036
 
9238
10037
 
9239
10038
  <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9240
10039
 
9241
10040
 
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>
10041
+ <div class="doc doc-contents ">
10042
+ <p class="doc doc-class-bases">
10043
+ Bases: <code><span title="django_filters.ModelMultipleChoiceFilter">ModelMultipleChoiceFilter</span></code></p>
10044
+
9245
10045
 
9246
-
9247
10046
  <p>Filter that supports filtering on values matching the <code>pk</code> field and another
9248
10047
  field of a foreign-key related object. The desired field is set using the <code>to_field_name</code>
9249
10048
  keyword argument on filter initialization (defaults to <code>name</code>).</p>
10049
+ <p>NOTE that the <code>to_field_name</code> field does not have to be a "true" natural key (ie. unique), it
10050
+ was just the best name we could come up with for this filter</p>
9250
10051
 
9251
10052
 
9252
-
9253
10053
 
9254
- <div class="doc doc-children">
9255
10054
 
10055
+ <div class="doc doc-children">
9256
10056
 
9257
10057
 
9258
10058
 
@@ -9265,19 +10065,64 @@ keyword argument on filter initialization (defaults to <code>name</code>).</p>
9265
10065
  <div class="doc doc-object doc-function">
9266
10066
 
9267
10067
 
10068
+ <h3 id="nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.__init__" class="doc doc-heading">
10069
+ <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>
10070
+
10071
+ <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
10072
+
10073
+
10074
+ <div class="doc doc-contents ">
10075
+
10076
+ <p>Initialize the NaturalKeyOrPKMultipleChoiceFilter.</p>
10077
+
10078
+
10079
+ <p><span class="doc-section-title">Parameters:</span></p>
10080
+ <table>
10081
+ <thead>
10082
+ <tr>
10083
+ <th>Name</th>
10084
+ <th>Type</th>
10085
+ <th>Description</th>
10086
+ <th>Default</th>
10087
+ </tr>
10088
+ </thead>
10089
+ <tbody>
10090
+ <tr class="doc-section-item">
10091
+ <td><code>prefers_id</code></td>
10092
+ <td>
10093
+ <code>bool</code>
10094
+ </td>
10095
+ <td>
10096
+ <div class="doc-md-description">
10097
+ <p>Prefer PK (ID) over the 'to_field_name'. Defaults to False.</p>
10098
+ </div>
10099
+ </td>
10100
+ <td>
10101
+ <code>False</code>
10102
+ </td>
10103
+ </tr>
10104
+ </tbody>
10105
+ </table>
10106
+
10107
+ </div>
10108
+
10109
+ </div>
10110
+
10111
+ <div class="doc doc-object doc-function">
10112
+
9268
10113
 
9269
10114
  <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>
10115
+ <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
10116
 
9272
10117
  <a href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter.get_filter_predicate" class="headerlink" title="Permanent link">&para;</a></h3>
9273
10118
 
9274
10119
 
9275
- <div class="doc doc-contents ">
9276
-
10120
+ <div class="doc doc-contents ">
10121
+
9277
10122
  <p>Override base filter behavior to force the filter to use the <code>pk</code> field instead of
9278
10123
  the natural key in the generated filter.</p>
9279
10124
 
9280
- </div>
10125
+ </div>
9281
10126
 
9282
10127
  </div>
9283
10128
 
@@ -9285,8 +10130,7 @@ the natural key in the generated filter.</p>
9285
10130
 
9286
10131
  </div>
9287
10132
 
9288
- </div>
9289
-
10133
+ </div>
9290
10134
 
9291
10135
  </div>
9292
10136
 
@@ -9295,24 +10139,23 @@ the natural key in the generated filter.</p>
9295
10139
 
9296
10140
 
9297
10141
  <h2 id="nautobot.apps.filters.NautobotFilterSet" class="doc doc-heading">
9298
- <code>nautobot.apps.filters.NautobotFilterSet</code>
10142
+ <code>nautobot.apps.filters.NautobotFilterSet</code>
9299
10143
 
9300
10144
 
9301
10145
  <a href="#nautobot.apps.filters.NautobotFilterSet" class="headerlink" title="Permanent link">&para;</a></h2>
9302
10146
 
9303
10147
 
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>
10148
+ <div class="doc doc-contents ">
10149
+ <p class="doc doc-class-bases">
10150
+ 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>
10151
+
9307
10152
 
9308
-
9309
10153
  <p>This class exists to combine common functionality and is used as a base class throughout the codebase where all of
9310
10154
  BaseFilterSet, CreatedUpdatedModelFilterSetMixin, RelationshipModelFilterSetMixin and CustomFieldModelFilterSetMixin
9311
10155
  are needed.</p>
9312
10156
 
9313
10157
 
9314
- </div>
9315
-
10158
+ </div>
9316
10159
 
9317
10160
  </div>
9318
10161
 
@@ -9321,24 +10164,23 @@ are needed.</p>
9321
10164
 
9322
10165
 
9323
10166
  <h2 id="nautobot.apps.filters.NumericArrayFilter" class="doc doc-heading">
9324
- <code>nautobot.apps.filters.NumericArrayFilter</code>
10167
+ <code>nautobot.apps.filters.NumericArrayFilter</code>
9325
10168
 
9326
10169
 
9327
10170
  <a href="#nautobot.apps.filters.NumericArrayFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9328
10171
 
9329
10172
 
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>
10173
+ <div class="doc doc-contents ">
10174
+ <p class="doc doc-class-bases">
10175
+ Bases: <code><span title="django_filters.NumberFilter">NumberFilter</span></code></p>
10176
+
9333
10177
 
9334
-
9335
10178
  <p>Filter based on the presence of an integer within an ArrayField.</p>
9336
10179
 
9337
10180
 
9338
-
9339
10181
 
9340
- <div class="doc doc-children">
9341
10182
 
10183
+ <div class="doc doc-children">
9342
10184
 
9343
10185
 
9344
10186
 
@@ -9349,10 +10191,10 @@ are needed.</p>
9349
10191
 
9350
10192
 
9351
10193
 
9352
- </div>
9353
10194
 
9354
10195
  </div>
9355
10196
 
10197
+ </div>
9356
10198
 
9357
10199
  </div>
9358
10200
 
@@ -9361,34 +10203,52 @@ are needed.</p>
9361
10203
 
9362
10204
 
9363
10205
  <h2 id="nautobot.apps.filters.RelatedMembershipBooleanFilter" class="doc doc-heading">
9364
- <code>nautobot.apps.filters.RelatedMembershipBooleanFilter</code>
10206
+ <code>nautobot.apps.filters.RelatedMembershipBooleanFilter</code>
9365
10207
 
9366
10208
 
9367
10209
  <a href="#nautobot.apps.filters.RelatedMembershipBooleanFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9368
10210
 
9369
10211
 
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>
10212
+ <div class="doc doc-contents ">
10213
+ <p class="doc doc-class-bases">
10214
+ Bases: <code><span title="django_filters.BooleanFilter">BooleanFilter</span></code></p>
9373
10215
 
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
10216
+
10217
+ <p>BooleanFilter for related objects that will explicitly perform <code>isnull</code> lookups.
10218
+ The <code>field_name</code> argument is required and must be set to the related field on the
9377
10219
  model.</p>
9378
10220
  <p>This should be used instead of a default <code>BooleanFilter</code> paired <code>method=</code>
9379
10221
  argument to test for the existence of related objects.</p>
9380
10222
  <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;,
10223
+ <div class="highlight"><pre><span></span><code>has_modules = RelatedMembershipBooleanFilter(
10224
+ field_name=&quot;module_bays__installed_module&quot;,
10225
+ label=&quot;Has modules&quot;,
9384
10226
  )
10227
+
10228
+ This would generate a filter that returns instances that have at least one module
10229
+ bay with an installed module. The `has_modules=False` filter would exclude instances
10230
+ with at least one module bay with an installed module.
10231
+
10232
+ Set `exclude=True` to reverse the behavior of the filter. This __may__ be useful
10233
+ for filtering on null directly related fields but this filter is not smart enough
10234
+ to differentiate between `fieldA__fieldB__isnull` and `fieldA__isnull` so it&#39;s not
10235
+ suitable for cases like the `has_empty_module_bays` filter where an instance may
10236
+ not have any module bays.
10237
+
10238
+ See the below table for more information:
10239
+
10240
+ | value | exclude | Result
10241
+ |-------------|------------------|-------
10242
+ | True | False (default) | Return instances with at least one non-null match -- qs.filter(field_name__isnull=False)
10243
+ | False | False (default) | Exclude instances with at least one non-null match -- qs.exclude(field_name__isnull=False)
10244
+ | True | True | Return instances with at least one null match -- qs.filter(field_name__isnull=True)
10245
+ | False | True | Exclude instances with at least one null match -- qs.exclude(field_name__isnull=True)
9385
10246
  </code></pre></div>
9386
10247
 
9387
10248
 
9388
-
9389
10249
 
9390
- <div class="doc doc-children">
9391
10250
 
10251
+ <div class="doc doc-children">
9392
10252
 
9393
10253
 
9394
10254
 
@@ -9399,10 +10259,10 @@ argument to test for the existence of related objects.</p>
9399
10259
 
9400
10260
 
9401
10261
 
9402
- </div>
9403
10262
 
9404
10263
  </div>
9405
10264
 
10265
+ </div>
9406
10266
 
9407
10267
  </div>
9408
10268
 
@@ -9411,24 +10271,23 @@ argument to test for the existence of related objects.</p>
9411
10271
 
9412
10272
 
9413
10273
  <h2 id="nautobot.apps.filters.RelationshipFilter" class="doc doc-heading">
9414
- <code>nautobot.apps.filters.RelationshipFilter</code>
10274
+ <code>nautobot.apps.filters.RelationshipFilter</code>
9415
10275
 
9416
10276
 
9417
10277
  <a href="#nautobot.apps.filters.RelationshipFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9418
10278
 
9419
10279
 
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>
10280
+ <div class="doc doc-contents ">
10281
+ <p class="doc doc-class-bases">
10282
+ Bases: <code><span title="django_filters.ModelMultipleChoiceFilter">ModelMultipleChoiceFilter</span></code></p>
10283
+
9423
10284
 
9424
-
9425
10285
  <p>Filter objects by the presence of associations on a given Relationship.</p>
9426
10286
 
9427
10287
 
9428
-
9429
10288
 
9430
- <div class="doc doc-children">
9431
10289
 
10290
+ <div class="doc doc-children">
9432
10291
 
9433
10292
 
9434
10293
 
@@ -9439,10 +10298,10 @@ argument to test for the existence of related objects.</p>
9439
10298
 
9440
10299
 
9441
10300
 
9442
- </div>
9443
10301
 
9444
10302
  </div>
9445
10303
 
10304
+ </div>
9446
10305
 
9447
10306
  </div>
9448
10307
 
@@ -9451,24 +10310,23 @@ argument to test for the existence of related objects.</p>
9451
10310
 
9452
10311
 
9453
10312
  <h2 id="nautobot.apps.filters.RelationshipModelFilterSetMixin" class="doc doc-heading">
9454
- <code>nautobot.apps.filters.RelationshipModelFilterSetMixin</code>
10313
+ <code>nautobot.apps.filters.RelationshipModelFilterSetMixin</code>
9455
10314
 
9456
10315
 
9457
10316
  <a href="#nautobot.apps.filters.RelationshipModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9458
10317
 
9459
10318
 
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>
10319
+ <div class="doc doc-contents ">
10320
+ <p class="doc doc-class-bases">
10321
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10322
+
9463
10323
 
9464
-
9465
10324
  <p>Filterset for relationships applicable to the parent model.</p>
9466
10325
 
9467
10326
 
9468
-
9469
10327
 
9470
- <div class="doc doc-children">
9471
10328
 
10329
+ <div class="doc doc-children">
9472
10330
 
9473
10331
 
9474
10332
 
@@ -9479,10 +10337,10 @@ argument to test for the existence of related objects.</p>
9479
10337
 
9480
10338
 
9481
10339
 
9482
- </div>
9483
10340
 
9484
10341
  </div>
9485
10342
 
10343
+ </div>
9486
10344
 
9487
10345
  </div>
9488
10346
 
@@ -9491,24 +10349,23 @@ argument to test for the existence of related objects.</p>
9491
10349
 
9492
10350
 
9493
10351
  <h2 id="nautobot.apps.filters.RoleFilter" class="doc doc-heading">
9494
- <code>nautobot.apps.filters.RoleFilter</code>
10352
+ <code>nautobot.apps.filters.RoleFilter</code>
9495
10353
 
9496
10354
 
9497
10355
  <a href="#nautobot.apps.filters.RoleFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9498
10356
 
9499
10357
 
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>
10358
+ <div class="doc doc-contents ">
10359
+ <p class="doc doc-class-bases">
10360
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10361
+
9503
10362
 
9504
-
9505
10363
  <p>Filter field used for filtering Role fields.</p>
9506
10364
 
9507
10365
 
9508
-
9509
10366
 
9510
- <div class="doc doc-children">
9511
10367
 
10368
+ <div class="doc doc-children">
9512
10369
 
9513
10370
 
9514
10371
 
@@ -9519,10 +10376,10 @@ argument to test for the existence of related objects.</p>
9519
10376
 
9520
10377
 
9521
10378
 
9522
- </div>
9523
10379
 
9524
10380
  </div>
9525
10381
 
10382
+ </div>
9526
10383
 
9527
10384
  </div>
9528
10385
 
@@ -9531,24 +10388,23 @@ argument to test for the existence of related objects.</p>
9531
10388
 
9532
10389
 
9533
10390
  <h2 id="nautobot.apps.filters.RoleModelFilterSetMixin" class="doc doc-heading">
9534
- <code>nautobot.apps.filters.RoleModelFilterSetMixin</code>
10391
+ <code>nautobot.apps.filters.RoleModelFilterSetMixin</code>
9535
10392
 
9536
10393
 
9537
10394
  <a href="#nautobot.apps.filters.RoleModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9538
10395
 
9539
10396
 
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>
10397
+ <div class="doc doc-contents ">
10398
+ <p class="doc doc-class-bases">
10399
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10400
+
9543
10401
 
9544
-
9545
10402
  <p>Mixin to add a <code>role</code> filter field to a FilterSet.</p>
9546
10403
 
9547
10404
 
9548
-
9549
10405
 
9550
- <div class="doc doc-children">
9551
10406
 
10407
+ <div class="doc doc-children">
9552
10408
 
9553
10409
 
9554
10410
 
@@ -9559,10 +10415,10 @@ argument to test for the existence of related objects.</p>
9559
10415
 
9560
10416
 
9561
10417
 
9562
- </div>
9563
10418
 
9564
10419
  </div>
9565
10420
 
10421
+ </div>
9566
10422
 
9567
10423
  </div>
9568
10424
 
@@ -9571,25 +10427,24 @@ argument to test for the existence of related objects.</p>
9571
10427
 
9572
10428
 
9573
10429
  <h2 id="nautobot.apps.filters.SearchFilter" class="doc doc-heading">
9574
- <code>nautobot.apps.filters.SearchFilter</code>
10430
+ <code>nautobot.apps.filters.SearchFilter</code>
9575
10431
 
9576
10432
 
9577
10433
  <a href="#nautobot.apps.filters.SearchFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9578
10434
 
9579
10435
 
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>
10436
+ <div class="doc doc-contents ">
10437
+ <p class="doc doc-class-bases">
10438
+ 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>
10439
+
9583
10440
 
9584
-
9585
10441
  <p>Provide a search filter for use on filtersets as the <code>q=</code> parameter.</p>
9586
10442
  <p>See the docstring for <code>nautobot.core.filters.MappedPredicatesFilterMixin</code> for usage.</p>
9587
10443
 
9588
10444
 
9589
-
9590
10445
 
9591
- <div class="doc doc-children">
9592
10446
 
10447
+ <div class="doc doc-children">
9593
10448
 
9594
10449
 
9595
10450
 
@@ -9600,10 +10455,10 @@ argument to test for the existence of related objects.</p>
9600
10455
 
9601
10456
 
9602
10457
 
9603
- </div>
9604
10458
 
9605
10459
  </div>
9606
10460
 
10461
+ </div>
9607
10462
 
9608
10463
  </div>
9609
10464
 
@@ -9612,24 +10467,23 @@ argument to test for the existence of related objects.</p>
9612
10467
 
9613
10468
 
9614
10469
  <h2 id="nautobot.apps.filters.StatusFilter" class="doc doc-heading">
9615
- <code>nautobot.apps.filters.StatusFilter</code>
10470
+ <code>nautobot.apps.filters.StatusFilter</code>
9616
10471
 
9617
10472
 
9618
10473
  <a href="#nautobot.apps.filters.StatusFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9619
10474
 
9620
10475
 
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>
10476
+ <div class="doc doc-contents ">
10477
+ <p class="doc doc-class-bases">
10478
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10479
+
9624
10480
 
9625
-
9626
10481
  <p>Filter field used for filtering Status fields.</p>
9627
10482
 
9628
10483
 
9629
-
9630
10484
 
9631
- <div class="doc doc-children">
9632
10485
 
10486
+ <div class="doc doc-children">
9633
10487
 
9634
10488
 
9635
10489
 
@@ -9640,10 +10494,10 @@ argument to test for the existence of related objects.</p>
9640
10494
 
9641
10495
 
9642
10496
 
9643
- </div>
9644
10497
 
9645
10498
  </div>
9646
10499
 
10500
+ </div>
9647
10501
 
9648
10502
  </div>
9649
10503
 
@@ -9652,24 +10506,23 @@ argument to test for the existence of related objects.</p>
9652
10506
 
9653
10507
 
9654
10508
  <h2 id="nautobot.apps.filters.StatusModelFilterSetMixin" class="doc doc-heading">
9655
- <code>nautobot.apps.filters.StatusModelFilterSetMixin</code>
10509
+ <code>nautobot.apps.filters.StatusModelFilterSetMixin</code>
9656
10510
 
9657
10511
 
9658
10512
  <a href="#nautobot.apps.filters.StatusModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9659
10513
 
9660
10514
 
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>
10515
+ <div class="doc doc-contents ">
10516
+ <p class="doc doc-class-bases">
10517
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10518
+
9664
10519
 
9665
-
9666
10520
  <p>Mixin to add a <code>status</code> filter field to a FilterSet.</p>
9667
10521
 
9668
10522
 
9669
-
9670
10523
 
9671
- <div class="doc doc-children">
9672
10524
 
10525
+ <div class="doc doc-children">
9673
10526
 
9674
10527
 
9675
10528
 
@@ -9680,10 +10533,10 @@ argument to test for the existence of related objects.</p>
9680
10533
 
9681
10534
 
9682
10535
 
9683
- </div>
9684
10536
 
9685
10537
  </div>
9686
10538
 
10539
+ </div>
9687
10540
 
9688
10541
  </div>
9689
10542
 
@@ -9692,25 +10545,24 @@ argument to test for the existence of related objects.</p>
9692
10545
 
9693
10546
 
9694
10547
  <h2 id="nautobot.apps.filters.TagFilter" class="doc doc-heading">
9695
- <code>nautobot.apps.filters.TagFilter</code>
10548
+ <code>nautobot.apps.filters.TagFilter</code>
9696
10549
 
9697
10550
 
9698
10551
  <a href="#nautobot.apps.filters.TagFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9699
10552
 
9700
10553
 
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>
10554
+ <div class="doc doc-contents ">
10555
+ <p class="doc doc-class-bases">
10556
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10557
+
9704
10558
 
9705
-
9706
10559
  <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
10560
  to objects matching all tags.</p>
9708
10561
 
9709
10562
 
9710
-
9711
10563
 
9712
- <div class="doc doc-children">
9713
10564
 
10565
+ <div class="doc doc-children">
9714
10566
 
9715
10567
 
9716
10568
 
@@ -9723,16 +10575,15 @@ to objects matching all tags.</p>
9723
10575
  <div class="doc doc-object doc-function">
9724
10576
 
9725
10577
 
9726
-
9727
10578
  <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>
10579
+ <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
10580
 
9730
10581
  <a href="#nautobot.apps.filters.TagFilter.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
9731
10582
 
9732
10583
 
9733
- <div class="doc doc-contents ">
10584
+ <div class="doc doc-contents ">
9734
10585
 
9735
- </div>
10586
+ </div>
9736
10587
 
9737
10588
  </div>
9738
10589
 
@@ -9740,8 +10591,7 @@ to objects matching all tags.</p>
9740
10591
 
9741
10592
  </div>
9742
10593
 
9743
- </div>
9744
-
10594
+ </div>
9745
10595
 
9746
10596
  </div>
9747
10597
 
@@ -9750,24 +10600,23 @@ to objects matching all tags.</p>
9750
10600
 
9751
10601
 
9752
10602
  <h2 id="nautobot.apps.filters.TenancyModelFilterSetMixin" class="doc doc-heading">
9753
- <code>nautobot.apps.filters.TenancyModelFilterSetMixin</code>
10603
+ <code>nautobot.apps.filters.TenancyModelFilterSetMixin</code>
9754
10604
 
9755
10605
 
9756
10606
  <a href="#nautobot.apps.filters.TenancyModelFilterSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
9757
10607
 
9758
10608
 
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>
10609
+ <div class="doc doc-contents ">
10610
+ <p class="doc doc-class-bases">
10611
+ Bases: <code><span title="django_filters.FilterSet">FilterSet</span></code></p>
10612
+
9762
10613
 
9763
-
9764
10614
  <p>An inheritable FilterSet for models which support Tenant assignment.</p>
9765
10615
 
9766
10616
 
9767
-
9768
10617
 
9769
- <div class="doc doc-children">
9770
10618
 
10619
+ <div class="doc doc-children">
9771
10620
 
9772
10621
 
9773
10622
 
@@ -9778,10 +10627,10 @@ to objects matching all tags.</p>
9778
10627
 
9779
10628
 
9780
10629
 
9781
- </div>
9782
10630
 
9783
10631
  </div>
9784
10632
 
10633
+ </div>
9785
10634
 
9786
10635
  </div>
9787
10636
 
@@ -9790,17 +10639,17 @@ to objects matching all tags.</p>
9790
10639
 
9791
10640
 
9792
10641
  <h2 id="nautobot.apps.filters.TreeNodeMultipleChoiceFilter" class="doc doc-heading">
9793
- <code>nautobot.apps.filters.TreeNodeMultipleChoiceFilter</code>
10642
+ <code>nautobot.apps.filters.TreeNodeMultipleChoiceFilter</code>
9794
10643
 
9795
10644
 
9796
10645
  <a href="#nautobot.apps.filters.TreeNodeMultipleChoiceFilter" class="headerlink" title="Permanent link">&para;</a></h2>
9797
10646
 
9798
10647
 
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>
10648
+ <div class="doc doc-contents ">
10649
+ <p class="doc doc-class-bases">
10650
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.filters.NaturalKeyOrPKMultipleChoiceFilter" href="#nautobot.apps.filters.NaturalKeyOrPKMultipleChoiceFilter">NaturalKeyOrPKMultipleChoiceFilter</a></code></p>
10651
+
9802
10652
 
9803
-
9804
10653
  <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
10654
  <p>For example, if we have:</p>
9806
10655
  <div class="highlight"><pre><span></span><code>Location &quot;Earth&quot;
@@ -9814,10 +10663,9 @@ but a TreeNodeMultipleChoiceFilter on Location for {"parent": "USA"}
9814
10663
  would match both "Athens" and "Durham" in addition to "GA" and "NC".</p>
9815
10664
 
9816
10665
 
9817
-
9818
10666
 
9819
- <div class="doc doc-children">
9820
10667
 
10668
+ <div class="doc doc-children">
9821
10669
 
9822
10670
 
9823
10671
 
@@ -9830,18 +10678,17 @@ would match both "Athens" and "Durham" in addition to "GA" and "NC".</p>
9830
10678
  <div class="doc doc-object doc-function">
9831
10679
 
9832
10680
 
9833
-
9834
10681
  <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>
10682
+ <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
10683
 
9837
10684
  <a href="#nautobot.apps.filters.TreeNodeMultipleChoiceFilter.generate_query" class="headerlink" title="Permanent link">&para;</a></h3>
9838
10685
 
9839
10686
 
9840
- <div class="doc doc-contents ">
9841
-
10687
+ <div class="doc doc-contents ">
10688
+
9842
10689
  <p>Given a filter value, return a <code>Q</code> object that accounts for nested tree node descendants.</p>
9843
10690
 
9844
- </div>
10691
+ </div>
9845
10692
 
9846
10693
  </div>
9847
10694
 
@@ -9849,29 +10696,26 @@ would match both "Athens" and "Durham" in addition to "GA" and "NC".</p>
9849
10696
 
9850
10697
  </div>
9851
10698
 
9852
- </div>
9853
-
10699
+ </div>
9854
10700
 
9855
10701
  </div>
9856
10702
 
9857
10703
 
9858
-
9859
10704
  <div class="doc doc-object doc-function">
9860
10705
 
9861
10706
 
9862
-
9863
10707
  <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>
10708
+ <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
10709
 
9866
10710
  <a href="#nautobot.apps.filters.multivalue_field_factory" class="headerlink" title="Permanent link">&para;</a></h2>
9867
10711
 
9868
10712
 
9869
- <div class="doc doc-contents ">
9870
-
10713
+ <div class="doc doc-contents ">
10714
+
9871
10715
  <p>Given a form field class, return a subclass capable of accepting multiple values. This allows us to OR on multiple
9872
10716
  filter values while maintaining the field's built-in validation. Example: GET /api/dcim/devices/?name=foo&amp;name=bar</p>
9873
10717
 
9874
- </div>
10718
+ </div>
9875
10719
 
9876
10720
  </div>
9877
10721
 
@@ -9879,7 +10723,7 @@ filter values while maintaining the field's built-in validation. Example: GET /a
9879
10723
 
9880
10724
  </div>
9881
10725
 
9882
- </div>
10726
+ </div>
9883
10727
 
9884
10728
  </div>
9885
10729