nautobot 2.3.16__py3-none-any.whl → 2.4.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 (675) hide show
  1. nautobot/__init__.py +15 -0
  2. nautobot/apps/api.py +0 -2
  3. nautobot/apps/config.py +32 -3
  4. nautobot/apps/events.py +19 -0
  5. nautobot/apps/exceptions.py +0 -2
  6. nautobot/apps/ui.py +44 -9
  7. nautobot/apps/utils.py +0 -8
  8. nautobot/apps/views.py +2 -0
  9. nautobot/circuits/navigation.py +0 -57
  10. nautobot/circuits/tables.py +1 -2
  11. nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -71
  12. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -64
  13. nautobot/circuits/templates/circuits/inc/circuit_termination_cable_fragment.html +40 -0
  14. nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +26 -0
  15. nautobot/circuits/templates/circuits/provider_retrieve.html +0 -76
  16. nautobot/circuits/tests/integration/test_relationships.py +33 -24
  17. nautobot/circuits/tests/test_filters.py +4 -8
  18. nautobot/circuits/views.py +143 -26
  19. nautobot/cloud/factory.py +4 -1
  20. nautobot/cloud/models.py +1 -1
  21. nautobot/cloud/tests/test_filters.py +5 -4
  22. nautobot/core/api/fields.py +5 -5
  23. nautobot/core/api/metadata.py +28 -256
  24. nautobot/core/api/pagination.py +3 -2
  25. nautobot/core/api/renderers.py +3 -0
  26. nautobot/core/api/serializers.py +24 -244
  27. nautobot/core/api/urls.py +3 -4
  28. nautobot/core/api/utils.py +0 -62
  29. nautobot/core/api/views.py +48 -158
  30. nautobot/core/apps/__init__.py +22 -578
  31. nautobot/core/celery/__init__.py +13 -0
  32. nautobot/core/celery/log.py +4 -4
  33. nautobot/core/celery/schedulers.py +48 -3
  34. nautobot/core/cli/__init__.py +8 -0
  35. nautobot/core/constants.py +7 -0
  36. nautobot/core/events/__init__.py +116 -0
  37. nautobot/core/events/base.py +27 -0
  38. nautobot/core/events/exceptions.py +10 -0
  39. nautobot/core/events/redis_broker.py +48 -0
  40. nautobot/core/events/syslog_broker.py +19 -0
  41. nautobot/core/exceptions.py +0 -6
  42. nautobot/core/filters.py +16 -21
  43. nautobot/core/fixtures/user-data.json +59 -0
  44. nautobot/core/forms/fields.py +53 -8
  45. nautobot/core/forms/utils.py +2 -1
  46. nautobot/core/graphql/schema.py +3 -1
  47. nautobot/core/graphql/types.py +1 -1
  48. nautobot/core/jobs/__init__.py +4 -4
  49. nautobot/core/jobs/cleanup.py +13 -49
  50. nautobot/core/jobs/groups.py +1 -1
  51. nautobot/core/management/commands/generate_test_data.py +21 -0
  52. nautobot/core/management/commands/validate_models.py +1 -1
  53. nautobot/core/middleware.py +16 -0
  54. nautobot/core/models/__init__.py +1 -1
  55. nautobot/core/models/fields.py +11 -7
  56. nautobot/core/models/query_functions.py +2 -2
  57. nautobot/core/models/tree_queries.py +3 -6
  58. nautobot/core/settings.py +44 -7
  59. nautobot/core/settings.yaml +86 -8
  60. nautobot/core/tables.py +15 -65
  61. nautobot/core/tasks.py +1 -1
  62. nautobot/core/templates/components/button/default.html +7 -0
  63. nautobot/core/templates/components/button/dropdown.html +20 -0
  64. nautobot/core/templates/components/layout/one_over_two.html +19 -0
  65. nautobot/core/templates/components/layout/two_over_one.html +19 -0
  66. nautobot/core/templates/components/panel/body_content_data_table.html +27 -0
  67. nautobot/core/templates/components/panel/body_content_objects_table.html +4 -0
  68. nautobot/core/templates/components/panel/body_content_tags.html +6 -0
  69. nautobot/core/templates/components/panel/body_content_text.html +12 -0
  70. nautobot/core/templates/components/panel/body_wrapper_generic.html +3 -0
  71. nautobot/core/templates/components/panel/body_wrapper_key_value_table.html +3 -0
  72. nautobot/core/templates/components/panel/body_wrapper_table.html +3 -0
  73. nautobot/core/templates/components/panel/footer_contacts_table.html +20 -0
  74. nautobot/core/templates/components/panel/footer_content_table.html +14 -0
  75. nautobot/core/templates/components/panel/grouping_toggle.html +14 -0
  76. nautobot/core/templates/components/panel/header_extra_content_table.html +3 -0
  77. nautobot/core/templates/components/panel/panel.html +16 -0
  78. nautobot/core/templates/components/panel/stats_panel_body.html +8 -0
  79. nautobot/core/templates/components/tab/content_wrapper.html +3 -0
  80. nautobot/core/templates/components/tab/label_wrapper.html +5 -0
  81. nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +3 -0
  82. nautobot/core/templates/generic/object_retrieve.html +28 -17
  83. nautobot/core/templates/inc/computed_fields/panel_data.html +4 -7
  84. nautobot/core/templates/inc/custom_fields/panel.html +2 -2
  85. nautobot/core/templates/inc/custom_fields/panel_data.html +4 -7
  86. nautobot/core/templates/inc/footer.html +1 -0
  87. nautobot/core/templates/inc/media.html +0 -3
  88. nautobot/core/templates/inc/nav_menu.html +1 -1
  89. nautobot/core/templates/inc/relationships_panel.html +1 -1
  90. nautobot/core/templates/nautobot_config.py.j2 +3 -3
  91. nautobot/core/templates/panel_table.html +12 -0
  92. nautobot/core/templates/search.html +0 -7
  93. nautobot/core/templates/utilities/render_jinja2.html +117 -0
  94. nautobot/core/templatetags/helpers.py +101 -12
  95. nautobot/core/templatetags/ui_framework.py +40 -0
  96. nautobot/core/testing/api.py +23 -128
  97. nautobot/core/testing/context.py +18 -0
  98. nautobot/core/testing/filters.py +41 -58
  99. nautobot/core/testing/mixins.py +2 -7
  100. nautobot/core/testing/views.py +25 -123
  101. nautobot/core/tests/integration/test_app_home.py +1 -0
  102. nautobot/core/tests/integration/test_app_navbar.py +1 -0
  103. nautobot/core/tests/integration/test_filters.py +2 -0
  104. nautobot/core/tests/integration/test_home.py +1 -0
  105. nautobot/core/tests/integration/test_navbar.py +1 -0
  106. nautobot/core/tests/integration/test_view_authentication.py +1 -2
  107. nautobot/core/tests/nautobot_config.py +198 -0
  108. nautobot/core/tests/runner.py +3 -3
  109. nautobot/core/tests/test_api.py +82 -201
  110. nautobot/core/tests/test_csv.py +3 -25
  111. nautobot/core/tests/test_events.py +214 -0
  112. nautobot/core/tests/test_jinja_filters.py +1 -0
  113. nautobot/core/tests/test_jobs.py +84 -13
  114. nautobot/core/tests/test_navigations.py +7 -241
  115. nautobot/core/tests/test_templatetags_helpers.py +16 -0
  116. nautobot/core/tests/test_ui.py +150 -0
  117. nautobot/core/tests/test_utils.py +0 -25
  118. nautobot/core/tests/test_views.py +123 -31
  119. nautobot/core/ui/__init__.py +0 -0
  120. nautobot/core/ui/base.py +11 -0
  121. nautobot/core/ui/choices.py +44 -0
  122. nautobot/core/ui/homepage.py +167 -0
  123. nautobot/core/ui/nav.py +279 -0
  124. nautobot/core/ui/object_detail.py +1841 -0
  125. nautobot/core/ui/utils.py +36 -0
  126. nautobot/core/urls.py +4 -9
  127. nautobot/core/utils/config.py +30 -3
  128. nautobot/core/utils/lookup.py +20 -13
  129. nautobot/core/views/__init__.py +6 -1
  130. nautobot/core/views/generic.py +47 -52
  131. nautobot/core/views/mixins.py +15 -25
  132. nautobot/core/views/paginator.py +8 -5
  133. nautobot/core/views/renderers.py +3 -3
  134. nautobot/core/views/utils.py +11 -0
  135. nautobot/core/wsgi.py +3 -3
  136. nautobot/dcim/api/serializers.py +80 -179
  137. nautobot/dcim/api/urls.py +5 -0
  138. nautobot/dcim/api/views.py +17 -4
  139. nautobot/dcim/apps.py +1 -0
  140. nautobot/dcim/choices.py +28 -0
  141. nautobot/dcim/factory.py +58 -0
  142. nautobot/dcim/filters/__init__.py +197 -24
  143. nautobot/dcim/forms.py +203 -12
  144. nautobot/dcim/graphql/types.py +2 -2
  145. nautobot/dcim/migrations/0063_interfacevdcassignment_virtualdevicecontext_and_more.py +165 -0
  146. nautobot/dcim/migrations/0064_virtualdevicecontext_status_data_migration.py +28 -0
  147. nautobot/dcim/migrations/0065_controller_capabilities_and_more.py +29 -0
  148. nautobot/dcim/migrations/0066_controllermanageddevicegroup_radio_profiles_and_more.py +33 -0
  149. nautobot/dcim/models/__init__.py +4 -0
  150. nautobot/dcim/models/device_component_templates.py +2 -2
  151. nautobot/dcim/models/device_components.py +20 -22
  152. nautobot/dcim/models/devices.py +173 -4
  153. nautobot/dcim/models/locations.py +3 -3
  154. nautobot/dcim/models/power.py +5 -6
  155. nautobot/dcim/models/racks.py +6 -6
  156. nautobot/dcim/navigation.py +25 -224
  157. nautobot/dcim/signals.py +44 -0
  158. nautobot/dcim/tables/__init__.py +5 -3
  159. nautobot/dcim/tables/devices.py +96 -2
  160. nautobot/dcim/tables/devicetypes.py +2 -2
  161. nautobot/dcim/templates/dcim/controller/base.html +10 -0
  162. nautobot/dcim/templates/dcim/controller_create.html +1 -0
  163. nautobot/dcim/templates/dcim/controller_retrieve.html +5 -1
  164. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +25 -0
  165. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +66 -0
  166. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +46 -0
  167. nautobot/dcim/templates/dcim/device/base.html +6 -42
  168. nautobot/dcim/templates/dcim/device/wireless.html +73 -0
  169. nautobot/dcim/templates/dcim/device.html +3 -1
  170. nautobot/dcim/templates/dcim/interface.html +1 -0
  171. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  172. nautobot/dcim/templates/dcim/locationtype.html +0 -107
  173. nautobot/dcim/templates/dcim/locationtype_retrieve.html +8 -0
  174. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +76 -0
  175. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +34 -0
  176. nautobot/dcim/tests/test_api.py +172 -61
  177. nautobot/dcim/tests/test_filters.py +171 -109
  178. nautobot/dcim/tests/test_forms.py +2 -51
  179. nautobot/dcim/tests/test_graphql.py +0 -52
  180. nautobot/dcim/tests/test_models.py +126 -4
  181. nautobot/dcim/tests/test_signals.py +1 -0
  182. nautobot/dcim/tests/test_views.py +103 -11
  183. nautobot/dcim/urls.py +72 -27
  184. nautobot/dcim/utils.py +2 -2
  185. nautobot/dcim/views.py +369 -62
  186. nautobot/extras/api/customfields.py +2 -2
  187. nautobot/extras/api/serializers.py +91 -75
  188. nautobot/extras/api/urls.py +4 -0
  189. nautobot/extras/api/views.py +78 -15
  190. nautobot/extras/choices.py +13 -0
  191. nautobot/extras/constants.py +0 -1
  192. nautobot/extras/context_managers.py +23 -6
  193. nautobot/extras/datasources/git.py +4 -1
  194. nautobot/extras/factory.py +27 -0
  195. nautobot/extras/filters/__init__.py +59 -0
  196. nautobot/extras/forms/forms.py +125 -30
  197. nautobot/extras/forms/mixins.py +3 -11
  198. nautobot/extras/graphql/types.py +25 -1
  199. nautobot/extras/group_sync.py +3 -3
  200. nautobot/extras/health_checks.py +2 -1
  201. nautobot/extras/jobs.py +62 -26
  202. nautobot/extras/management/__init__.py +1 -0
  203. nautobot/extras/management/commands/runjob.py +7 -79
  204. nautobot/extras/management/commands/runjob_with_job_result.py +46 -0
  205. nautobot/extras/management/utils.py +87 -0
  206. nautobot/extras/managers.py +1 -3
  207. nautobot/extras/migrations/0018_joblog_data_migration.py +9 -7
  208. nautobot/extras/migrations/0117_create_job_queue_model.py +129 -0
  209. nautobot/extras/migrations/0118_task_queue_to_job_queue_migration.py +78 -0
  210. nautobot/extras/migrations/0119_remove_task_queues_from_job_and_queue_from_scheduled_job.py +28 -0
  211. nautobot/extras/models/__init__.py +4 -0
  212. nautobot/extras/models/change_logging.py +7 -3
  213. nautobot/extras/models/customfields.py +11 -12
  214. nautobot/extras/models/groups.py +9 -13
  215. nautobot/extras/models/jobs.py +218 -37
  216. nautobot/extras/models/models.py +2 -2
  217. nautobot/extras/models/relationships.py +69 -1
  218. nautobot/extras/models/secrets.py +5 -0
  219. nautobot/extras/navigation.py +20 -262
  220. nautobot/extras/plugins/__init__.py +56 -32
  221. nautobot/extras/plugins/marketplace_manifest.yml +450 -0
  222. nautobot/extras/plugins/urls.py +1 -0
  223. nautobot/extras/plugins/views.py +48 -1
  224. nautobot/extras/signals.py +39 -1
  225. nautobot/extras/tables.py +40 -6
  226. nautobot/extras/templates/extras/externalintegration_retrieve.html +0 -47
  227. nautobot/extras/templates/extras/inc/tags_panel.html +1 -5
  228. nautobot/extras/templates/extras/job_bulk_edit.html +2 -1
  229. nautobot/extras/templates/extras/job_detail.html +36 -6
  230. nautobot/extras/templates/extras/job_edit.html +5 -2
  231. nautobot/extras/templates/extras/job_list.html +2 -7
  232. nautobot/extras/templates/extras/jobqueue_retrieve.html +44 -0
  233. nautobot/extras/templates/extras/marketplace.html +278 -0
  234. nautobot/extras/templates/extras/plugins_list.html +35 -1
  235. nautobot/extras/templates/extras/plugins_tiles.html +79 -0
  236. nautobot/extras/templates/extras/role_retrieve.html +16 -0
  237. nautobot/extras/templates/extras/secret.html +0 -65
  238. nautobot/extras/templates/extras/secret_check.js +16 -0
  239. nautobot/extras/templates/extras/secret_create.html +114 -0
  240. nautobot/extras/templates/extras/secret_edit.html +1 -114
  241. nautobot/extras/templates/extras/secretsgroup_edit.html +1 -1
  242. nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +2 -0
  243. nautobot/extras/templatetags/job_buttons.py +5 -4
  244. nautobot/extras/templatetags/plugins.py +69 -6
  245. nautobot/extras/test_jobs/api_test_job.py +1 -1
  246. nautobot/extras/test_jobs/atomic_transaction.py +2 -2
  247. nautobot/extras/test_jobs/dry_run.py +1 -1
  248. nautobot/extras/test_jobs/fail.py +5 -5
  249. nautobot/extras/test_jobs/file_output.py +1 -1
  250. nautobot/extras/test_jobs/file_upload_fail.py +1 -1
  251. nautobot/extras/test_jobs/file_upload_pass.py +1 -1
  252. nautobot/extras/test_jobs/ipaddress_vars.py +1 -3
  253. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
  254. nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
  255. nautobot/extras/test_jobs/log_redaction.py +1 -1
  256. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
  257. nautobot/extras/test_jobs/modify_db.py +1 -1
  258. nautobot/extras/test_jobs/object_var_optional.py +1 -1
  259. nautobot/extras/test_jobs/object_var_required.py +1 -1
  260. nautobot/extras/test_jobs/object_vars.py +1 -1
  261. nautobot/extras/test_jobs/pass.py +3 -3
  262. nautobot/extras/test_jobs/profiling.py +1 -1
  263. nautobot/extras/test_jobs/relative_import.py +3 -3
  264. nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
  265. nautobot/extras/test_jobs/task_queues.py +1 -1
  266. nautobot/extras/tests/integration/test_plugin_banner.py +2 -0
  267. nautobot/extras/tests/test_api.py +157 -55
  268. nautobot/extras/tests/test_context_managers.py +4 -1
  269. nautobot/extras/tests/test_customfields.py +1 -1
  270. nautobot/extras/tests/test_datasources.py +1 -2
  271. nautobot/extras/tests/test_dynamicgroups.py +1 -1
  272. nautobot/extras/tests/test_filters.py +219 -535
  273. nautobot/extras/tests/test_forms.py +1 -20
  274. nautobot/extras/tests/test_job_variables.py +73 -152
  275. nautobot/extras/tests/test_jobs.py +43 -54
  276. nautobot/extras/tests/test_models.py +71 -16
  277. nautobot/extras/tests/test_relationships.py +5 -2
  278. nautobot/extras/tests/test_utils.py +23 -2
  279. nautobot/extras/tests/test_views.py +183 -43
  280. nautobot/extras/tests/test_webhooks.py +2 -1
  281. nautobot/extras/urls.py +2 -20
  282. nautobot/extras/utils.py +118 -4
  283. nautobot/extras/views.py +203 -92
  284. nautobot/extras/webhooks.py +5 -2
  285. nautobot/ipam/api/fields.py +3 -3
  286. nautobot/ipam/api/serializers.py +36 -137
  287. nautobot/ipam/api/views.py +93 -62
  288. nautobot/ipam/lookups.py +62 -101
  289. nautobot/ipam/models.py +11 -63
  290. nautobot/ipam/navigation.py +0 -90
  291. nautobot/ipam/querysets.py +2 -2
  292. nautobot/ipam/tables.py +6 -20
  293. nautobot/ipam/templates/ipam/routetarget.html +0 -28
  294. nautobot/ipam/templates/ipam/vrf.html +0 -47
  295. nautobot/ipam/tests/test_api.py +8 -419
  296. nautobot/ipam/tests/test_filters.py +39 -119
  297. nautobot/ipam/tests/test_forms.py +47 -51
  298. nautobot/ipam/tests/test_migrations.py +30 -30
  299. nautobot/ipam/tests/test_models.py +0 -41
  300. nautobot/ipam/tests/test_querysets.py +1 -63
  301. nautobot/ipam/urls.py +3 -69
  302. nautobot/ipam/utils/__init__.py +0 -24
  303. nautobot/ipam/views.py +153 -198
  304. nautobot/project-static/css/base.css +38 -3
  305. nautobot/project-static/docs/404.html +421 -19
  306. nautobot/project-static/docs/apps/index.html +421 -19
  307. nautobot/project-static/docs/apps/nautobot-apps.html +421 -19
  308. nautobot/project-static/docs/assets/extra.css +5 -1
  309. nautobot/project-static/docs/assets/javascripts/{bundle.88dd0f4e.min.js → bundle.83f73b43.min.js} +2 -2
  310. nautobot/project-static/docs/assets/javascripts/{bundle.88dd0f4e.min.js.map → bundle.83f73b43.min.js.map} +2 -2
  311. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +421 -19
  312. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +421 -19
  313. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +421 -172
  314. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +421 -19
  315. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +421 -19
  316. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +425 -21
  317. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +421 -19
  318. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +424 -22
  319. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9809 -0
  320. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +424 -63
  321. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +421 -19
  322. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +421 -19
  323. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +457 -20
  324. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +421 -19
  325. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +425 -25
  326. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +457 -19
  327. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +421 -19
  328. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +421 -19
  329. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +425 -215
  330. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +430 -342
  331. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +5799 -1054
  332. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +421 -19
  333. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +447 -176
  334. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +460 -21
  335. nautobot/project-static/docs/development/apps/api/configuration-view.html +421 -19
  336. nautobot/project-static/docs/development/apps/api/database-backend-config.html +421 -19
  337. nautobot/project-static/docs/development/apps/api/models/django-admin.html +421 -19
  338. nautobot/project-static/docs/development/apps/api/models/global-search.html +421 -19
  339. nautobot/project-static/docs/development/apps/api/models/graphql.html +421 -19
  340. nautobot/project-static/docs/development/apps/api/models/index.html +421 -19
  341. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +421 -19
  342. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +421 -19
  343. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +421 -19
  344. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +421 -19
  345. nautobot/project-static/docs/development/apps/api/platform-features/index.html +421 -19
  346. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +421 -19
  347. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +421 -19
  348. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +421 -19
  349. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +421 -19
  350. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +424 -41
  351. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +421 -19
  352. nautobot/project-static/docs/development/apps/api/prometheus.html +421 -19
  353. nautobot/project-static/docs/development/apps/api/setup.html +425 -155
  354. nautobot/project-static/docs/development/apps/api/testing.html +421 -19
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +421 -19
  356. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +421 -19
  357. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +421 -19
  358. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +421 -19
  359. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +701 -130
  360. nautobot/project-static/docs/development/apps/api/views/base-template.html +421 -19
  361. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +421 -19
  362. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +421 -19
  363. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +421 -19
  364. nautobot/project-static/docs/development/apps/api/views/index.html +423 -20
  365. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +425 -19
  366. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +451 -19
  367. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +421 -19
  368. nautobot/project-static/docs/development/apps/api/views/notes.html +421 -19
  369. nautobot/project-static/docs/development/apps/api/views/rest-api.html +421 -19
  370. nautobot/project-static/docs/development/apps/api/views/urls.html +421 -19
  371. nautobot/project-static/docs/development/apps/index.html +421 -19
  372. nautobot/project-static/docs/development/apps/migration/code-updates.html +422 -52
  373. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +422 -20
  374. nautobot/project-static/docs/development/apps/migration/from-v1.html +421 -19
  375. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +421 -19
  376. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +421 -19
  377. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +421 -19
  378. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +424 -22
  379. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9219 -0
  380. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +9333 -0
  381. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +9474 -0
  382. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +9517 -0
  383. nautobot/project-static/docs/development/apps/porting-from-netbox.html +424 -22
  384. nautobot/project-static/docs/development/core/application-registry.html +421 -19
  385. nautobot/project-static/docs/development/core/best-practices.html +421 -19
  386. nautobot/project-static/docs/development/core/bootstrap-ui.html +421 -19
  387. nautobot/project-static/docs/development/core/caching.html +421 -19
  388. nautobot/project-static/docs/development/core/controllers.html +423 -19
  389. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +490 -45
  390. nautobot/project-static/docs/development/core/generic-views.html +421 -19
  391. nautobot/project-static/docs/development/core/getting-started.html +566 -179
  392. nautobot/project-static/docs/development/core/homepage.html +432 -30
  393. nautobot/project-static/docs/development/core/index.html +421 -19
  394. nautobot/project-static/docs/development/core/local-k8s.html +9453 -0
  395. nautobot/project-static/docs/development/core/model-checklist.html +424 -22
  396. nautobot/project-static/docs/development/core/model-features.html +421 -19
  397. nautobot/project-static/docs/development/core/natural-keys.html +421 -19
  398. nautobot/project-static/docs/development/core/navigation-menu.html +438 -26
  399. nautobot/project-static/docs/development/core/release-checklist.html +435 -45
  400. nautobot/project-static/docs/development/core/role-internals.html +421 -19
  401. nautobot/project-static/docs/development/core/settings.html +421 -19
  402. nautobot/project-static/docs/development/core/style-guide.html +421 -19
  403. nautobot/project-static/docs/development/core/templates.html +431 -22
  404. nautobot/project-static/docs/development/core/testing.html +421 -19
  405. nautobot/project-static/docs/development/core/ui-component-framework.html +11020 -0
  406. nautobot/project-static/docs/development/core/user-preferences.html +424 -22
  407. nautobot/project-static/docs/development/index.html +421 -19
  408. nautobot/project-static/docs/development/jobs/index.html +546 -160
  409. nautobot/project-static/docs/development/jobs/migration/from-v1.html +421 -19
  410. nautobot/project-static/docs/index.html +421 -19
  411. nautobot/project-static/docs/media/development/core/ui-component-framework/basic-panel-layout.png +0 -0
  412. nautobot/project-static/docs/media/development/core/ui-component-framework/button-example.png +0 -0
  413. nautobot/project-static/docs/media/development/core/ui-component-framework/dropdown-button-example.png +0 -0
  414. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-1.png +0 -0
  415. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-2.png +0 -0
  416. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example.png +0 -0
  417. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example.png +0 -0
  418. nautobot/project-static/docs/media/development/core/ui-component-framework/table-panels-family.png +0 -0
  419. nautobot/project-static/docs/media/development/core/ui-component-framework/text-panels-family.png +0 -0
  420. nautobot/project-static/docs/media/development/core/ui-component-framework/ui-framework-example.png +0 -0
  421. nautobot/project-static/docs/media/models/virtual_device_context_overview.drawio +73 -0
  422. nautobot/project-static/docs/media/models/virtual_device_context_overview.png +0 -0
  423. nautobot/project-static/docs/models/dcim/virtualdevicecontext.html +14 -0
  424. nautobot/project-static/docs/models/extras/jobqueue.html +14 -0
  425. nautobot/project-static/docs/models/wireless/radioprofile.html +14 -0
  426. nautobot/project-static/docs/models/wireless/supporteddatarate.html +14 -0
  427. nautobot/project-static/docs/models/wireless/wirelessnetwork.html +14 -0
  428. nautobot/project-static/docs/objects.inv +0 -0
  429. nautobot/project-static/docs/overview/application_stack.html +426 -20
  430. nautobot/project-static/docs/overview/design_philosophy.html +421 -19
  431. nautobot/project-static/docs/release-notes/index.html +445 -22
  432. nautobot/project-static/docs/release-notes/version-1.0.html +421 -19
  433. nautobot/project-static/docs/release-notes/version-1.1.html +421 -19
  434. nautobot/project-static/docs/release-notes/version-1.2.html +421 -19
  435. nautobot/project-static/docs/release-notes/version-1.3.html +421 -19
  436. nautobot/project-static/docs/release-notes/version-1.4.html +421 -19
  437. nautobot/project-static/docs/release-notes/version-1.5.html +421 -19
  438. nautobot/project-static/docs/release-notes/version-1.6.html +634 -667
  439. nautobot/project-static/docs/release-notes/version-2.0.html +421 -19
  440. nautobot/project-static/docs/release-notes/version-2.1.html +421 -19
  441. nautobot/project-static/docs/release-notes/version-2.2.html +421 -19
  442. nautobot/project-static/docs/release-notes/version-2.3.html +684 -886
  443. nautobot/project-static/docs/release-notes/version-2.4.html +10007 -0
  444. nautobot/project-static/docs/requirements.txt +2 -2
  445. nautobot/project-static/docs/search/search_index.json +1 -1
  446. nautobot/project-static/docs/sitemap.xml +334 -270
  447. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  448. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +421 -19
  449. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +421 -19
  450. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +423 -21
  451. nautobot/project-static/docs/user-guide/administration/configuration/index.html +433 -32
  452. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +421 -19
  453. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +765 -180
  454. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +421 -19
  455. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +421 -19
  456. nautobot/project-static/docs/user-guide/administration/guides/docker.html +434 -29
  457. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +421 -19
  458. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +421 -19
  459. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +421 -19
  460. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +421 -19
  461. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +421 -19
  462. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +421 -19
  463. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +421 -19
  464. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +421 -19
  465. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +421 -19
  466. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +421 -19
  467. nautobot/project-static/docs/user-guide/administration/installation/index.html +426 -20
  468. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +421 -19
  469. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +421 -19
  470. nautobot/project-static/docs/user-guide/administration/installation/services.html +421 -19
  471. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +421 -19
  472. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +442 -41
  473. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +435 -66
  474. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +435 -66
  475. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +421 -19
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +421 -19
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +421 -19
  478. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +421 -19
  479. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +421 -19
  480. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +421 -19
  481. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +421 -19
  482. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-nautobot-app-location.yaml +0 -16
  483. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +421 -19
  484. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +427 -21
  485. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +421 -19
  486. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +421 -19
  487. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +421 -19
  488. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +421 -19
  489. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +421 -19
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +421 -19
  491. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +421 -19
  492. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +421 -19
  493. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +421 -19
  494. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +421 -19
  495. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +421 -19
  496. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +421 -19
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +421 -19
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +421 -19
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +421 -19
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +421 -19
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +421 -19
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +457 -20
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +447 -22
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +421 -19
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +421 -19
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +421 -19
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +421 -19
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +421 -19
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +421 -19
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +421 -19
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +421 -19
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +421 -19
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +421 -19
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +421 -19
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +421 -19
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +421 -19
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +421 -19
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +421 -19
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +421 -19
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +421 -19
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +421 -19
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +421 -19
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +421 -19
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +421 -19
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +421 -19
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +421 -19
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +421 -19
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +421 -19
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +421 -19
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +421 -19
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +421 -19
  532. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +421 -19
  533. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +421 -19
  534. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +421 -19
  535. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +421 -19
  536. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +421 -19
  537. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +421 -19
  538. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9333 -0
  539. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +424 -22
  540. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +421 -19
  541. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +421 -19
  542. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +421 -19
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +421 -19
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +421 -19
  545. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +421 -19
  546. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +421 -19
  547. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +421 -19
  548. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +421 -19
  549. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +421 -19
  550. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +421 -19
  551. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +421 -19
  552. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +421 -19
  553. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +421 -19
  554. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +421 -19
  555. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +421 -19
  556. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +421 -19
  557. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +421 -19
  558. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +421 -19
  559. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +424 -22
  560. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9271 -0
  561. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9175 -0
  562. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9169 -0
  563. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9235 -0
  564. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +421 -19
  565. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +421 -19
  566. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +421 -19
  567. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +421 -19
  568. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +421 -19
  569. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +421 -19
  570. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +421 -19
  571. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +421 -19
  572. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +421 -19
  573. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +421 -19
  574. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +421 -19
  575. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +421 -19
  576. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +421 -19
  577. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +421 -19
  578. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +421 -19
  579. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +421 -19
  580. nautobot/project-static/docs/user-guide/index.html +421 -19
  581. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +424 -22
  582. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +421 -19
  583. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +421 -19
  584. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +421 -19
  585. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +421 -19
  586. nautobot/project-static/docs/user-guide/platform-functionality/events.html +9575 -0
  587. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +424 -22
  588. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +421 -19
  589. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +421 -19
  590. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +421 -19
  591. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +421 -19
  592. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +421 -19
  593. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +426 -20
  594. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +424 -22
  595. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +421 -19
  596. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +421 -19
  597. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9182 -0
  598. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +424 -22
  599. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +421 -19
  600. nautobot/project-static/docs/user-guide/platform-functionality/note.html +421 -19
  601. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +421 -19
  602. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +424 -22
  603. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9250 -0
  604. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +421 -19
  605. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +421 -19
  606. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +424 -22
  607. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +421 -19
  608. nautobot/project-static/docs/user-guide/platform-functionality/role.html +421 -19
  609. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +421 -19
  610. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +421 -19
  611. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +424 -22
  612. nautobot/project-static/docs/user-guide/platform-functionality/status.html +421 -19
  613. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +421 -19
  614. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +489 -56
  615. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +421 -19
  616. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +421 -19
  617. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +421 -19
  618. nautobot/project-static/img/jinja_logo.svg +97 -0
  619. nautobot/project-static/js/forms.js +5 -0
  620. nautobot/project-static/js/nav_menu.js +2 -1
  621. nautobot/tenancy/api/serializers.py +0 -2
  622. nautobot/tenancy/factory.py +1 -1
  623. nautobot/tenancy/navigation.py +0 -29
  624. nautobot/tenancy/templates/tenancy/tenant.html +4 -91
  625. nautobot/tenancy/tests/test_filters.py +29 -134
  626. nautobot/tenancy/views.py +32 -23
  627. nautobot/users/admin.py +3 -1
  628. nautobot/users/api/serializers.py +4 -5
  629. nautobot/users/api/views.py +1 -1
  630. nautobot/users/forms.py +19 -0
  631. nautobot/users/templates/users/preferences.html +22 -0
  632. nautobot/users/tests/test_filters.py +1 -19
  633. nautobot/users/tests/test_views.py +57 -0
  634. nautobot/users/utils.py +8 -0
  635. nautobot/users/views.py +48 -11
  636. nautobot/virtualization/api/serializers.py +4 -4
  637. nautobot/virtualization/filters.py +2 -20
  638. nautobot/virtualization/navigation.py +0 -48
  639. nautobot/virtualization/templates/virtualization/clustertype.html +0 -39
  640. nautobot/virtualization/tests/test_filters.py +57 -183
  641. nautobot/virtualization/views.py +18 -15
  642. nautobot/wireless/__init__.py +0 -0
  643. nautobot/wireless/api/__init__.py +0 -0
  644. nautobot/wireless/api/serializers.py +44 -0
  645. nautobot/wireless/api/urls.py +20 -0
  646. nautobot/wireless/api/views.py +34 -0
  647. nautobot/wireless/apps.py +8 -0
  648. nautobot/wireless/choices.py +345 -0
  649. nautobot/wireless/factory.py +138 -0
  650. nautobot/wireless/filters.py +167 -0
  651. nautobot/wireless/forms.py +283 -0
  652. nautobot/wireless/homepage.py +19 -0
  653. nautobot/wireless/migrations/0001_initial.py +223 -0
  654. nautobot/wireless/migrations/__init__.py +0 -0
  655. nautobot/wireless/models.py +207 -0
  656. nautobot/wireless/navigation.py +105 -0
  657. nautobot/wireless/tables.py +244 -0
  658. nautobot/wireless/templates/wireless/radioprofile_retrieve.html +81 -0
  659. nautobot/wireless/templates/wireless/supporteddatarate_retrieve.html +26 -0
  660. nautobot/wireless/templates/wireless/wirelessnetwork_create.html +88 -0
  661. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +64 -0
  662. nautobot/wireless/tests/__init__.py +0 -0
  663. nautobot/wireless/tests/test_api.py +247 -0
  664. nautobot/wireless/tests/test_filters.py +54 -0
  665. nautobot/wireless/tests/test_models.py +22 -0
  666. nautobot/wireless/tests/test_views.py +378 -0
  667. nautobot/wireless/urls.py +13 -0
  668. nautobot/wireless/views.py +129 -0
  669. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/METADATA +11 -14
  670. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/RECORD +674 -551
  671. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/WHEEL +1 -1
  672. nautobot/core/utils/navigation.py +0 -54
  673. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/LICENSE.txt +0 -0
  674. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/NOTICE +0 -0
  675. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.46">
22
22
 
23
23
 
24
24
 
@@ -3944,6 +3944,27 @@
3944
3944
 
3945
3945
 
3946
3946
 
3947
+
3948
+
3949
+
3950
+
3951
+
3952
+
3953
+ <li class="md-nav__item">
3954
+ <a href="../../../user-guide/core-data-model/dcim/virtualdevicecontext.html" class="md-nav__link">
3955
+
3956
+
3957
+ <span class="md-ellipsis">
3958
+ Virtual Device Context
3959
+ </span>
3960
+
3961
+
3962
+ </a>
3963
+ </li>
3964
+
3965
+
3966
+
3967
+
3947
3968
  </ul>
3948
3969
  </nav>
3949
3970
 
@@ -4556,6 +4577,123 @@
4556
4577
 
4557
4578
 
4558
4579
 
4580
+
4581
+
4582
+
4583
+
4584
+
4585
+
4586
+
4587
+
4588
+
4589
+
4590
+
4591
+
4592
+
4593
+ <li class="md-nav__item md-nav__item--nested">
4594
+
4595
+
4596
+
4597
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_9" >
4598
+
4599
+
4600
+
4601
+ <div class="md-nav__link md-nav__container">
4602
+ <a href="../../../user-guide/core-data-model/wireless/index.html" class="md-nav__link ">
4603
+
4604
+
4605
+ <span class="md-ellipsis">
4606
+ Wireless
4607
+ </span>
4608
+
4609
+
4610
+ </a>
4611
+
4612
+
4613
+ <label class="md-nav__link " for="__nav_2_3_9" id="__nav_2_3_9_label" tabindex="0">
4614
+ <span class="md-nav__icon md-icon"></span>
4615
+ </label>
4616
+
4617
+ </div>
4618
+
4619
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_9_label" aria-expanded="false">
4620
+ <label class="md-nav__title" for="__nav_2_3_9">
4621
+ <span class="md-nav__icon md-icon"></span>
4622
+ Wireless
4623
+ </label>
4624
+ <ul class="md-nav__list" data-md-scrollfix>
4625
+
4626
+
4627
+
4628
+
4629
+
4630
+
4631
+
4632
+ <li class="md-nav__item">
4633
+ <a href="../../../user-guide/core-data-model/wireless/supporteddatarate.html" class="md-nav__link">
4634
+
4635
+
4636
+ <span class="md-ellipsis">
4637
+ Supported Data Rate
4638
+ </span>
4639
+
4640
+
4641
+ </a>
4642
+ </li>
4643
+
4644
+
4645
+
4646
+
4647
+
4648
+
4649
+
4650
+
4651
+
4652
+
4653
+ <li class="md-nav__item">
4654
+ <a href="../../../user-guide/core-data-model/wireless/radioprofile.html" class="md-nav__link">
4655
+
4656
+
4657
+ <span class="md-ellipsis">
4658
+ Radio Profile
4659
+ </span>
4660
+
4661
+
4662
+ </a>
4663
+ </li>
4664
+
4665
+
4666
+
4667
+
4668
+
4669
+
4670
+
4671
+
4672
+
4673
+
4674
+ <li class="md-nav__item">
4675
+ <a href="../../../user-guide/core-data-model/wireless/wirelessnetwork.html" class="md-nav__link">
4676
+
4677
+
4678
+ <span class="md-ellipsis">
4679
+ Wireless Network
4680
+ </span>
4681
+
4682
+
4683
+ </a>
4684
+ </li>
4685
+
4686
+
4687
+
4688
+
4689
+ </ul>
4690
+ </nav>
4691
+
4692
+ </li>
4693
+
4694
+
4695
+
4696
+
4559
4697
  </ul>
4560
4698
  </nav>
4561
4699
 
@@ -4767,6 +4905,27 @@
4767
4905
 
4768
4906
 
4769
4907
 
4908
+ <li class="md-nav__item">
4909
+ <a href="../../../user-guide/platform-functionality/events.html" class="md-nav__link">
4910
+
4911
+
4912
+ <span class="md-ellipsis">
4913
+ Event Notifications
4914
+ </span>
4915
+
4916
+
4917
+ </a>
4918
+ </li>
4919
+
4920
+
4921
+
4922
+
4923
+
4924
+
4925
+
4926
+
4927
+
4928
+
4770
4929
  <li class="md-nav__item">
4771
4930
  <a href="../../../user-guide/platform-functionality/exporttemplate.html" class="md-nav__link">
4772
4931
 
@@ -4841,7 +5000,7 @@
4841
5000
 
4842
5001
 
4843
5002
 
4844
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_9" >
5003
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_10" >
4845
5004
 
4846
5005
 
4847
5006
 
@@ -4857,14 +5016,14 @@
4857
5016
  </a>
4858
5017
 
4859
5018
 
4860
- <label class="md-nav__link " for="__nav_2_4_9" id="__nav_2_4_9_label" tabindex="0">
5019
+ <label class="md-nav__link " for="__nav_2_4_10" id="__nav_2_4_10_label" tabindex="0">
4861
5020
  <span class="md-nav__icon md-icon"></span>
4862
5021
  </label>
4863
5022
 
4864
5023
  </div>
4865
5024
 
4866
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_9_label" aria-expanded="false">
4867
- <label class="md-nav__title" for="__nav_2_4_9">
5025
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_10_label" aria-expanded="false">
5026
+ <label class="md-nav__title" for="__nav_2_4_10">
4868
5027
  <span class="md-nav__icon md-icon"></span>
4869
5028
  GraphQL
4870
5029
  </label>
@@ -4937,7 +5096,7 @@
4937
5096
 
4938
5097
 
4939
5098
 
4940
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_11" >
5099
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_12" >
4941
5100
 
4942
5101
 
4943
5102
 
@@ -4953,14 +5112,14 @@
4953
5112
  </a>
4954
5113
 
4955
5114
 
4956
- <label class="md-nav__link " for="__nav_2_4_11" id="__nav_2_4_11_label" tabindex="0">
5115
+ <label class="md-nav__link " for="__nav_2_4_12" id="__nav_2_4_12_label" tabindex="0">
4957
5116
  <span class="md-nav__icon md-icon"></span>
4958
5117
  </label>
4959
5118
 
4960
5119
  </div>
4961
5120
 
4962
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_11_label" aria-expanded="false">
4963
- <label class="md-nav__title" for="__nav_2_4_11">
5121
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_12_label" aria-expanded="false">
5122
+ <label class="md-nav__title" for="__nav_2_4_12">
4964
5123
  <span class="md-nav__icon md-icon"></span>
4965
5124
  Jobs
4966
5125
  </label>
@@ -5035,6 +5194,27 @@
5035
5194
 
5036
5195
 
5037
5196
 
5197
+ <li class="md-nav__item">
5198
+ <a href="../../../user-guide/platform-functionality/jobs/jobqueue.html" class="md-nav__link">
5199
+
5200
+
5201
+ <span class="md-ellipsis">
5202
+ Job Queues
5203
+ </span>
5204
+
5205
+
5206
+ </a>
5207
+ </li>
5208
+
5209
+
5210
+
5211
+
5212
+
5213
+
5214
+
5215
+
5216
+
5217
+
5038
5218
  <li class="md-nav__item">
5039
5219
  <a href="../../../user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html" class="md-nav__link">
5040
5220
 
@@ -5148,6 +5328,27 @@
5148
5328
 
5149
5329
 
5150
5330
 
5331
+ <li class="md-nav__item">
5332
+ <a href="../../../user-guide/platform-functionality/rendering-jinja-templates.html" class="md-nav__link">
5333
+
5334
+
5335
+ <span class="md-ellipsis">
5336
+ Rendering Jinja Templates
5337
+ </span>
5338
+
5339
+
5340
+ </a>
5341
+ </li>
5342
+
5343
+
5344
+
5345
+
5346
+
5347
+
5348
+
5349
+
5350
+
5351
+
5151
5352
 
5152
5353
 
5153
5354
 
@@ -5159,7 +5360,7 @@
5159
5360
 
5160
5361
 
5161
5362
 
5162
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
5363
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_18" >
5163
5364
 
5164
5365
 
5165
5366
 
@@ -5175,14 +5376,14 @@
5175
5376
  </a>
5176
5377
 
5177
5378
 
5178
- <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
5379
+ <label class="md-nav__link " for="__nav_2_4_18" id="__nav_2_4_18_label" tabindex="0">
5179
5380
  <span class="md-nav__icon md-icon"></span>
5180
5381
  </label>
5181
5382
 
5182
5383
  </div>
5183
5384
 
5184
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
5185
- <label class="md-nav__title" for="__nav_2_4_16">
5385
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_18_label" aria-expanded="false">
5386
+ <label class="md-nav__title" for="__nav_2_4_18">
5186
5387
  <span class="md-nav__icon md-icon"></span>
5187
5388
  REST API
5188
5389
  </label>
@@ -5402,10 +5603,10 @@
5402
5603
 
5403
5604
 
5404
5605
 
5405
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
5606
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_25" >
5406
5607
 
5407
5608
 
5408
- <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
5609
+ <label class="md-nav__link" for="__nav_2_4_25" id="__nav_2_4_25_label" tabindex="0">
5409
5610
 
5410
5611
 
5411
5612
  <span class="md-ellipsis">
@@ -5416,8 +5617,8 @@
5416
5617
  <span class="md-nav__icon md-icon"></span>
5417
5618
  </label>
5418
5619
 
5419
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
5420
- <label class="md-nav__title" for="__nav_2_4_23">
5620
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_25_label" aria-expanded="false">
5621
+ <label class="md-nav__title" for="__nav_2_4_25">
5421
5622
  <span class="md-nav__icon md-icon"></span>
5422
5623
  Users
5423
5624
  </label>
@@ -6831,6 +7032,27 @@
6831
7032
 
6832
7033
 
6833
7034
 
7035
+ <li class="md-nav__item">
7036
+ <a href="events.html" class="md-nav__link">
7037
+
7038
+
7039
+ <span class="md-ellipsis">
7040
+ nautobot.apps.events
7041
+ </span>
7042
+
7043
+
7044
+ </a>
7045
+ </li>
7046
+
7047
+
7048
+
7049
+
7050
+
7051
+
7052
+
7053
+
7054
+
7055
+
6834
7056
  <li class="md-nav__item">
6835
7057
  <a href="exceptions.html" class="md-nav__link">
6836
7058
 
@@ -7606,15 +7828,6 @@
7606
7828
  </span>
7607
7829
  </a>
7608
7830
 
7609
- </li>
7610
-
7611
- <li class="md-nav__item">
7612
- <a href="#nautobot.apps.testing.FilterTestCases.FilterTestCase.test_id" class="md-nav__link">
7613
- <span class="md-ellipsis">
7614
- test_id
7615
- </span>
7616
- </a>
7617
-
7618
7831
  </li>
7619
7832
 
7620
7833
  <li class="md-nav__item">
@@ -7624,15 +7837,6 @@
7624
7837
  </span>
7625
7838
  </a>
7626
7839
 
7627
- </li>
7628
-
7629
- <li class="md-nav__item">
7630
- <a href="#nautobot.apps.testing.FilterTestCases.FilterTestCase.test_q_filter_exists" class="md-nav__link">
7631
- <span class="md-ellipsis">
7632
- test_q_filter_exists
7633
- </span>
7634
- </a>
7635
-
7636
7840
  </li>
7637
7841
 
7638
7842
  <li class="md-nav__item">
@@ -7665,21 +7869,6 @@
7665
7869
  </span>
7666
7870
  </a>
7667
7871
 
7668
- <nav class="md-nav" aria-label="NameOnlyFilterTestCase">
7669
- <ul class="md-nav__list">
7670
-
7671
- <li class="md-nav__item">
7672
- <a href="#nautobot.apps.testing.FilterTestCases.NameOnlyFilterTestCase.test_name" class="md-nav__link">
7673
- <span class="md-ellipsis">
7674
- test_name
7675
- </span>
7676
- </a>
7677
-
7678
- </li>
7679
-
7680
- </ul>
7681
- </nav>
7682
-
7683
7872
  </li>
7684
7873
 
7685
7874
  <li class="md-nav__item">
@@ -7689,21 +7878,6 @@
7689
7878
  </span>
7690
7879
  </a>
7691
7880
 
7692
- <nav class="md-nav" aria-label="NameSlugFilterTestCase">
7693
- <ul class="md-nav__list">
7694
-
7695
- <li class="md-nav__item">
7696
- <a href="#nautobot.apps.testing.FilterTestCases.NameSlugFilterTestCase.test_slug" class="md-nav__link">
7697
- <span class="md-ellipsis">
7698
- test_slug
7699
- </span>
7700
- </a>
7701
-
7702
- </li>
7703
-
7704
- </ul>
7705
- </nav>
7706
-
7707
7881
  </li>
7708
7882
 
7709
7883
  <li class="md-nav__item">
@@ -8292,15 +8466,6 @@
8292
8466
  </span>
8293
8467
  </a>
8294
8468
 
8295
- </li>
8296
-
8297
- <li class="md-nav__item">
8298
- <a href="#nautobot.apps.testing.ViewTestCases.BulkImportObjectsViewTestCase" class="md-nav__link">
8299
- <span class="md-ellipsis">
8300
- BulkImportObjectsViewTestCase
8301
- </span>
8302
- </a>
8303
-
8304
8469
  </li>
8305
8470
 
8306
8471
  <li class="md-nav__item">
@@ -8328,30 +8493,6 @@
8328
8493
  </span>
8329
8494
  </a>
8330
8495
 
8331
- <nav class="md-nav" aria-label="CreateObjectViewTestCase">
8332
- <ul class="md-nav__list">
8333
-
8334
- <li class="md-nav__item">
8335
- <a href="#nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_autocreation" class="md-nav__link">
8336
- <span class="md-ellipsis">
8337
- test_slug_autocreation
8338
- </span>
8339
- </a>
8340
-
8341
- </li>
8342
-
8343
- <li class="md-nav__item">
8344
- <a href="#nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_not_modified" class="md-nav__link">
8345
- <span class="md-ellipsis">
8346
- test_slug_not_modified
8347
- </span>
8348
- </a>
8349
-
8350
- </li>
8351
-
8352
- </ul>
8353
- </nav>
8354
-
8355
8496
  </li>
8356
8497
 
8357
8498
  <li class="md-nav__item">
@@ -8879,11 +9020,128 @@
8879
9020
 
8880
9021
 
8881
9022
  <li class="md-nav__item">
8882
- <a href="../../../development/apps/migration/model-updates/dcim.html" class="md-nav__link">
9023
+ <a href="../../../development/apps/migration/model-updates/dcim.html" class="md-nav__link">
9024
+
9025
+
9026
+ <span class="md-ellipsis">
9027
+ DCIM
9028
+ </span>
9029
+
9030
+
9031
+ </a>
9032
+ </li>
9033
+
9034
+
9035
+
9036
+
9037
+
9038
+
9039
+
9040
+
9041
+
9042
+
9043
+ <li class="md-nav__item">
9044
+ <a href="../../../development/apps/migration/model-updates/extras.html" class="md-nav__link">
9045
+
9046
+
9047
+ <span class="md-ellipsis">
9048
+ Extras
9049
+ </span>
9050
+
9051
+
9052
+ </a>
9053
+ </li>
9054
+
9055
+
9056
+
9057
+
9058
+
9059
+
9060
+
9061
+
9062
+
9063
+
9064
+ <li class="md-nav__item">
9065
+ <a href="../../../development/apps/migration/model-updates/ipam.html" class="md-nav__link">
9066
+
9067
+
9068
+ <span class="md-ellipsis">
9069
+ IPAM
9070
+ </span>
9071
+
9072
+
9073
+ </a>
9074
+ </li>
9075
+
9076
+
9077
+
9078
+
9079
+ </ul>
9080
+ </nav>
9081
+
9082
+ </li>
9083
+
9084
+
9085
+
9086
+
9087
+
9088
+
9089
+
9090
+
9091
+
9092
+
9093
+
9094
+
9095
+
9096
+
9097
+
9098
+
9099
+
9100
+ <li class="md-nav__item md-nav__item--nested">
9101
+
9102
+
9103
+
9104
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_9_5" >
9105
+
9106
+
9107
+
9108
+ <div class="md-nav__link md-nav__container">
9109
+ <a href="../../../development/apps/migration/ui-component-framework/index.html" class="md-nav__link ">
9110
+
9111
+
9112
+ <span class="md-ellipsis">
9113
+ UI Component Framework
9114
+ </span>
9115
+
9116
+
9117
+ </a>
9118
+
9119
+
9120
+ <label class="md-nav__link " for="__nav_3_2_9_5" id="__nav_3_2_9_5_label" tabindex="0">
9121
+ <span class="md-nav__icon md-icon"></span>
9122
+ </label>
9123
+
9124
+ </div>
9125
+
9126
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_2_9_5_label" aria-expanded="false">
9127
+ <label class="md-nav__title" for="__nav_3_2_9_5">
9128
+ <span class="md-nav__icon md-icon"></span>
9129
+ UI Component Framework
9130
+ </label>
9131
+ <ul class="md-nav__list" data-md-scrollfix>
9132
+
9133
+
9134
+
9135
+
9136
+
9137
+
9138
+
9139
+ <li class="md-nav__item">
9140
+ <a href="../../../development/apps/migration/ui-component-framework/migration-steps.html" class="md-nav__link">
8883
9141
 
8884
9142
 
8885
9143
  <span class="md-ellipsis">
8886
- DCIM
9144
+ Migration steps
8887
9145
  </span>
8888
9146
 
8889
9147
 
@@ -8900,11 +9158,11 @@
8900
9158
 
8901
9159
 
8902
9160
  <li class="md-nav__item">
8903
- <a href="../../../development/apps/migration/model-updates/extras.html" class="md-nav__link">
9161
+ <a href="../../../development/apps/migration/ui-component-framework/custom-content.html" class="md-nav__link">
8904
9162
 
8905
9163
 
8906
9164
  <span class="md-ellipsis">
8907
- Extras
9165
+ Custom content
8908
9166
  </span>
8909
9167
 
8910
9168
 
@@ -8921,11 +9179,11 @@
8921
9179
 
8922
9180
 
8923
9181
  <li class="md-nav__item">
8924
- <a href="../../../development/apps/migration/model-updates/ipam.html" class="md-nav__link">
9182
+ <a href="../../../development/apps/migration/ui-component-framework/best-practices.html" class="md-nav__link">
8925
9183
 
8926
9184
 
8927
9185
  <span class="md-ellipsis">
8928
- IPAM
9186
+ Best practices
8929
9187
  </span>
8930
9188
 
8931
9189
 
@@ -9288,6 +9546,27 @@
9288
9546
 
9289
9547
 
9290
9548
 
9549
+ <li class="md-nav__item">
9550
+ <a href="../../../development/core/local-k8s.html" class="md-nav__link">
9551
+
9552
+
9553
+ <span class="md-ellipsis">
9554
+ Local Kubernetes Cluster
9555
+ </span>
9556
+
9557
+
9558
+ </a>
9559
+ </li>
9560
+
9561
+
9562
+
9563
+
9564
+
9565
+
9566
+
9567
+
9568
+
9569
+
9291
9570
  <li class="md-nav__item">
9292
9571
  <a href="../../../development/core/model-checklist.html" class="md-nav__link">
9293
9572
 
@@ -9477,6 +9756,27 @@
9477
9756
 
9478
9757
 
9479
9758
 
9759
+ <li class="md-nav__item">
9760
+ <a href="../../../development/core/ui-component-framework.html" class="md-nav__link">
9761
+
9762
+
9763
+ <span class="md-ellipsis">
9764
+ UI Component Framework
9765
+ </span>
9766
+
9767
+
9768
+ </a>
9769
+ </li>
9770
+
9771
+
9772
+
9773
+
9774
+
9775
+
9776
+
9777
+
9778
+
9779
+
9480
9780
  <li class="md-nav__item">
9481
9781
  <a href="../../../development/core/release-checklist.html" class="md-nav__link">
9482
9782
 
@@ -9559,6 +9859,27 @@
9559
9859
 
9560
9860
 
9561
9861
 
9862
+ <li class="md-nav__item">
9863
+ <a href="../../../release-notes/version-2.4.html" class="md-nav__link">
9864
+
9865
+
9866
+ <span class="md-ellipsis">
9867
+ Version 2.4
9868
+ </span>
9869
+
9870
+
9871
+ </a>
9872
+ </li>
9873
+
9874
+
9875
+
9876
+
9877
+
9878
+
9879
+
9880
+
9881
+
9882
+
9562
9883
  <li class="md-nav__item">
9563
9884
  <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
9564
9885
 
@@ -10665,15 +10986,6 @@
10665
10986
  </span>
10666
10987
  </a>
10667
10988
 
10668
- </li>
10669
-
10670
- <li class="md-nav__item">
10671
- <a href="#nautobot.apps.testing.FilterTestCases.FilterTestCase.test_id" class="md-nav__link">
10672
- <span class="md-ellipsis">
10673
- test_id
10674
- </span>
10675
- </a>
10676
-
10677
10989
  </li>
10678
10990
 
10679
10991
  <li class="md-nav__item">
@@ -10683,15 +10995,6 @@
10683
10995
  </span>
10684
10996
  </a>
10685
10997
 
10686
- </li>
10687
-
10688
- <li class="md-nav__item">
10689
- <a href="#nautobot.apps.testing.FilterTestCases.FilterTestCase.test_q_filter_exists" class="md-nav__link">
10690
- <span class="md-ellipsis">
10691
- test_q_filter_exists
10692
- </span>
10693
- </a>
10694
-
10695
10998
  </li>
10696
10999
 
10697
11000
  <li class="md-nav__item">
@@ -10724,21 +11027,6 @@
10724
11027
  </span>
10725
11028
  </a>
10726
11029
 
10727
- <nav class="md-nav" aria-label="NameOnlyFilterTestCase">
10728
- <ul class="md-nav__list">
10729
-
10730
- <li class="md-nav__item">
10731
- <a href="#nautobot.apps.testing.FilterTestCases.NameOnlyFilterTestCase.test_name" class="md-nav__link">
10732
- <span class="md-ellipsis">
10733
- test_name
10734
- </span>
10735
- </a>
10736
-
10737
- </li>
10738
-
10739
- </ul>
10740
- </nav>
10741
-
10742
11030
  </li>
10743
11031
 
10744
11032
  <li class="md-nav__item">
@@ -10748,21 +11036,6 @@
10748
11036
  </span>
10749
11037
  </a>
10750
11038
 
10751
- <nav class="md-nav" aria-label="NameSlugFilterTestCase">
10752
- <ul class="md-nav__list">
10753
-
10754
- <li class="md-nav__item">
10755
- <a href="#nautobot.apps.testing.FilterTestCases.NameSlugFilterTestCase.test_slug" class="md-nav__link">
10756
- <span class="md-ellipsis">
10757
- test_slug
10758
- </span>
10759
- </a>
10760
-
10761
- </li>
10762
-
10763
- </ul>
10764
- </nav>
10765
-
10766
11039
  </li>
10767
11040
 
10768
11041
  <li class="md-nav__item">
@@ -11351,15 +11624,6 @@
11351
11624
  </span>
11352
11625
  </a>
11353
11626
 
11354
- </li>
11355
-
11356
- <li class="md-nav__item">
11357
- <a href="#nautobot.apps.testing.ViewTestCases.BulkImportObjectsViewTestCase" class="md-nav__link">
11358
- <span class="md-ellipsis">
11359
- BulkImportObjectsViewTestCase
11360
- </span>
11361
- </a>
11362
-
11363
11627
  </li>
11364
11628
 
11365
11629
  <li class="md-nav__item">
@@ -11387,30 +11651,6 @@
11387
11651
  </span>
11388
11652
  </a>
11389
11653
 
11390
- <nav class="md-nav" aria-label="CreateObjectViewTestCase">
11391
- <ul class="md-nav__list">
11392
-
11393
- <li class="md-nav__item">
11394
- <a href="#nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_autocreation" class="md-nav__link">
11395
- <span class="md-ellipsis">
11396
- test_slug_autocreation
11397
- </span>
11398
- </a>
11399
-
11400
- </li>
11401
-
11402
- <li class="md-nav__item">
11403
- <a href="#nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_not_modified" class="md-nav__link">
11404
- <span class="md-ellipsis">
11405
- test_slug_not_modified
11406
- </span>
11407
- </a>
11408
-
11409
- </li>
11410
-
11411
- </ul>
11412
- </nav>
11413
-
11414
11654
  </li>
11415
11655
 
11416
11656
  <li class="md-nav__item">
@@ -12953,23 +13193,6 @@ This expects a field named <code>devices</code> on the model and a filter named
12953
13193
  <div class="doc doc-object doc-function">
12954
13194
 
12955
13195
 
12956
- <h4 id="nautobot.apps.testing.FilterTestCases.FilterTestCase.test_id" class="doc doc-heading">
12957
- <code class="highlight language-python"><span class="n">test_id</span><span class="p">()</span></code>
12958
-
12959
- <a href="#nautobot.apps.testing.FilterTestCases.FilterTestCase.test_id" class="headerlink" title="Permanent link">&para;</a></h4>
12960
-
12961
-
12962
- <div class="doc doc-contents ">
12963
-
12964
- <p>Verify that the filterset supports filtering by id with only lookup <code>__n</code>.</p>
12965
-
12966
- </div>
12967
-
12968
- </div>
12969
-
12970
- <div class="doc doc-object doc-function">
12971
-
12972
-
12973
13196
  <h4 id="nautobot.apps.testing.FilterTestCases.FilterTestCase.test_invalid_filter" class="doc doc-heading">
12974
13197
  <code class="highlight language-python"><span class="n">test_invalid_filter</span><span class="p">()</span></code>
12975
13198
 
@@ -12987,23 +13210,6 @@ This expects a field named <code>devices</code> on the model and a filter named
12987
13210
  <div class="doc doc-object doc-function">
12988
13211
 
12989
13212
 
12990
- <h4 id="nautobot.apps.testing.FilterTestCases.FilterTestCase.test_q_filter_exists" class="doc doc-heading">
12991
- <code class="highlight language-python"><span class="n">test_q_filter_exists</span><span class="p">()</span></code>
12992
-
12993
- <a href="#nautobot.apps.testing.FilterTestCases.FilterTestCase.test_q_filter_exists" class="headerlink" title="Permanent link">&para;</a></h4>
12994
-
12995
-
12996
- <div class="doc doc-contents ">
12997
-
12998
- <p>Test the <code>q</code> filter exists on a filterset, does not validate the filter works as expected.</p>
12999
-
13000
- </div>
13001
-
13002
- </div>
13003
-
13004
- <div class="doc doc-object doc-function">
13005
-
13006
-
13007
13213
  <h4 id="nautobot.apps.testing.FilterTestCases.FilterTestCase.test_q_filter_valid" class="doc doc-heading">
13008
13214
  <code class="highlight language-python"><span class="n">test_q_filter_valid</span><span class="p">()</span></code>
13009
13215
 
@@ -13074,23 +13280,6 @@ This expects a field named <code>devices</code> on the model and a filter named
13074
13280
 
13075
13281
 
13076
13282
 
13077
- <div class="doc doc-object doc-function">
13078
-
13079
-
13080
- <h4 id="nautobot.apps.testing.FilterTestCases.NameOnlyFilterTestCase.test_name" class="doc doc-heading">
13081
- <code class="highlight language-python"><span class="n">test_name</span><span class="p">()</span></code>
13082
-
13083
- <a href="#nautobot.apps.testing.FilterTestCases.NameOnlyFilterTestCase.test_name" class="headerlink" title="Permanent link">&para;</a></h4>
13084
-
13085
-
13086
- <div class="doc doc-contents ">
13087
-
13088
- <p>Verify that the filterset supports filtering by name.</p>
13089
-
13090
- </div>
13091
-
13092
- </div>
13093
-
13094
13283
 
13095
13284
 
13096
13285
  </div>
@@ -13112,7 +13301,7 @@ This expects a field named <code>devices</code> on the model and a filter named
13112
13301
 
13113
13302
  <div class="doc doc-contents ">
13114
13303
  <p class="doc doc-class-bases">
13115
- Bases: <code><autoref identifier="nautobot.core.testing.filters.FilterTestCases.NameOnlyFilterTestCase" optional hover>NameOnlyFilterTestCase</autoref></code></p>
13304
+ Bases: <code><autoref identifier="nautobot.core.testing.filters.FilterTestCases.FilterTestCase" optional hover>FilterTestCase</autoref></code></p>
13116
13305
 
13117
13306
 
13118
13307
  <p>Add simple tests for filtering by name and by slug.</p>
@@ -13130,23 +13319,6 @@ This expects a field named <code>devices</code> on the model and a filter named
13130
13319
 
13131
13320
 
13132
13321
 
13133
- <div class="doc doc-object doc-function">
13134
-
13135
-
13136
- <h4 id="nautobot.apps.testing.FilterTestCases.NameSlugFilterTestCase.test_slug" class="doc doc-heading">
13137
- <code class="highlight language-python"><span class="n">test_slug</span><span class="p">()</span></code>
13138
-
13139
- <a href="#nautobot.apps.testing.FilterTestCases.NameSlugFilterTestCase.test_slug" class="headerlink" title="Permanent link">&para;</a></h4>
13140
-
13141
-
13142
- <div class="doc doc-contents ">
13143
-
13144
- <p>Verify that the filterset supports filtering by slug.</p>
13145
-
13146
- </div>
13147
-
13148
- </div>
13149
-
13150
13322
 
13151
13323
 
13152
13324
  </div>
@@ -13624,21 +13796,14 @@ This expects a field named <code>devices</code> on the model and a filter named
13624
13796
 
13625
13797
 
13626
13798
  <h3 id="nautobot.apps.testing.NautobotTestCaseMixin.add_permissions" class="doc doc-heading">
13627
- <code class="highlight language-python"><span class="n">add_permissions</span><span class="p">(</span><span class="o">*</span><span class="n">names</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
13799
+ <code class="highlight language-python"><span class="n">add_permissions</span><span class="p">(</span><span class="o">*</span><span class="n">names</span><span class="p">)</span></code>
13628
13800
 
13629
13801
  <a href="#nautobot.apps.testing.NautobotTestCaseMixin.add_permissions" class="headerlink" title="Permanent link">&para;</a></h3>
13630
13802
 
13631
13803
 
13632
13804
  <div class="doc doc-contents ">
13633
13805
 
13634
- <p>Assign a set of permissions to the test user. Accepts permission names in the form <app>.<action>_<model>.
13635
- Additional keyword arguments will be passed to the ObjectPermission constructor to allow creating more detailed permissions.</p>
13636
-
13637
-
13638
- <p><span class="doc-section-title">Examples:</span></p>
13639
- <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">add_permissions</span><span class="p">(</span><span class="s2">&quot;ipam.add_vlangroup&quot;</span><span class="p">,</span> <span class="s2">&quot;ipam.view_vlangroup&quot;</span><span class="p">)</span>
13640
- <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">add_permissions</span><span class="p">(</span><span class="s2">&quot;ipam.add_vlangroup&quot;</span><span class="p">,</span> <span class="s2">&quot;ipam.view_vlangroup&quot;</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;pk&quot;</span><span class="p">:</span> <span class="s2">&quot;uuid-1234&quot;</span><span class="p">})</span>
13641
- </code></pre></div>
13806
+ <p>Assign a set of permissions to the test user. Accepts permission names in the form <app>.<action>_<model>.</p>
13642
13807
 
13643
13808
  </div>
13644
13809
 
@@ -14638,49 +14803,6 @@ statuses present in the database in order to run tests.</p>
14638
14803
 
14639
14804
 
14640
14805
 
14641
- </div>
14642
-
14643
- </div>
14644
-
14645
- </div>
14646
-
14647
- <div class="doc doc-object doc-class">
14648
-
14649
-
14650
-
14651
- <h3 id="nautobot.apps.testing.ViewTestCases.BulkImportObjectsViewTestCase" class="doc doc-heading">
14652
- <code>BulkImportObjectsViewTestCase</code>
14653
-
14654
-
14655
- <a href="#nautobot.apps.testing.ViewTestCases.BulkImportObjectsViewTestCase" class="headerlink" title="Permanent link">&para;</a></h3>
14656
-
14657
-
14658
- <div class="doc doc-contents ">
14659
- <p class="doc doc-class-bases">
14660
- Bases: <code><autoref identifier="nautobot.core.testing.views.ModelViewTestCase" optional hover>ModelViewTestCase</autoref></code></p>
14661
-
14662
-
14663
- <p>Vestigial test case, to be removed in 3.0.</p>
14664
- <p>This is vestigial since the introduction of the ImportObjects system Job to handle bulk-import of all
14665
- content-types via REST API serializers. The parsing of CSV data by the serializer is exercised by
14666
- APIViewTestCases.CreateObjectViewTestCase.test_recreate_object_csv(), and the basic operation of the Job is
14667
- exercised by nautobot.core.tests.test_jobs.</p>
14668
-
14669
-
14670
-
14671
-
14672
- <div class="doc doc-children">
14673
-
14674
-
14675
-
14676
-
14677
-
14678
-
14679
-
14680
-
14681
-
14682
-
14683
-
14684
14806
  </div>
14685
14807
 
14686
14808
  </div>
@@ -14799,40 +14921,6 @@ exercised by nautobot.core.tests.test_jobs.</p>
14799
14921
 
14800
14922
 
14801
14923
 
14802
- <div class="doc doc-object doc-function">
14803
-
14804
-
14805
- <h4 id="nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_autocreation" class="doc doc-heading">
14806
- <code class="highlight language-python"><span class="n">test_slug_autocreation</span><span class="p">()</span></code>
14807
-
14808
- <a href="#nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_autocreation" class="headerlink" title="Permanent link">&para;</a></h4>
14809
-
14810
-
14811
- <div class="doc doc-contents ">
14812
-
14813
- <p>Test that slug is autocreated through ORM.</p>
14814
-
14815
- </div>
14816
-
14817
- </div>
14818
-
14819
- <div class="doc doc-object doc-function">
14820
-
14821
-
14822
- <h4 id="nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_not_modified" class="doc doc-heading">
14823
- <code class="highlight language-python"><span class="n">test_slug_not_modified</span><span class="p">()</span></code>
14824
-
14825
- <a href="#nautobot.apps.testing.ViewTestCases.CreateObjectViewTestCase.test_slug_not_modified" class="headerlink" title="Permanent link">&para;</a></h4>
14826
-
14827
-
14828
- <div class="doc doc-contents ">
14829
-
14830
- <p>Ensure save method does not modify slug that is passed in.</p>
14831
-
14832
- </div>
14833
-
14834
- </div>
14835
-
14836
14924
 
14837
14925
 
14838
14926
  </div>
@@ -15879,10 +15967,10 @@ document$.subscribe(() => { lightbox.reload() });
15879
15967
  </div>
15880
15968
 
15881
15969
 
15882
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
15970
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
15883
15971
 
15884
15972
 
15885
- <script src="../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
15973
+ <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script>
15886
15974
 
15887
15975
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
15888
15976