nautobot 2.4.0b1__py3-none-any.whl → 2.4.2__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 (668) hide show
  1. nautobot/apps/__init__.py +1 -1
  2. nautobot/apps/api.py +8 -8
  3. nautobot/apps/change_logging.py +2 -2
  4. nautobot/apps/choices.py +4 -4
  5. nautobot/apps/events.py +3 -3
  6. nautobot/apps/factory.py +2 -2
  7. nautobot/apps/filters.py +1 -1
  8. nautobot/apps/forms.py +20 -20
  9. nautobot/apps/graphql.py +2 -2
  10. nautobot/apps/jobs.py +8 -8
  11. nautobot/apps/models.py +19 -19
  12. nautobot/apps/tables.py +1 -1
  13. nautobot/apps/testing.py +10 -10
  14. nautobot/apps/ui.py +2 -2
  15. nautobot/apps/utils.py +7 -7
  16. nautobot/apps/views.py +7 -7
  17. nautobot/circuits/api/serializers.py +1 -0
  18. nautobot/circuits/api/views.py +4 -8
  19. nautobot/circuits/tables.py +2 -1
  20. nautobot/circuits/templates/circuits/circuit_create.html +1 -7
  21. nautobot/circuits/tests/integration/test_circuits_bulk_operations.py +43 -0
  22. nautobot/circuits/tests/integration/test_relationships.py +1 -1
  23. nautobot/circuits/views.py +3 -3
  24. nautobot/cloud/api/views.py +6 -10
  25. nautobot/cloud/models.py +1 -1
  26. nautobot/cloud/views.py +0 -16
  27. nautobot/core/api/constants.py +11 -0
  28. nautobot/core/api/fields.py +5 -5
  29. nautobot/core/api/filter_backends.py +3 -9
  30. nautobot/core/api/schema.py +13 -2
  31. nautobot/core/api/serializers.py +40 -34
  32. nautobot/core/api/views.py +56 -4
  33. nautobot/core/apps/__init__.py +0 -5
  34. nautobot/core/celery/log.py +4 -4
  35. nautobot/core/celery/schedulers.py +2 -2
  36. nautobot/core/choices.py +2 -2
  37. nautobot/core/events/__init__.py +3 -3
  38. nautobot/core/filters.py +67 -35
  39. nautobot/core/forms/__init__.py +19 -19
  40. nautobot/core/forms/fields.py +14 -11
  41. nautobot/core/forms/forms.py +33 -2
  42. nautobot/core/graphql/types.py +1 -1
  43. nautobot/core/jobs/__init__.py +28 -7
  44. nautobot/core/jobs/bulk_actions.py +285 -0
  45. nautobot/core/jobs/cleanup.py +48 -12
  46. nautobot/core/jobs/groups.py +1 -1
  47. nautobot/core/management/commands/validate_models.py +1 -1
  48. nautobot/core/models/__init__.py +3 -1
  49. nautobot/core/models/query_functions.py +2 -2
  50. nautobot/core/models/tree_queries.py +6 -3
  51. nautobot/core/settings.py +29 -2
  52. nautobot/core/settings.yaml +21 -0
  53. nautobot/core/tables.py +79 -61
  54. nautobot/core/templates/about.html +67 -0
  55. nautobot/core/templates/generic/object_bulk_destroy.html +1 -1
  56. nautobot/core/templates/inc/media.html +3 -0
  57. nautobot/core/templates/inc/nav_menu.html +1 -0
  58. nautobot/core/templates/inc/tenancy_form_panel.html +9 -0
  59. nautobot/core/templates/inc/tenant_table_row.html +11 -0
  60. nautobot/core/templates/nautobot_config.py.j2 +13 -0
  61. nautobot/core/templates/search.html +7 -0
  62. nautobot/core/templates/utilities/render_jinja2.html +1 -1
  63. nautobot/core/templates/utilities/templatetags/tag.html +1 -1
  64. nautobot/core/templates/utilities/theme_preview.html +7 -0
  65. nautobot/core/templatetags/helpers.py +11 -2
  66. nautobot/core/testing/__init__.py +8 -8
  67. nautobot/core/testing/api.py +170 -15
  68. nautobot/core/testing/filters.py +45 -10
  69. nautobot/core/testing/forms.py +2 -0
  70. nautobot/core/testing/integration.py +514 -5
  71. nautobot/core/testing/mixins.py +7 -2
  72. nautobot/core/testing/views.py +44 -29
  73. nautobot/core/tests/integration/test_app_home.py +0 -1
  74. nautobot/core/tests/integration/test_app_navbar.py +0 -1
  75. nautobot/core/tests/integration/test_filters.py +0 -2
  76. nautobot/core/tests/integration/test_home.py +0 -1
  77. nautobot/core/tests/integration/test_navbar.py +0 -1
  78. nautobot/core/tests/integration/test_view_authentication.py +1 -0
  79. nautobot/core/tests/runner.py +1 -1
  80. nautobot/core/tests/test_api.py +98 -1
  81. nautobot/core/tests/test_csv.py +25 -3
  82. nautobot/core/tests/test_filters.py +209 -246
  83. nautobot/core/tests/test_forms.py +1 -0
  84. nautobot/core/tests/test_jobs.py +492 -1
  85. nautobot/core/tests/test_models.py +9 -0
  86. nautobot/core/tests/test_settings_schema.py +7 -0
  87. nautobot/core/tests/test_tables.py +100 -0
  88. nautobot/core/tests/test_utils.py +63 -1
  89. nautobot/core/tests/test_views.py +30 -3
  90. nautobot/core/ui/nav.py +1 -0
  91. nautobot/core/ui/object_detail.py +15 -1
  92. nautobot/core/urls.py +11 -0
  93. nautobot/core/utils/git.py +7 -2
  94. nautobot/core/utils/lookup.py +11 -8
  95. nautobot/core/utils/querysets.py +64 -0
  96. nautobot/core/utils/requests.py +24 -9
  97. nautobot/core/views/__init__.py +42 -0
  98. nautobot/core/views/generic.py +131 -197
  99. nautobot/core/views/mixins.py +136 -41
  100. nautobot/core/views/renderers.py +6 -6
  101. nautobot/core/views/utils.py +2 -2
  102. nautobot/dcim/api/serializers.py +56 -64
  103. nautobot/dcim/api/views.py +47 -113
  104. nautobot/dcim/constants.py +6 -13
  105. nautobot/dcim/factory.py +6 -1
  106. nautobot/dcim/filters/__init__.py +31 -2
  107. nautobot/dcim/forms.py +48 -17
  108. nautobot/dcim/graphql/types.py +2 -2
  109. nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +25 -0
  110. nautobot/dcim/models/__init__.py +1 -1
  111. nautobot/dcim/models/device_component_templates.py +2 -2
  112. nautobot/dcim/models/device_components.py +22 -20
  113. nautobot/dcim/models/devices.py +10 -1
  114. nautobot/dcim/models/locations.py +3 -3
  115. nautobot/dcim/models/power.py +6 -5
  116. nautobot/dcim/models/racks.py +4 -4
  117. nautobot/dcim/tables/__init__.py +3 -3
  118. nautobot/dcim/tables/devices.py +9 -6
  119. nautobot/dcim/tables/devicetypes.py +2 -2
  120. nautobot/dcim/tables/racks.py +1 -1
  121. nautobot/dcim/templates/dcim/cable.html +1 -1
  122. nautobot/dcim/templates/dcim/controller_create.html +1 -7
  123. nautobot/dcim/templates/dcim/controller_retrieve.html +1 -9
  124. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +2 -0
  125. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +5 -0
  126. nautobot/dcim/templates/dcim/device/base.html +1 -1
  127. nautobot/dcim/templates/dcim/device.html +3 -11
  128. nautobot/dcim/templates/dcim/device_component.html +1 -1
  129. nautobot/dcim/templates/dcim/device_edit.html +36 -37
  130. nautobot/dcim/templates/dcim/devicetype.html +1 -1
  131. nautobot/dcim/templates/dcim/location.html +2 -10
  132. nautobot/dcim/templates/dcim/location_edit.html +1 -7
  133. nautobot/dcim/templates/dcim/locationtype.html +1 -1
  134. nautobot/dcim/templates/dcim/locationtype_retrieve.html +1 -1
  135. nautobot/dcim/templates/dcim/manufacturer.html +1 -1
  136. nautobot/dcim/templates/dcim/platform.html +1 -1
  137. nautobot/dcim/templates/dcim/powerfeed.html +1 -1
  138. nautobot/dcim/templates/dcim/powerpanel.html +1 -1
  139. nautobot/dcim/templates/dcim/rack.html +2 -10
  140. nautobot/dcim/templates/dcim/rack_edit.html +1 -7
  141. nautobot/dcim/templates/dcim/rackgroup.html +1 -1
  142. nautobot/dcim/templates/dcim/rackreservation.html +3 -11
  143. nautobot/dcim/templates/dcim/virtualchassis.html +1 -1
  144. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +1 -9
  145. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +1 -7
  146. nautobot/dcim/tests/integration/test_controller.py +62 -0
  147. nautobot/dcim/tests/integration/test_controller_managed_device_group.py +71 -0
  148. nautobot/dcim/tests/integration/test_device_bulk_operations.py +30 -0
  149. nautobot/dcim/tests/integration/test_location_bulk_operations.py +43 -0
  150. nautobot/dcim/tests/test_api.py +16 -5
  151. nautobot/dcim/tests/test_filters.py +33 -0
  152. nautobot/dcim/tests/test_forms.py +51 -2
  153. nautobot/dcim/tests/test_graphql.py +52 -0
  154. nautobot/dcim/tests/test_jobs.py +118 -0
  155. nautobot/dcim/tests/test_models.py +52 -9
  156. nautobot/dcim/tests/test_views.py +30 -84
  157. nautobot/dcim/views.py +13 -28
  158. nautobot/extras/api/customfields.py +2 -2
  159. nautobot/extras/api/serializers.py +123 -85
  160. nautobot/extras/api/views.py +33 -30
  161. nautobot/extras/constants.py +3 -0
  162. nautobot/extras/datasources/git.py +125 -0
  163. nautobot/extras/filters/__init__.py +8 -6
  164. nautobot/extras/forms/base.py +2 -2
  165. nautobot/extras/forms/forms.py +139 -31
  166. nautobot/extras/forms/mixins.py +14 -6
  167. nautobot/extras/group_sync.py +3 -3
  168. nautobot/extras/health_checks.py +1 -2
  169. nautobot/extras/jobs.py +85 -18
  170. nautobot/extras/managers.py +3 -1
  171. nautobot/extras/migrations/0018_joblog_data_migration.py +7 -9
  172. nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +22 -0
  173. nautobot/extras/migrations/0121_alter_team_contacts.py +17 -0
  174. nautobot/extras/migrations/0122_add_graphqlquery_owner_content_type.py +34 -0
  175. nautobot/extras/models/__init__.py +1 -1
  176. nautobot/extras/models/contacts.py +1 -1
  177. nautobot/extras/models/customfields.py +41 -23
  178. nautobot/extras/models/datasources.py +85 -0
  179. nautobot/extras/models/groups.py +11 -9
  180. nautobot/extras/models/jobs.py +23 -4
  181. nautobot/extras/models/models.py +17 -2
  182. nautobot/extras/models/relationships.py +17 -5
  183. nautobot/extras/plugins/__init__.py +13 -2
  184. nautobot/extras/plugins/marketplace_manifest.yml +84 -79
  185. nautobot/extras/plugins/tables.py +16 -14
  186. nautobot/extras/plugins/views.py +65 -69
  187. nautobot/extras/registry.py +1 -1
  188. nautobot/extras/secrets/__init__.py +2 -2
  189. nautobot/extras/signals.py +15 -1
  190. nautobot/extras/tables.py +7 -5
  191. nautobot/extras/templates/extras/computedfield.html +1 -1
  192. nautobot/extras/templates/extras/configcontext.html +1 -1
  193. nautobot/extras/templates/extras/configcontextschema.html +1 -1
  194. nautobot/extras/templates/extras/customfield.html +1 -1
  195. nautobot/extras/templates/extras/customlink.html +1 -1
  196. nautobot/extras/templates/extras/dynamicgroup.html +2 -10
  197. nautobot/extras/templates/extras/exporttemplate.html +1 -1
  198. nautobot/extras/templates/extras/gitrepository.html +1 -1
  199. nautobot/extras/templates/extras/graphqlquery.html +1 -1
  200. nautobot/extras/templates/extras/job_detail.html +17 -1
  201. nautobot/extras/templates/extras/job_edit.html +1 -0
  202. nautobot/extras/templates/extras/jobbutton_retrieve.html +1 -1
  203. nautobot/extras/templates/extras/jobhook.html +1 -1
  204. nautobot/extras/templates/extras/jobqueue_retrieve.html +1 -9
  205. nautobot/extras/templates/extras/jobresult.html +1 -1
  206. nautobot/extras/templates/extras/marketplace.html +29 -11
  207. nautobot/extras/templates/extras/objectchange.html +1 -1
  208. nautobot/extras/templates/extras/plugin_detail.html +33 -16
  209. nautobot/extras/templates/extras/plugins_tiles.html +21 -10
  210. nautobot/extras/templates/extras/relationship.html +1 -63
  211. nautobot/extras/templates/extras/role_retrieve.html +1 -1
  212. nautobot/extras/templates/extras/scheduledjob.html +1 -1
  213. nautobot/extras/templates/extras/secret.html +1 -1
  214. nautobot/extras/templates/extras/secretsgroup.html +1 -1
  215. nautobot/extras/templates/extras/status.html +1 -1
  216. nautobot/extras/templates/extras/tag.html +1 -1
  217. nautobot/extras/templates/extras/webhook.html +1 -1
  218. nautobot/extras/templatetags/job_buttons.py +4 -4
  219. nautobot/extras/test_jobs/api_test_job.py +1 -1
  220. nautobot/extras/test_jobs/atomic_transaction.py +2 -2
  221. nautobot/extras/test_jobs/dry_run.py +1 -1
  222. nautobot/extras/test_jobs/fail.py +5 -5
  223. nautobot/extras/test_jobs/file_output.py +1 -1
  224. nautobot/extras/test_jobs/file_upload_fail.py +1 -1
  225. nautobot/extras/test_jobs/file_upload_pass.py +1 -1
  226. nautobot/extras/test_jobs/ipaddress_vars.py +3 -1
  227. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
  228. nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
  229. nautobot/extras/test_jobs/log_redaction.py +1 -1
  230. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
  231. nautobot/extras/test_jobs/modify_db.py +1 -1
  232. nautobot/extras/test_jobs/object_var_optional.py +1 -1
  233. nautobot/extras/test_jobs/object_var_required.py +1 -1
  234. nautobot/extras/test_jobs/object_vars.py +1 -1
  235. nautobot/extras/test_jobs/pass.py +3 -3
  236. nautobot/extras/test_jobs/profiling.py +1 -1
  237. nautobot/extras/test_jobs/relative_import.py +3 -3
  238. nautobot/extras/test_jobs/singleton.py +16 -0
  239. nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
  240. nautobot/extras/test_jobs/task_queues.py +1 -1
  241. nautobot/extras/tests/git_data/01-valid-files/graphql_queries/device_interfaces.gql +8 -0
  242. nautobot/extras/tests/git_data/01-valid-files/graphql_queries/device_names.gql +5 -0
  243. nautobot/extras/tests/git_data/02-invalid-files/graphql_queries/bad_device_names.gql +5 -0
  244. nautobot/extras/tests/git_helper.py +9 -1
  245. nautobot/extras/tests/integration/__init__.py +29 -16
  246. nautobot/extras/tests/integration/test_plugin_banner.py +0 -2
  247. nautobot/extras/tests/test_api.py +19 -13
  248. nautobot/extras/tests/test_customfields.py +50 -52
  249. nautobot/extras/tests/test_datasources.py +29 -1
  250. nautobot/extras/tests/test_dynamicgroups.py +1 -1
  251. nautobot/extras/tests/test_filters.py +6 -6
  252. nautobot/extras/tests/test_forms.py +33 -1
  253. nautobot/extras/tests/test_jobs.py +178 -32
  254. nautobot/extras/tests/test_models.py +299 -10
  255. nautobot/extras/tests/test_plugins.py +62 -9
  256. nautobot/extras/tests/test_relationships.py +120 -9
  257. nautobot/extras/tests/test_utils.py +22 -1
  258. nautobot/extras/tests/test_views.py +56 -194
  259. nautobot/extras/utils.py +20 -10
  260. nautobot/extras/views.py +85 -110
  261. nautobot/ipam/api/fields.py +3 -3
  262. nautobot/ipam/api/serializers.py +41 -33
  263. nautobot/ipam/api/views.py +68 -117
  264. nautobot/ipam/factory.py +1 -1
  265. nautobot/ipam/filters.py +3 -2
  266. nautobot/ipam/lookups.py +101 -62
  267. nautobot/ipam/models.py +74 -18
  268. nautobot/ipam/querysets.py +2 -2
  269. nautobot/ipam/tables.py +25 -9
  270. nautobot/ipam/templates/ipam/ipaddress.html +2 -10
  271. nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +1 -7
  272. nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -7
  273. nautobot/ipam/templates/ipam/prefix.html +2 -10
  274. nautobot/ipam/templates/ipam/prefix_edit.html +1 -7
  275. nautobot/ipam/templates/ipam/rir.html +1 -1
  276. nautobot/ipam/templates/ipam/routetarget.html +1 -1
  277. nautobot/ipam/templates/ipam/service.html +1 -1
  278. nautobot/ipam/templates/ipam/vlan.html +2 -10
  279. nautobot/ipam/templates/ipam/vlan_edit.html +1 -7
  280. nautobot/ipam/templates/ipam/vlangroup.html +1 -1
  281. nautobot/ipam/templates/ipam/vrf.html +1 -1
  282. nautobot/ipam/templates/ipam/vrf_edit.html +1 -7
  283. nautobot/ipam/tests/test_api.py +436 -3
  284. nautobot/ipam/tests/test_forms.py +49 -47
  285. nautobot/ipam/tests/test_migrations.py +30 -30
  286. nautobot/ipam/tests/test_models.py +119 -34
  287. nautobot/ipam/tests/test_querysets.py +63 -1
  288. nautobot/ipam/tests/test_utils.py +41 -2
  289. nautobot/ipam/tests/test_views.py +3 -0
  290. nautobot/ipam/utils/__init__.py +54 -17
  291. nautobot/ipam/views.py +61 -87
  292. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
  293. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
  294. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +40 -2
  295. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
  296. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
  297. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
  298. nautobot/project-static/docs/404.html +131 -14
  299. nautobot/project-static/docs/apps/index.html +131 -14
  300. nautobot/project-static/docs/apps/nautobot-apps.html +132 -16
  301. nautobot/project-static/docs/assets/_mkdocstrings.css +25 -1
  302. nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js → bundle.60a45f97.min.js} +2 -2
  303. nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js.map → bundle.60a45f97.min.js.map} +2 -2
  304. nautobot/project-static/docs/assets/javascripts/workers/{search.6ce7567c.min.js → search.f8cc74c7.min.js} +1 -1
  305. nautobot/project-static/docs/assets/javascripts/workers/{search.6ce7567c.min.js.map → search.f8cc74c7.min.js.map} +1 -1
  306. nautobot/project-static/docs/assets/stylesheets/{main.6f8fc17f.min.css → main.a40c8224.min.css} +1 -1
  307. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +147 -20
  308. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +144 -17
  309. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +459 -132
  310. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +175 -28
  311. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +180 -31
  312. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +138 -16
  313. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +137 -15
  314. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +164 -27
  315. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +187 -38
  316. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +193 -31
  317. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +216 -48
  318. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +324 -75
  319. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +666 -175
  320. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +194 -46
  321. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +538 -177
  322. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +578 -221
  323. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +145 -18
  324. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +156 -25
  325. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +492 -65
  326. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +705 -215
  327. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +943 -422
  328. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +144 -17
  329. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +619 -200
  330. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +474 -159
  331. nautobot/project-static/docs/development/apps/api/configuration-view.html +131 -14
  332. nautobot/project-static/docs/development/apps/api/database-backend-config.html +131 -14
  333. nautobot/project-static/docs/development/apps/api/models/django-admin.html +131 -14
  334. nautobot/project-static/docs/development/apps/api/models/global-search.html +131 -14
  335. nautobot/project-static/docs/development/apps/api/models/graphql.html +131 -14
  336. nautobot/project-static/docs/development/apps/api/models/index.html +131 -14
  337. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +131 -14
  338. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +131 -14
  339. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +131 -14
  340. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +131 -14
  341. nautobot/project-static/docs/development/apps/api/platform-features/index.html +131 -14
  342. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +131 -14
  343. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +131 -14
  344. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +131 -14
  345. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +131 -14
  346. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +153 -17
  347. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +131 -14
  348. nautobot/project-static/docs/development/apps/api/prometheus.html +131 -14
  349. nautobot/project-static/docs/development/apps/api/setup.html +131 -14
  350. nautobot/project-static/docs/development/apps/api/testing.html +131 -14
  351. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +131 -14
  352. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +131 -14
  353. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +131 -14
  354. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +131 -14
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +131 -14
  356. nautobot/project-static/docs/development/apps/api/views/base-template.html +131 -14
  357. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +131 -14
  358. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +131 -14
  359. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +131 -14
  360. nautobot/project-static/docs/development/apps/api/views/index.html +131 -14
  361. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +131 -14
  362. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +131 -14
  363. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +131 -14
  364. nautobot/project-static/docs/development/apps/api/views/notes.html +131 -14
  365. nautobot/project-static/docs/development/apps/api/views/rest-api.html +137 -16
  366. nautobot/project-static/docs/development/apps/api/views/urls.html +131 -14
  367. nautobot/project-static/docs/development/apps/index.html +131 -14
  368. nautobot/project-static/docs/development/apps/migration/code-updates.html +131 -14
  369. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +131 -14
  370. nautobot/project-static/docs/development/apps/migration/from-v1.html +131 -14
  371. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +131 -14
  372. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +131 -14
  373. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +131 -14
  374. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +131 -14
  375. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +135 -18
  376. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +131 -14
  377. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +297 -25
  378. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +131 -14
  379. nautobot/project-static/docs/development/apps/porting-from-netbox.html +131 -14
  380. nautobot/project-static/docs/development/core/application-registry.html +131 -14
  381. nautobot/project-static/docs/development/core/best-practices.html +131 -14
  382. nautobot/project-static/docs/development/core/bootstrap-ui.html +131 -14
  383. nautobot/project-static/docs/development/core/caching.html +131 -14
  384. nautobot/project-static/docs/development/core/controllers.html +131 -14
  385. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +158 -84
  386. nautobot/project-static/docs/development/core/generic-views.html +131 -14
  387. nautobot/project-static/docs/development/core/getting-started.html +334 -234
  388. nautobot/project-static/docs/development/core/homepage.html +134 -17
  389. nautobot/project-static/docs/development/core/index.html +131 -14
  390. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9829 -0
  391. nautobot/project-static/docs/development/core/model-checklist.html +141 -22
  392. nautobot/project-static/docs/development/core/model-features.html +131 -14
  393. nautobot/project-static/docs/development/core/natural-keys.html +131 -14
  394. nautobot/project-static/docs/development/core/navigation-menu.html +131 -14
  395. nautobot/project-static/docs/development/core/release-checklist.html +134 -17
  396. nautobot/project-static/docs/development/core/role-internals.html +131 -14
  397. nautobot/project-static/docs/development/core/settings.html +131 -14
  398. nautobot/project-static/docs/development/core/style-guide.html +134 -17
  399. nautobot/project-static/docs/development/core/templates.html +132 -15
  400. nautobot/project-static/docs/development/core/testing.html +131 -14
  401. nautobot/project-static/docs/development/core/ui-component-framework.html +454 -283
  402. nautobot/project-static/docs/development/core/user-preferences.html +131 -14
  403. nautobot/project-static/docs/development/index.html +131 -14
  404. nautobot/project-static/docs/development/jobs/index.html +301 -132
  405. nautobot/project-static/docs/development/jobs/migration/from-v1.html +131 -14
  406. nautobot/project-static/docs/index.html +139 -33
  407. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
  408. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
  409. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
  410. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
  411. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
  412. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
  413. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
  414. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
  415. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
  416. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
  417. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
  418. nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
  419. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
  420. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
  421. nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
  422. nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
  423. nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
  424. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
  425. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
  426. nautobot/project-static/docs/objects.inv +0 -0
  427. nautobot/project-static/docs/overview/application_stack.html +132 -17
  428. nautobot/project-static/docs/overview/design_philosophy.html +131 -14
  429. nautobot/project-static/docs/release-notes/index.html +137 -22
  430. nautobot/project-static/docs/release-notes/version-1.0.html +319 -203
  431. nautobot/project-static/docs/release-notes/version-1.1.html +316 -200
  432. nautobot/project-static/docs/release-notes/version-1.2.html +391 -275
  433. nautobot/project-static/docs/release-notes/version-1.3.html +417 -301
  434. nautobot/project-static/docs/release-notes/version-1.4.html +502 -387
  435. nautobot/project-static/docs/release-notes/version-1.5.html +690 -576
  436. nautobot/project-static/docs/release-notes/version-1.6.html +989 -457
  437. nautobot/project-static/docs/release-notes/version-2.0.html +613 -499
  438. nautobot/project-static/docs/release-notes/version-2.1.html +448 -334
  439. nautobot/project-static/docs/release-notes/version-2.2.html +441 -327
  440. nautobot/project-static/docs/release-notes/version-2.3.html +1171 -451
  441. nautobot/project-static/docs/release-notes/version-2.4.html +800 -111
  442. nautobot/project-static/docs/requirements.txt +2 -2
  443. nautobot/project-static/docs/search/search_index.json +1 -1
  444. nautobot/project-static/docs/sitemap.xml +303 -287
  445. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  446. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +131 -14
  447. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +131 -14
  448. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +133 -16
  449. nautobot/project-static/docs/user-guide/administration/configuration/index.html +131 -14
  450. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +131 -14
  451. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +195 -18
  452. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +131 -14
  453. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +134 -17
  454. nautobot/project-static/docs/user-guide/administration/guides/docker.html +131 -14
  455. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +131 -14
  456. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +131 -14
  457. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +131 -14
  458. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +131 -14
  459. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +131 -14
  460. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +133 -16
  461. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +131 -14
  462. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +131 -14
  463. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +131 -14
  464. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +151 -18
  465. nautobot/project-static/docs/user-guide/administration/installation/index.html +131 -14
  466. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +132 -15
  467. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +131 -14
  468. nautobot/project-static/docs/user-guide/administration/installation/services.html +131 -14
  469. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +131 -14
  470. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +131 -14
  471. nautobot/project-static/docs/user-guide/administration/security/index.html +9420 -0
  472. nautobot/project-static/docs/user-guide/administration/security/notices.html +9843 -0
  473. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +131 -14
  474. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +131 -14
  475. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +131 -14
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +131 -14
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +131 -14
  478. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +131 -14
  479. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +131 -14
  480. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +134 -18
  481. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +131 -14
  482. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +131 -14
  483. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +131 -14
  484. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +131 -14
  485. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +131 -14
  486. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +131 -14
  487. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +131 -14
  488. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +131 -14
  489. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +131 -14
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +131 -14
  491. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +131 -14
  492. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +131 -14
  493. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +131 -14
  494. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +131 -14
  495. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +131 -14
  496. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +131 -14
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +131 -14
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +131 -14
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +131 -14
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +131 -14
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +131 -14
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +131 -14
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +131 -14
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +131 -14
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +131 -14
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +131 -14
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +131 -14
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +131 -14
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +131 -14
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +131 -14
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +131 -14
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +131 -14
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +131 -14
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +131 -14
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +131 -14
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +131 -14
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +131 -14
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +131 -14
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +131 -14
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +131 -14
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +131 -14
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +131 -14
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +131 -14
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +131 -14
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +131 -14
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +131 -14
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +131 -14
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +131 -14
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +131 -14
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +131 -14
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +131 -14
  532. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +131 -14
  533. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +131 -14
  534. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +131 -14
  535. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +131 -14
  536. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +131 -14
  537. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +131 -14
  538. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +135 -22
  539. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +131 -14
  540. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +131 -14
  541. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +131 -14
  542. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +131 -14
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +131 -14
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +131 -14
  545. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +131 -14
  546. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +131 -14
  547. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +131 -14
  548. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +131 -14
  549. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +131 -14
  550. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +131 -14
  551. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +134 -17
  552. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +131 -14
  553. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +131 -14
  554. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +131 -14
  555. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +131 -14
  556. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +131 -14
  557. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +131 -14
  558. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +131 -14
  559. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +131 -14
  560. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +131 -14
  561. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +131 -14
  562. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +131 -14
  563. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +131 -14
  564. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +131 -14
  565. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +131 -14
  566. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +131 -14
  567. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +134 -17
  568. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +131 -14
  569. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +131 -14
  570. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +131 -14
  571. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +131 -14
  572. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +131 -14
  573. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +131 -14
  574. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +236 -34
  575. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +131 -14
  576. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
  577. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
  578. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
  579. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
  580. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
  581. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
  582. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
  583. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
  584. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
  585. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
  586. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
  587. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
  588. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
  589. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +131 -14
  590. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +131 -14
  591. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +134 -17
  592. nautobot/project-static/docs/{development/core/local-k8s.html → user-guide/feature-guides/wireless-networks-and-controllers.html} +632 -566
  593. nautobot/project-static/docs/user-guide/index.html +131 -14
  594. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +131 -14
  595. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +135 -18
  596. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +131 -14
  597. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +131 -14
  598. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +131 -14
  599. nautobot/project-static/docs/user-guide/platform-functionality/events.html +131 -14
  600. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +131 -14
  601. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +131 -14
  602. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +451 -16
  603. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +131 -14
  604. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +131 -14
  605. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +131 -14
  606. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +135 -17
  607. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +131 -14
  608. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +134 -17
  609. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +131 -14
  610. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +131 -14
  611. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9797 -0
  612. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +131 -14
  613. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +131 -14
  614. nautobot/project-static/docs/user-guide/platform-functionality/note.html +131 -14
  615. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +131 -14
  616. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +132 -15
  617. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +131 -14
  618. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +131 -14
  619. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +179 -35
  620. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +159 -15
  621. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +131 -14
  622. nautobot/project-static/docs/user-guide/platform-functionality/role.html +131 -14
  623. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +131 -14
  624. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +131 -14
  625. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +131 -14
  626. nautobot/project-static/docs/user-guide/platform-functionality/status.html +131 -14
  627. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +131 -14
  628. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +131 -14
  629. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +131 -14
  630. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +131 -14
  631. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +131 -14
  632. nautobot/project-static/js/forms.js +1 -1
  633. nautobot/tenancy/api/views.py +9 -13
  634. nautobot/tenancy/templates/tenancy/tenant.html +1 -2
  635. nautobot/tenancy/templates/tenancy/tenantgroup.html +1 -1
  636. nautobot/tenancy/views.py +4 -2
  637. nautobot/users/admin.py +1 -1
  638. nautobot/users/api/serializers.py +5 -4
  639. nautobot/users/api/views.py +3 -3
  640. nautobot/virtualization/api/serializers.py +4 -4
  641. nautobot/virtualization/api/views.py +5 -24
  642. nautobot/virtualization/filters.py +20 -3
  643. nautobot/virtualization/models.py +1 -1
  644. nautobot/virtualization/tables.py +2 -2
  645. nautobot/virtualization/templates/virtualization/cluster.html +1 -1
  646. nautobot/virtualization/templates/virtualization/cluster_edit.html +1 -7
  647. nautobot/virtualization/templates/virtualization/clustergroup.html +1 -1
  648. nautobot/virtualization/templates/virtualization/clustertype.html +1 -1
  649. nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -10
  650. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -8
  651. nautobot/virtualization/templates/virtualization/vminterface.html +1 -1
  652. nautobot/virtualization/tests/test_filters.py +17 -0
  653. nautobot/wireless/filters.py +2 -2
  654. nautobot/wireless/forms.py +1 -1
  655. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +1 -9
  656. nautobot/wireless/tests/integration/__init__.py +0 -0
  657. nautobot/wireless/tests/integration/test_radio_profile.py +42 -0
  658. nautobot/wireless/tests/test_filters.py +29 -1
  659. nautobot/wireless/tests/test_views.py +22 -1
  660. nautobot/wireless/views.py +0 -10
  661. {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/METADATA +9 -9
  662. {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/RECORD +667 -610
  663. {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/WHEEL +1 -1
  664. nautobot/core/fixtures/user-data.json +0 -59
  665. /nautobot/project-static/docs/assets/stylesheets/{main.6f8fc17f.min.css.map → main.a40c8224.min.css.map} +0 -0
  666. {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/LICENSE.txt +0 -0
  667. {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/NOTICE +0 -0
  668. {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.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.46">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.6f8fc17f.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.a40c8224.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1"/></svg>');}</style>
41
+ <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1"/></svg>');}</style>
42
42
 
43
43
 
44
44
 
@@ -217,7 +217,7 @@
217
217
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
218
218
  <div class="md-source__icon md-icon">
219
219
 
220
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
220
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
221
221
  </div>
222
222
  <div class="md-source__repository">
223
223
  GitHub
@@ -377,7 +377,7 @@
377
377
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
378
378
  <div class="md-source__icon md-icon">
379
379
 
380
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
380
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
381
381
  </div>
382
382
  <div class="md-source__repository">
383
383
  GitHub
@@ -1697,6 +1697,81 @@
1697
1697
 
1698
1698
 
1699
1699
 
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+ <li class="md-nav__item md-nav__item--nested">
1714
+
1715
+
1716
+
1717
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_7" >
1718
+
1719
+
1720
+
1721
+ <div class="md-nav__link md-nav__container">
1722
+ <a href="../../../user-guide/administration/security/index.html" class="md-nav__link ">
1723
+
1724
+
1725
+ <span class="md-ellipsis">
1726
+ Security
1727
+ </span>
1728
+
1729
+
1730
+ </a>
1731
+
1732
+
1733
+ <label class="md-nav__link " for="__nav_2_1_7" id="__nav_2_1_7_label" tabindex="0">
1734
+ <span class="md-nav__icon md-icon"></span>
1735
+ </label>
1736
+
1737
+ </div>
1738
+
1739
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_1_7_label" aria-expanded="false">
1740
+ <label class="md-nav__title" for="__nav_2_1_7">
1741
+ <span class="md-nav__icon md-icon"></span>
1742
+ Security
1743
+ </label>
1744
+ <ul class="md-nav__list" data-md-scrollfix>
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+ <li class="md-nav__item">
1753
+ <a href="../../../user-guide/administration/security/notices.html" class="md-nav__link">
1754
+
1755
+
1756
+ <span class="md-ellipsis">
1757
+ Notices
1758
+ </span>
1759
+
1760
+
1761
+ </a>
1762
+ </li>
1763
+
1764
+
1765
+
1766
+
1767
+ </ul>
1768
+ </nav>
1769
+
1770
+ </li>
1771
+
1772
+
1773
+
1774
+
1700
1775
  </ul>
1701
1776
  </nav>
1702
1777
 
@@ -2112,6 +2187,27 @@
2112
2187
 
2113
2188
 
2114
2189
 
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+ <li class="md-nav__item">
2197
+ <a href="../../../user-guide/feature-guides/wireless-networks-and-controllers.html" class="md-nav__link">
2198
+
2199
+
2200
+ <span class="md-ellipsis">
2201
+ Wireless Networks and Controllers
2202
+ </span>
2203
+
2204
+
2205
+ </a>
2206
+ </li>
2207
+
2208
+
2209
+
2210
+
2115
2211
  </ul>
2116
2212
  </nav>
2117
2213
 
@@ -5131,6 +5227,27 @@
5131
5227
 
5132
5228
 
5133
5229
 
5230
+ <li class="md-nav__item">
5231
+ <a href="../../../user-guide/platform-functionality/jobs/kubernetes-job-support.html" class="md-nav__link">
5232
+
5233
+
5234
+ <span class="md-ellipsis">
5235
+ Kubernetes Job Support
5236
+ </span>
5237
+
5238
+
5239
+ </a>
5240
+ </li>
5241
+
5242
+
5243
+
5244
+
5245
+
5246
+
5247
+
5248
+
5249
+
5250
+
5134
5251
  <li class="md-nav__item">
5135
5252
  <a href="../../../user-guide/platform-functionality/jobs/jobbutton.html" class="md-nav__link">
5136
5253
 
@@ -7211,6 +7328,21 @@
7211
7328
  </span>
7212
7329
  </a>
7213
7330
 
7331
+ <nav class="md-nav" aria-label="BulkEditForm">
7332
+ <ul class="md-nav__list">
7333
+
7334
+ <li class="md-nav__item">
7335
+ <a href="#nautobot.apps.forms.BulkEditForm.post_save" class="md-nav__link">
7336
+ <span class="md-ellipsis">
7337
+ post_save
7338
+ </span>
7339
+ </a>
7340
+
7341
+ </li>
7342
+
7343
+ </ul>
7344
+ </nav>
7345
+
7214
7346
  </li>
7215
7347
 
7216
7348
  <li class="md-nav__item">
@@ -8977,11 +9109,11 @@
8977
9109
 
8978
9110
 
8979
9111
  <li class="md-nav__item">
8980
- <a href="../../../development/core/local-k8s.html" class="md-nav__link">
9112
+ <a href="../../../development/core/minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
8981
9113
 
8982
9114
 
8983
9115
  <span class="md-ellipsis">
8984
- Local Kubernetes Cluster
9116
+ Minikube Dev Environment for K8s Jobs
8985
9117
  </span>
8986
9118
 
8987
9119
 
@@ -9946,6 +10078,21 @@
9946
10078
  </span>
9947
10079
  </a>
9948
10080
 
10081
+ <nav class="md-nav" aria-label="BulkEditForm">
10082
+ <ul class="md-nav__list">
10083
+
10084
+ <li class="md-nav__item">
10085
+ <a href="#nautobot.apps.forms.BulkEditForm.post_save" class="md-nav__link">
10086
+ <span class="md-ellipsis">
10087
+ post_save
10088
+ </span>
10089
+ </a>
10090
+
10091
+ </li>
10092
+
10093
+ </ul>
10094
+ </nav>
10095
+
9949
10096
  </li>
9950
10097
 
9951
10098
  <li class="md-nav__item">
@@ -10800,7 +10947,12 @@
10800
10947
 
10801
10948
  <div class="doc doc-contents first">
10802
10949
 
10803
- <p>Forms and fields for apps to use.</p>
10950
+ <p>Forms and fields for apps to use.</p>
10951
+
10952
+
10953
+
10954
+
10955
+
10804
10956
 
10805
10957
 
10806
10958
 
@@ -10826,10 +10978,10 @@
10826
10978
 
10827
10979
  <div class="doc doc-contents ">
10828
10980
  <p class="doc doc-class-bases">
10829
- Bases: <code><autoref identifier="nautobot.core.forms.widgets.SelectWithDisabled" optional hover>SelectWithDisabled</autoref></code></p>
10981
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.widgets.SelectWithDisabled" href="#nautobot.apps.forms.SelectWithDisabled">SelectWithDisabled</a></code></p>
10830
10982
 
10831
10983
 
10832
- <p>A select widget populated via an API call</p>
10984
+ <p>A select widget populated via an API call</p>
10833
10985
 
10834
10986
 
10835
10987
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -10844,9 +10996,11 @@
10844
10996
  </thead>
10845
10997
  <tbody>
10846
10998
  <tr class="doc-section-item">
10847
- <td><code>api_url</code></td>
10848
10999
  <td>
10849
- <code><autoref identifier="str" optional>str</autoref></code>
11000
+ <code>api_url</code>
11001
+ </td>
11002
+ <td>
11003
+ <code>str</code>
10850
11004
  </td>
10851
11005
  <td>
10852
11006
  <div class="doc-md-description">
@@ -10858,9 +11012,11 @@
10858
11012
  </td>
10859
11013
  </tr>
10860
11014
  <tr class="doc-section-item">
10861
- <td><code>api_version</code></td>
10862
11015
  <td>
10863
- <code><autoref identifier="str" optional>str</autoref></code>
11016
+ <code>api_version</code>
11017
+ </td>
11018
+ <td>
11019
+ <code>str</code>
10864
11020
  </td>
10865
11021
  <td>
10866
11022
  <div class="doc-md-description">
@@ -10877,6 +11033,11 @@
10877
11033
 
10878
11034
 
10879
11035
 
11036
+
11037
+
11038
+
11039
+
11040
+
10880
11041
  <div class="doc doc-children">
10881
11042
 
10882
11043
 
@@ -10898,7 +11059,7 @@
10898
11059
 
10899
11060
  <div class="doc doc-contents ">
10900
11061
 
10901
- <p>Add details for an additional query param in the form of a data-* JSON-encoded list attribute.</p>
11062
+ <p>Add details for an additional query param in the form of a data-* JSON-encoded list attribute.</p>
10902
11063
  <p>:param name: The name of the query param
10903
11064
  :param value: The value of the query param</p>
10904
11065
 
@@ -10927,10 +11088,15 @@
10927
11088
 
10928
11089
  <div class="doc doc-contents ">
10929
11090
  <p class="doc doc-class-bases">
10930
- Bases: <code><autoref identifier="django.forms.ModelForm" optional hover>ModelForm</autoref></code></p>
11091
+ Bases: <code><span title="django.forms.ModelForm">ModelForm</span></code></p>
11092
+
11093
+
11094
+ <p>ModelForm mixin for IPAddress based models.</p>
11095
+
11096
+
11097
+
10931
11098
 
10932
11099
 
10933
- <p>ModelForm mixin for IPAddress based models.</p>
10934
11100
 
10935
11101
 
10936
11102
 
@@ -10966,10 +11132,10 @@
10966
11132
 
10967
11133
  <div class="doc doc-contents ">
10968
11134
  <p class="doc doc-class-bases">
10969
- Bases: <code><autoref identifier="django.forms.BaseForm" optional hover>BaseForm</autoref></code></p>
11135
+ Bases: <code><span title="django.forms.BaseForm">BaseForm</span></code></p>
10970
11136
 
10971
11137
 
10972
- <p>Add the base Bootstrap CSS classes to form elements.</p>
11138
+ <p>Add the base Bootstrap CSS classes to form elements.</p>
10973
11139
  <p>Note that this only applies to form fields that are:</p>
10974
11140
  <ol>
10975
11141
  <li>statically defined on the form class at declaration time, or</li>
@@ -10980,6 +11146,11 @@
10980
11146
 
10981
11147
 
10982
11148
 
11149
+
11150
+
11151
+
11152
+
11153
+
10983
11154
  <div class="doc doc-children">
10984
11155
 
10985
11156
 
@@ -11011,16 +11182,21 @@
11011
11182
 
11012
11183
  <div class="doc doc-contents ">
11013
11184
  <p class="doc doc-class-bases">
11014
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
11185
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
11015
11186
 
11016
11187
 
11017
- <p>Base form for editing multiple objects in bulk.</p>
11188
+ <p>Base form for editing multiple objects in bulk.</p>
11018
11189
  <p>Note that for models supporting custom fields and relationships, nautobot.extras.forms.NautobotBulkEditForm is
11019
11190
  a more powerful subclass and should be used instead of directly inheriting from this class.</p>
11020
11191
 
11021
11192
 
11022
11193
 
11023
11194
 
11195
+
11196
+
11197
+
11198
+
11199
+
11024
11200
  <div class="doc doc-children">
11025
11201
 
11026
11202
 
@@ -11031,6 +11207,23 @@ a more powerful subclass and should be used instead of directly inheriting from
11031
11207
 
11032
11208
 
11033
11209
 
11210
+ <div class="doc doc-object doc-function">
11211
+
11212
+
11213
+ <h3 id="nautobot.apps.forms.BulkEditForm.post_save" class="doc doc-heading">
11214
+ <code class="highlight language-python"><span class="n">post_save</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span></code>
11215
+
11216
+ <a href="#nautobot.apps.forms.BulkEditForm.post_save" class="headerlink" title="Permanent link">&para;</a></h3>
11217
+
11218
+
11219
+ <div class="doc doc-contents ">
11220
+
11221
+ <p>Post save action</p>
11222
+
11223
+ </div>
11224
+
11225
+ </div>
11226
+
11034
11227
 
11035
11228
 
11036
11229
  </div>
@@ -11052,10 +11245,15 @@ a more powerful subclass and should be used instead of directly inheriting from
11052
11245
 
11053
11246
  <div class="doc doc-contents ">
11054
11247
  <p class="doc doc-class-bases">
11055
- Bases: <code><autoref identifier="django.forms.NullBooleanSelect" optional hover>NullBooleanSelect</autoref></code></p>
11248
+ Bases: <code><span title="django.forms.NullBooleanSelect">NullBooleanSelect</span></code></p>
11249
+
11250
+
11251
+ <p>A Select widget for NullBooleanFields</p>
11252
+
11253
+
11254
+
11056
11255
 
11057
11256
 
11058
- <p>A Select widget for NullBooleanFields</p>
11059
11257
 
11060
11258
 
11061
11259
 
@@ -11091,10 +11289,15 @@ a more powerful subclass and should be used instead of directly inheriting from
11091
11289
 
11092
11290
  <div class="doc doc-contents ">
11093
11291
  <p class="doc doc-class-bases">
11094
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
11292
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
11293
+
11294
+
11295
+ <p>An extendable form to be used for renaming objects in bulk.</p>
11296
+
11297
+
11298
+
11095
11299
 
11096
11300
 
11097
- <p>An extendable form to be used for renaming objects in bulk.</p>
11098
11301
 
11099
11302
 
11100
11303
 
@@ -11130,15 +11333,20 @@ a more powerful subclass and should be used instead of directly inheriting from
11130
11333
 
11131
11334
  <div class="doc doc-contents ">
11132
11335
  <p class="doc doc-class-bases">
11133
- Bases: <code><autoref identifier="django.forms.ChoiceField" optional hover>ChoiceField</autoref></code></p>
11336
+ Bases: <code><span title="django.forms.ChoiceField">ChoiceField</span></code></p>
11134
11337
 
11135
11338
 
11136
- <p>Invert the provided set of choices to take the human-friendly label as input, and return the database value.</p>
11339
+ <p>Invert the provided set of choices to take the human-friendly label as input, and return the database value.</p>
11137
11340
  <p>Despite the name, this is no longer used in CSV imports since 2.0, but <em>is</em> used in JSON/YAML import of DeviceTypes.</p>
11138
11341
 
11139
11342
 
11140
11343
 
11141
11344
 
11345
+
11346
+
11347
+
11348
+
11349
+
11142
11350
  <div class="doc doc-children">
11143
11351
 
11144
11352
 
@@ -11170,15 +11378,20 @@ a more powerful subclass and should be used instead of directly inheriting from
11170
11378
 
11171
11379
  <div class="doc doc-contents ">
11172
11380
  <p class="doc doc-class-bases">
11173
- Bases: <code><autoref identifier="nautobot.core.forms.fields.CSVModelChoiceField" optional hover>CSVModelChoiceField</autoref></code></p>
11381
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.CSVModelChoiceField" href="#nautobot.apps.forms.CSVModelChoiceField">CSVModelChoiceField</a></code></p>
11174
11382
 
11175
11383
 
11176
- <p>Reference a ContentType in the form <code>{app_label}.{model}</code>.</p>
11384
+ <p>Reference a ContentType in the form <code>{app_label}.{model}</code>.</p>
11177
11385
  <p>Note: class name is misleading; this field is also used in numerous FilterSets where it has nothing to do with CSV.</p>
11178
11386
 
11179
11387
 
11180
11388
 
11181
11389
 
11390
+
11391
+
11392
+
11393
+
11394
+
11182
11395
  <div class="doc doc-children">
11183
11396
 
11184
11397
 
@@ -11200,7 +11413,7 @@ a more powerful subclass and should be used instead of directly inheriting from
11200
11413
 
11201
11414
  <div class="doc doc-contents ">
11202
11415
 
11203
- <p>Allow this field to support <code>{app_label}.{model}</code> style, null values, or PK-based lookups
11416
+ <p>Allow this field to support <code>{app_label}.{model}</code> style, null values, or PK-based lookups
11204
11417
  depending on how the field is used.</p>
11205
11418
 
11206
11419
  </div>
@@ -11228,10 +11441,10 @@ depending on how the field is used.</p>
11228
11441
 
11229
11442
  <div class="doc doc-contents ">
11230
11443
  <p class="doc doc-class-bases">
11231
- Bases: <code><autoref identifier="django.forms.CharField" optional hover>CharField</autoref></code></p>
11444
+ Bases: <code><span title="django.forms.CharField">CharField</span></code></p>
11232
11445
 
11233
11446
 
11234
- <p>A CharField (rendered as a Textarea) which expects CSV-formatted data.</p>
11447
+ <p>A CharField (rendered as a Textarea) which expects CSV-formatted data.</p>
11235
11448
  <p>Initial value is a list of headers corresponding to the required fields for the given serializer class.</p>
11236
11449
  <p>This no longer actually does any CSV parsing or validation on its own,
11237
11450
  as that is now handled by the NautobotCSVParser class and the REST API serializers.</p>
@@ -11249,9 +11462,11 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
11249
11462
  </thead>
11250
11463
  <tbody>
11251
11464
  <tr class="doc-section-item">
11252
- <td><code>required_field_names</code></td>
11253
11465
  <td>
11254
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="str" optional>str</autoref>]</code>
11466
+ <code>required_field_names</code>
11467
+ </td>
11468
+ <td>
11469
+ <code>list[str]</code>
11255
11470
  </td>
11256
11471
  <td>
11257
11472
  <div class="doc-md-description">
@@ -11268,6 +11483,11 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
11268
11483
 
11269
11484
 
11270
11485
 
11486
+
11487
+
11488
+
11489
+
11490
+
11271
11491
  <div class="doc doc-children">
11272
11492
 
11273
11493
 
@@ -11299,16 +11519,21 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
11299
11519
 
11300
11520
  <div class="doc doc-contents ">
11301
11521
  <p class="doc doc-class-bases">
11302
- Bases: <code><autoref identifier="django.forms.FileField" optional hover>FileField</autoref></code></p>
11522
+ Bases: <code><span title="django.forms.FileField">FileField</span></code></p>
11303
11523
 
11304
11524
 
11305
- <p>A FileField (rendered as a ClearableFileInput) which expects a file containing CSV-formatted data.</p>
11525
+ <p>A FileField (rendered as a ClearableFileInput) which expects a file containing CSV-formatted data.</p>
11306
11526
  <p>This no longer actually does any CSV parsing or validation on its own,
11307
11527
  as that is now handled by the NautobotCSVParser class and the REST API serializers.</p>
11308
11528
 
11309
11529
 
11310
11530
 
11311
11531
 
11532
+
11533
+
11534
+
11535
+
11536
+
11312
11537
  <div class="doc doc-children">
11313
11538
 
11314
11539
 
@@ -11323,14 +11548,14 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
11323
11548
 
11324
11549
 
11325
11550
  <h3 id="nautobot.apps.forms.CSVFileField.to_python" class="doc doc-heading">
11326
- <code class="highlight language-python"><span class="n">to_python</span><span class="p">(</span><span class="n">file</span><span class="p">)</span></code>
11551
+ <code class="highlight language-python"><span class="n">to_python</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
11327
11552
 
11328
11553
  <a href="#nautobot.apps.forms.CSVFileField.to_python" class="headerlink" title="Permanent link">&para;</a></h3>
11329
11554
 
11330
11555
 
11331
11556
  <div class="doc doc-contents ">
11332
11557
 
11333
- <p>For parity with CSVDataField, this returns the CSV text rather than an UploadedFile object.</p>
11558
+ <p>For parity with CSVDataField, this returns the CSV text rather than an UploadedFile object.</p>
11334
11559
 
11335
11560
  </div>
11336
11561
 
@@ -11357,16 +11582,21 @@ as that is now handled by the NautobotCSVParser class and the REST API serialize
11357
11582
 
11358
11583
  <div class="doc doc-contents ">
11359
11584
  <p class="doc doc-class-bases">
11360
- Bases: <code><autoref identifier="django.forms.ModelChoiceField" optional hover>ModelChoiceField</autoref></code></p>
11585
+ Bases: <code><span title="django.forms.ModelChoiceField">ModelChoiceField</span></code></p>
11361
11586
 
11362
11587
 
11363
- <p>Provides additional validation for model choices entered as CSV data.</p>
11588
+ <p>Provides additional validation for model choices entered as CSV data.</p>
11364
11589
  <p>Note: class name is misleading; the subclass CSVContentTypeField (below) is also used in FilterSets, where it has
11365
11590
  nothing to do with CSV data.</p>
11366
11591
 
11367
11592
 
11368
11593
 
11369
11594
 
11595
+
11596
+
11597
+
11598
+
11599
+
11370
11600
  <div class="doc doc-children">
11371
11601
 
11372
11602
 
@@ -11398,16 +11628,21 @@ nothing to do with CSV data.</p>
11398
11628
 
11399
11629
  <div class="doc doc-contents ">
11400
11630
  <p class="doc doc-class-bases">
11401
- Bases: <code><autoref identifier="django.forms.ModelForm" optional hover>ModelForm</autoref></code></p>
11631
+ Bases: <code><span title="django.forms.ModelForm">ModelForm</span></code></p>
11402
11632
 
11403
11633
 
11404
- <p>ModelForm used for the import of objects.</p>
11634
+ <p>ModelForm used for the import of objects.</p>
11405
11635
  <p>Note: the name is misleading as since 2.0 this is no longer used for CSV imports; however it <em>is</em> still used for
11406
11636
  JSON/YAML imports of DeviceTypes and their component templates.</p>
11407
11637
 
11408
11638
 
11409
11639
 
11410
11640
 
11641
+
11642
+
11643
+
11644
+
11645
+
11411
11646
  <div class="doc doc-children">
11412
11647
 
11413
11648
 
@@ -11439,16 +11674,21 @@ JSON/YAML imports of DeviceTypes and their component templates.</p>
11439
11674
 
11440
11675
  <div class="doc doc-contents ">
11441
11676
  <p class="doc doc-class-bases">
11442
- Bases: <code><autoref identifier="nautobot.core.forms.fields.CSVChoiceField" optional hover>CSVChoiceField</autoref></code></p>
11677
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.CSVChoiceField" href="#nautobot.apps.forms.CSVChoiceField">CSVChoiceField</a></code></p>
11443
11678
 
11444
11679
 
11445
- <p>A version of CSVChoiceField that supports and emits a list of choice values.</p>
11680
+ <p>A version of CSVChoiceField that supports and emits a list of choice values.</p>
11446
11681
  <p>As with CSVChoiceField, the name is misleading, as this is no longer used for CSV imports, but is used for
11447
11682
  JSON/YAML import of DeviceTypes still.</p>
11448
11683
 
11449
11684
 
11450
11685
 
11451
11686
 
11687
+
11688
+
11689
+
11690
+
11691
+
11452
11692
  <div class="doc doc-children">
11453
11693
 
11454
11694
 
@@ -11470,7 +11710,7 @@ JSON/YAML import of DeviceTypes still.</p>
11470
11710
 
11471
11711
  <div class="doc doc-contents ">
11472
11712
 
11473
- <p>Return a list of strings.</p>
11713
+ <p>Return a list of strings.</p>
11474
11714
 
11475
11715
  </div>
11476
11716
 
@@ -11487,7 +11727,7 @@ JSON/YAML import of DeviceTypes still.</p>
11487
11727
 
11488
11728
  <div class="doc doc-contents ">
11489
11729
 
11490
- <p>Validate that each of the input values is in self.choices.</p>
11730
+ <p>Validate that each of the input values is in self.choices.</p>
11491
11731
 
11492
11732
  </div>
11493
11733
 
@@ -11514,16 +11754,21 @@ JSON/YAML import of DeviceTypes still.</p>
11514
11754
 
11515
11755
  <div class="doc doc-contents ">
11516
11756
  <p class="doc doc-class-bases">
11517
- Bases: <code><autoref identifier="nautobot.core.forms.fields.MultipleContentTypeField" optional hover>MultipleContentTypeField</autoref></code></p>
11757
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.MultipleContentTypeField" href="#nautobot.apps.forms.MultipleContentTypeField">MultipleContentTypeField</a></code></p>
11518
11758
 
11519
11759
 
11520
- <p>Reference a list of <code>ContentType</code> objects in the form `{app_label}.{model}'.</p>
11760
+ <p>Reference a list of <code>ContentType</code> objects in the form `{app_label}.{model}'.</p>
11521
11761
  <p>Note: This is unused in Nautobot core at this time, but some apps (data-validation-engine) use this for non-CSV
11522
11762
  purposes, similar to CSVContentTypeField above.</p>
11523
11763
 
11524
11764
 
11525
11765
 
11526
11766
 
11767
+
11768
+
11769
+
11770
+
11771
+
11527
11772
  <div class="doc doc-children">
11528
11773
 
11529
11774
 
@@ -11545,7 +11790,7 @@ purposes, similar to CSVContentTypeField above.</p>
11545
11790
 
11546
11791
  <div class="doc doc-contents ">
11547
11792
 
11548
- <p>Parse a comma-separated string of model names into a list of PKs.</p>
11793
+ <p>Parse a comma-separated string of model names into a list of PKs.</p>
11549
11794
 
11550
11795
  </div>
11551
11796
 
@@ -11572,10 +11817,15 @@ purposes, similar to CSVContentTypeField above.</p>
11572
11817
 
11573
11818
  <div class="doc doc-contents ">
11574
11819
  <p class="doc doc-class-bases">
11575
- Bases: <code><autoref identifier="django.forms.Select" optional hover>Select</autoref></code></p>
11820
+ Bases: <code><span title="django.forms.Select">Select</span></code></p>
11821
+
11822
+
11823
+ <p>Extends the built-in Select widget to colorize each <option>.</p>
11824
+
11825
+
11826
+
11576
11827
 
11577
11828
 
11578
- <p>Extends the built-in Select widget to colorize each <option>.</p>
11579
11829
 
11580
11830
 
11581
11831
 
@@ -11611,10 +11861,15 @@ purposes, similar to CSVContentTypeField above.</p>
11611
11861
 
11612
11862
  <div class="doc doc-contents ">
11613
11863
  <p class="doc doc-class-bases">
11614
- Bases: <code><autoref identifier="django.forms.CharField" optional hover>CharField</autoref></code></p>
11864
+ Bases: <code><span title="django.forms.CharField">CharField</span></code></p>
11865
+
11866
+
11867
+ <p>A textarea with support for Markdown rendering. Exists mostly just to add a standard help_text.</p>
11868
+
11869
+
11870
+
11615
11871
 
11616
11872
 
11617
- <p>A textarea with support for Markdown rendering. Exists mostly just to add a standard help_text.</p>
11618
11873
 
11619
11874
 
11620
11875
 
@@ -11650,10 +11905,15 @@ purposes, similar to CSVContentTypeField above.</p>
11650
11905
 
11651
11906
  <div class="doc doc-contents ">
11652
11907
  <p class="doc doc-class-bases">
11653
- Bases: <code><autoref identifier="nautobot.core.forms.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="nautobot.core.forms.forms.ReturnURLForm" optional hover>ReturnURLForm</autoref></code></p>
11908
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.forms.ReturnURLForm" href="#nautobot.apps.forms.ReturnURLForm">ReturnURLForm</a></code></p>
11909
+
11910
+
11911
+ <p>A generic confirmation form. The form is not valid unless the confirm field is checked.</p>
11912
+
11913
+
11914
+
11654
11915
 
11655
11916
 
11656
- <p>A generic confirmation form. The form is not valid unless the confirm field is checked.</p>
11657
11917
 
11658
11918
 
11659
11919
 
@@ -11689,10 +11949,15 @@ purposes, similar to CSVContentTypeField above.</p>
11689
11949
 
11690
11950
  <div class="doc doc-contents ">
11691
11951
  <p class="doc doc-class-bases">
11692
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
11952
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
11953
+
11954
+
11955
+ <p>Adds the <code>contacts</code> and <code>teams</code> form fields to a filter form.</p>
11956
+
11957
+
11958
+
11693
11959
 
11694
11960
 
11695
- <p>Adds the <code>contacts</code> and <code>teams</code> form fields to a filter form.</p>
11696
11961
 
11697
11962
 
11698
11963
 
@@ -11728,16 +11993,21 @@ purposes, similar to CSVContentTypeField above.</p>
11728
11993
 
11729
11994
  <div class="doc doc-contents ">
11730
11995
  <p class="doc doc-class-bases">
11731
- Bases: <code><autoref identifier="nautobot.core.forms.widgets.StaticSelect2" optional hover>StaticSelect2</autoref></code></p>
11996
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.widgets.StaticSelect2" href="#nautobot.apps.forms.StaticSelect2">StaticSelect2</a></code></p>
11732
11997
 
11733
11998
 
11734
- <p>Appends an <code>api-value</code> attribute equal to the slugified model name for each ContentType. For example:
11999
+ <p>Appends an <code>api-value</code> attribute equal to the slugified model name for each ContentType. For example:
11735
12000
  <option value="37" api-value="console-server-port">console server port</option>
11736
12001
  This attribute can be used to reference the relevant API endpoint for a particular ContentType.</p>
11737
12002
 
11738
12003
 
11739
12004
 
11740
12005
 
12006
+
12007
+
12008
+
12009
+
12010
+
11741
12011
  <div class="doc doc-children">
11742
12012
 
11743
12013
 
@@ -11769,10 +12039,10 @@ This attribute can be used to reference the relevant API endpoint for a particul
11769
12039
 
11770
12040
  <div class="doc doc-contents ">
11771
12041
  <p class="doc doc-class-bases">
11772
- Bases: <code><autoref identifier="nautobot.core.forms.CSVModelForm" optional hover>CSVModelForm</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.CustomFieldModelFormMixin" optional hover>CustomFieldModelFormMixin</autoref></code></p>
12042
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.CSVModelForm" href="#nautobot.apps.forms.CSVModelForm">CSVModelForm</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.CustomFieldModelFormMixin" href="#nautobot.apps.forms.CustomFieldModelFormMixin">CustomFieldModelFormMixin</a></code></p>
11773
12043
 
11774
12044
 
11775
- <p>Base class for CSV/JSON/YAML import of models that support custom fields.</p>
12045
+ <p>Base class for CSV/JSON/YAML import of models that support custom fields.</p>
11776
12046
  <p>TODO: The class name is a misnomer; as of 2.0 this class is <strong>not</strong> used for any CSV imports,
11777
12047
  as that's now handled by the REST API. However it is still used when importing component-templates as
11778
12048
  part of a JSON/YAML DeviceType import.</p>
@@ -11780,6 +12050,11 @@ part of a JSON/YAML DeviceType import.</p>
11780
12050
 
11781
12051
 
11782
12052
 
12053
+
12054
+
12055
+
12056
+
12057
+
11783
12058
  <div class="doc doc-children">
11784
12059
 
11785
12060
 
@@ -11811,7 +12086,12 @@ part of a JSON/YAML DeviceType import.</p>
11811
12086
 
11812
12087
  <div class="doc doc-contents ">
11813
12088
  <p class="doc doc-class-bases">
11814
- Bases: <code><autoref identifier="django.forms.ModelForm" optional hover>ModelForm</autoref></code></p>
12089
+ Bases: <code><span title="django.forms.ModelForm">ModelForm</span></code></p>
12090
+
12091
+
12092
+
12093
+
12094
+
11815
12095
 
11816
12096
 
11817
12097
 
@@ -11848,10 +12128,15 @@ part of a JSON/YAML DeviceType import.</p>
11848
12128
 
11849
12129
  <div class="doc doc-contents ">
11850
12130
  <p class="doc doc-class-bases">
11851
- Bases: <code><autoref identifier="django.forms.TextInput" optional hover>TextInput</autoref></code></p>
12131
+ Bases: <code><span title="django.forms.TextInput">TextInput</span></code></p>
12132
+
12133
+
12134
+ <p>Date picker using Flatpickr.</p>
12135
+
12136
+
12137
+
11852
12138
 
11853
12139
 
11854
- <p>Date picker using Flatpickr.</p>
11855
12140
 
11856
12141
 
11857
12142
 
@@ -11887,10 +12172,15 @@ part of a JSON/YAML DeviceType import.</p>
11887
12172
 
11888
12173
  <div class="doc doc-contents ">
11889
12174
  <p class="doc doc-class-bases">
11890
- Bases: <code><autoref identifier="django.forms.TextInput" optional hover>TextInput</autoref></code></p>
12175
+ Bases: <code><span title="django.forms.TextInput">TextInput</span></code></p>
12176
+
12177
+
12178
+ <p>DateTime picker using Flatpickr.</p>
12179
+
12180
+
12181
+
11891
12182
 
11892
12183
 
11893
- <p>DateTime picker using Flatpickr.</p>
11894
12184
 
11895
12185
 
11896
12186
 
@@ -11926,10 +12216,15 @@ part of a JSON/YAML DeviceType import.</p>
11926
12216
 
11927
12217
  <div class="doc doc-contents ">
11928
12218
  <p class="doc doc-class-bases">
11929
- Bases: <code><autoref identifier="nautobot.core.forms.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
12219
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><span title="django.forms.Form">Form</span></code></p>
12220
+
12221
+
12222
+ <p>Form for dynamically inputting filter values for an object list.</p>
12223
+
12224
+
12225
+
11930
12226
 
11931
12227
 
11932
- <p>Form for dynamically inputting filter values for an object list.</p>
11933
12228
 
11934
12229
 
11935
12230
 
@@ -11965,10 +12260,15 @@ part of a JSON/YAML DeviceType import.</p>
11965
12260
 
11966
12261
  <div class="doc doc-contents ">
11967
12262
  <p class="doc doc-class-bases">
11968
- Bases: <code><autoref identifier="django.forms.ModelForm" optional hover>ModelForm</autoref></code></p>
12263
+ Bases: <code><span title="django.forms.ModelForm">ModelForm</span></code></p>
12264
+
12265
+
12266
+ <p>Mixin to add <code>dynamic_groups</code> field to model create/edit forms where applicable.</p>
12267
+
12268
+
12269
+
11969
12270
 
11970
12271
 
11971
- <p>Mixin to add <code>dynamic_groups</code> field to model create/edit forms where applicable.</p>
11972
12272
 
11973
12273
 
11974
12274
 
@@ -12004,15 +12304,20 @@ part of a JSON/YAML DeviceType import.</p>
12004
12304
 
12005
12305
  <div class="doc doc-contents ">
12006
12306
  <p class="doc doc-class-bases">
12007
- Bases: <code><autoref identifier="nautobot.core.forms.fields.DynamicModelChoiceMixin" optional hover>DynamicModelChoiceMixin</autoref></code>, <code><autoref identifier="django.forms.ModelChoiceField" optional hover>ModelChoiceField</autoref></code></p>
12307
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.DynamicModelChoiceMixin" href="#nautobot.apps.forms.DynamicModelChoiceMixin">DynamicModelChoiceMixin</a></code>, <code><span title="django.forms.ModelChoiceField">ModelChoiceField</span></code></p>
12008
12308
 
12009
12309
 
12010
- <p>Override get_bound_field() to avoid pre-populating field choices with a SQL query. The field will be
12310
+ <p>Override get_bound_field() to avoid pre-populating field choices with a SQL query. The field will be
12011
12311
  rendered only with choices set via bound data. Choices are populated on-demand via the APISelect widget.</p>
12012
12312
 
12013
12313
 
12014
12314
 
12015
12315
 
12316
+
12317
+
12318
+
12319
+
12320
+
12016
12321
  <div class="doc doc-children">
12017
12322
 
12018
12323
 
@@ -12034,7 +12339,7 @@ rendered only with choices set via bound data. Choices are populated on-demand v
12034
12339
 
12035
12340
  <div class="doc doc-contents ">
12036
12341
 
12037
- <p>When null option is enabled and "None" is sent as part of a form to be submitted, it is sent as the
12342
+ <p>When null option is enabled and "None" is sent as part of a form to be submitted, it is sent as the
12038
12343
  string 'null'. This will check for that condition and gracefully handle the conversion to a NoneType.</p>
12039
12344
 
12040
12345
  </div>
@@ -12063,7 +12368,7 @@ string 'null'. This will check for that condition and gracefully handle the con
12063
12368
  <div class="doc doc-contents ">
12064
12369
 
12065
12370
 
12066
- <p>:param display_field: The name of the attribute of an API response object to display in the selection list
12371
+ <p>:param display_field: The name of the attribute of an API response object to display in the selection list
12067
12372
  :param query_params: A dictionary of additional key/value pairs to attach to the API request
12068
12373
  :param initial_params: A dictionary of child field references to use for selecting a parent field's initial value
12069
12374
  :param null_option: The string used to represent a null selection (if any)
@@ -12074,6 +12379,11 @@ string 'null'. This will check for that condition and gracefully handle the con
12074
12379
 
12075
12380
 
12076
12381
 
12382
+
12383
+
12384
+
12385
+
12386
+
12077
12387
  <div class="doc doc-children">
12078
12388
 
12079
12389
 
@@ -12095,7 +12405,7 @@ string 'null'. This will check for that condition and gracefully handle the con
12095
12405
 
12096
12406
  <div class="doc doc-contents ">
12097
12407
 
12098
- <p>Augment the behavior of forms.ModelChoiceField.prepare_value().</p>
12408
+ <p>Augment the behavior of forms.ModelChoiceField.prepare_value().</p>
12099
12409
  <p>Specifically, if <code>value</code> is a PK, but we have <code>to_field_name</code> set, we need to look up the model instance
12100
12410
  from the given PK, so that the base class will get the appropriate field value rather than just keeping the PK,
12101
12411
  because the rendered form field needs this in order to correctly prepopulate a default selection.</p>
@@ -12125,10 +12435,15 @@ because the rendered form field needs this in order to correctly prepopulate a d
12125
12435
 
12126
12436
  <div class="doc doc-contents ">
12127
12437
  <p class="doc doc-class-bases">
12128
- Bases: <code><autoref identifier="nautobot.core.forms.fields.DynamicModelChoiceMixin" optional hover>DynamicModelChoiceMixin</autoref></code>, <code><autoref identifier="django.forms.ModelMultipleChoiceField" optional hover>ModelMultipleChoiceField</autoref></code></p>
12438
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.DynamicModelChoiceMixin" href="#nautobot.apps.forms.DynamicModelChoiceMixin">DynamicModelChoiceMixin</a></code>, <code><span title="django.forms.ModelMultipleChoiceField">ModelMultipleChoiceField</span></code></p>
12439
+
12440
+
12441
+ <p>A multiple-choice version of DynamicModelChoiceField.</p>
12442
+
12443
+
12444
+
12129
12445
 
12130
12446
 
12131
- <p>A multiple-choice version of DynamicModelChoiceField.</p>
12132
12447
 
12133
12448
 
12134
12449
 
@@ -12164,15 +12479,20 @@ because the rendered form field needs this in order to correctly prepopulate a d
12164
12479
 
12165
12480
  <div class="doc doc-contents ">
12166
12481
  <p class="doc doc-class-bases">
12167
- Bases: <code><autoref identifier="django.forms.CharField" optional hover>CharField</autoref></code></p>
12482
+ Bases: <code><span title="django.forms.CharField">CharField</span></code></p>
12168
12483
 
12169
12484
 
12170
- <p>A field which allows for expansion of IP address ranges
12485
+ <p>A field which allows for expansion of IP address ranges
12171
12486
  Example: '192.0.2.[1-254]/24' =&gt; ['192.0.2.1/24', '192.0.2.2/24', '192.0.2.3/24' ... '192.0.2.254/24']</p>
12172
12487
 
12173
12488
 
12174
12489
 
12175
12490
 
12491
+
12492
+
12493
+
12494
+
12495
+
12176
12496
  <div class="doc doc-children">
12177
12497
 
12178
12498
 
@@ -12204,15 +12524,20 @@ because the rendered form field needs this in order to correctly prepopulate a d
12204
12524
 
12205
12525
  <div class="doc doc-contents ">
12206
12526
  <p class="doc doc-class-bases">
12207
- Bases: <code><autoref identifier="django.forms.CharField" optional hover>CharField</autoref></code></p>
12527
+ Bases: <code><span title="django.forms.CharField">CharField</span></code></p>
12208
12528
 
12209
12529
 
12210
- <p>A field which allows for numeric range expansion
12530
+ <p>A field which allows for numeric range expansion
12211
12531
  Example: 'Gi0/[1-3]' =&gt; ['Gi0/1', 'Gi0/2', 'Gi0/3']</p>
12212
12532
 
12213
12533
 
12214
12534
 
12215
12535
 
12536
+
12537
+
12538
+
12539
+
12540
+
12216
12541
  <div class="doc doc-children">
12217
12542
 
12218
12543
 
@@ -12244,10 +12569,15 @@ because the rendered form field needs this in order to correctly prepopulate a d
12244
12569
 
12245
12570
  <div class="doc doc-contents ">
12246
12571
  <p class="doc doc-class-bases">
12247
- Bases: <code><autoref identifier="nautobot.core.forms.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
12572
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><span title="django.forms.Form">Form</span></code></p>
12573
+
12574
+
12575
+ <p>Generic form for creating an object from JSON/YAML data</p>
12576
+
12577
+
12578
+
12248
12579
 
12249
12580
 
12250
- <p>Generic form for creating an object from JSON/YAML data</p>
12251
12581
 
12252
12582
 
12253
12583
 
@@ -12283,16 +12613,21 @@ because the rendered form field needs this in order to correctly prepopulate a d
12283
12613
 
12284
12614
  <div class="doc doc-contents ">
12285
12615
  <p class="doc doc-class-bases">
12286
- Bases: <code><autoref identifier="django.forms.JSONField" optional hover>JSONField</autoref></code></p>
12616
+ Bases: <code><span title="django.forms.JSONField">JSONField</span></code></p>
12287
12617
 
12288
12618
 
12289
- <p>A FormField counterpart to JSONArrayField.
12619
+ <p>A FormField counterpart to JSONArrayField.
12290
12620
  Replicates ArrayFormField's base field validation: Field values are validated as JSON Arrays,
12291
12621
  and each Array element is validated by <code>base_field</code> validators.</p>
12292
12622
 
12293
12623
 
12294
12624
 
12295
12625
 
12626
+
12627
+
12628
+
12629
+
12630
+
12296
12631
  <div class="doc doc-children">
12297
12632
 
12298
12633
 
@@ -12314,7 +12649,7 @@ and each Array element is validated by <code>base_field</code> validators.</p>
12314
12649
 
12315
12650
  <div class="doc doc-contents ">
12316
12651
 
12317
- <p>Validate <code>value</code> and return its "cleaned" value as an appropriate
12652
+ <p>Validate <code>value</code> and return its "cleaned" value as an appropriate
12318
12653
  Python object. Raise ValidationError for any errors.</p>
12319
12654
 
12320
12655
  </div>
@@ -12332,7 +12667,7 @@ Python object. Raise ValidationError for any errors.</p>
12332
12667
 
12333
12668
  <div class="doc doc-contents ">
12334
12669
 
12335
- <p>Return True if <code>data</code> differs from <code>initial</code>.</p>
12670
+ <p>Return True if <code>data</code> differs from <code>initial</code>.</p>
12336
12671
 
12337
12672
  </div>
12338
12673
 
@@ -12349,7 +12684,7 @@ Python object. Raise ValidationError for any errors.</p>
12349
12684
 
12350
12685
  <div class="doc doc-contents ">
12351
12686
 
12352
- <p>Return a string of this value.</p>
12687
+ <p>Return a string of this value.</p>
12353
12688
 
12354
12689
  </div>
12355
12690
 
@@ -12366,7 +12701,7 @@ Python object. Raise ValidationError for any errors.</p>
12366
12701
 
12367
12702
  <div class="doc doc-contents ">
12368
12703
 
12369
- <p>Runs all validators against <code>value</code> and raise ValidationError if necessary.
12704
+ <p>Runs all validators against <code>value</code> and raise ValidationError if necessary.
12370
12705
  Some validators can't be created at field initialization time.</p>
12371
12706
 
12372
12707
  </div>
@@ -12384,7 +12719,7 @@ Some validators can't be created at field initialization time.</p>
12384
12719
 
12385
12720
  <div class="doc doc-contents ">
12386
12721
 
12387
- <p>Convert <code>value</code> into JSON, raising django.core.exceptions.ValidationError
12722
+ <p>Convert <code>value</code> into JSON, raising django.core.exceptions.ValidationError
12388
12723
  if the data can't be converted. Return the converted value.</p>
12389
12724
 
12390
12725
  </div>
@@ -12402,7 +12737,7 @@ if the data can't be converted. Return the converted value.</p>
12402
12737
 
12403
12738
  <div class="doc doc-contents ">
12404
12739
 
12405
- <p>Check to see if the provided value is a valid choice.</p>
12740
+ <p>Check to see if the provided value is a valid choice.</p>
12406
12741
 
12407
12742
  </div>
12408
12743
 
@@ -12419,7 +12754,7 @@ if the data can't be converted. Return the converted value.</p>
12419
12754
 
12420
12755
  <div class="doc doc-contents ">
12421
12756
 
12422
- <p>Validate <code>value</code> and raise ValidationError if necessary.</p>
12757
+ <p>Validate <code>value</code> and raise ValidationError if necessary.</p>
12423
12758
 
12424
12759
  </div>
12425
12760
 
@@ -12446,10 +12781,15 @@ if the data can't be converted. Return the converted value.</p>
12446
12781
 
12447
12782
  <div class="doc doc-contents ">
12448
12783
  <p class="doc doc-class-bases">
12449
- Bases: <code><autoref identifier="django.forms.fields.JSONField" optional hover>JSONField</autoref></code></p>
12784
+ Bases: <code><span title="django.forms.fields.JSONField">JSONField</span></code></p>
12785
+
12786
+
12787
+ <p>Custom wrapper around Django's built-in JSONField to avoid presenting "null" as the default text.</p>
12788
+
12789
+
12790
+
12450
12791
 
12451
12792
 
12452
- <p>Custom wrapper around Django's built-in JSONField to avoid presenting "null" as the default text.</p>
12453
12793
 
12454
12794
 
12455
12795
 
@@ -12485,15 +12825,20 @@ if the data can't be converted. Return the converted value.</p>
12485
12825
 
12486
12826
  <div class="doc doc-contents ">
12487
12827
  <p class="doc doc-class-bases">
12488
- Bases: <code><autoref identifier="django.forms.URLField" optional hover>URLField</autoref></code></p>
12828
+ Bases: <code><span title="django.forms.URLField">URLField</span></code></p>
12489
12829
 
12490
12830
 
12491
- <p>Modifies Django's built-in URLField to remove the requirement for fully-qualified domain names
12831
+ <p>Modifies Django's built-in URLField to remove the requirement for fully-qualified domain names
12492
12832
  (e.g. http://myserver/ is valid)</p>
12493
12833
 
12494
12834
 
12495
12835
 
12496
12836
 
12837
+
12838
+
12839
+
12840
+
12841
+
12497
12842
  <div class="doc doc-children">
12498
12843
 
12499
12844
 
@@ -12525,15 +12870,20 @@ if the data can't be converted. Return the converted value.</p>
12525
12870
 
12526
12871
  <div class="doc doc-contents ">
12527
12872
  <p class="doc doc-class-bases">
12528
- Bases: <code><autoref identifier="nautobot.core.forms.fields.DynamicModelChoiceMixin" optional hover>DynamicModelChoiceMixin</autoref></code>, <code><autoref identifier="django_filters.fields.ModelMultipleChoiceField" optional hover>ModelMultipleChoiceField</autoref></code></p>
12873
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.DynamicModelChoiceMixin" href="#nautobot.apps.forms.DynamicModelChoiceMixin">DynamicModelChoiceMixin</a></code>, <code><span title="django_filters.fields.ModelMultipleChoiceField">ModelMultipleChoiceField</span></code></p>
12529
12874
 
12530
12875
 
12531
- <p>Filter field to support matching on the PK <em>or</em> <code>to_field_name</code> fields (defaulting to <code>slug</code> if not specified).</p>
12876
+ <p>Filter field to support matching on the PK <em>or</em> <code>to_field_name</code> fields (defaulting to <code>slug</code> if not specified).</p>
12532
12877
  <p>Raises ValidationError if none of the fields match the requested value.</p>
12533
12878
 
12534
12879
 
12535
12880
 
12536
12881
 
12882
+
12883
+
12884
+
12885
+
12886
+
12537
12887
  <div class="doc doc-children">
12538
12888
 
12539
12889
 
@@ -12565,15 +12915,20 @@ if the data can't be converted. Return the converted value.</p>
12565
12915
 
12566
12916
  <div class="doc doc-contents ">
12567
12917
  <p class="doc doc-class-bases">
12568
- Bases: <code><autoref identifier="django.forms.CharField" optional hover>CharField</autoref></code></p>
12918
+ Bases: <code><span title="django.forms.CharField">CharField</span></code></p>
12569
12919
 
12570
12920
 
12571
- <p>CharField that takes multiple user character inputs and render them as tags in the form field.
12921
+ <p>CharField that takes multiple user character inputs and render them as tags in the form field.
12572
12922
  Press enter to complete an input.</p>
12573
12923
 
12574
12924
 
12575
12925
 
12576
12926
 
12927
+
12928
+
12929
+
12930
+
12931
+
12577
12932
  <div class="doc doc-children">
12578
12933
 
12579
12934
 
@@ -12605,15 +12960,20 @@ Press enter to complete an input.</p>
12605
12960
 
12606
12961
  <div class="doc doc-contents ">
12607
12962
  <p class="doc doc-class-bases">
12608
- Bases: <code><autoref identifier="nautobot.core.forms.widgets.StaticSelect2Multiple" optional hover>StaticSelect2Multiple</autoref></code></p>
12963
+ Bases: <code><span title="nautobot.core.forms.widgets.StaticSelect2Multiple">StaticSelect2Multiple</span></code></p>
12609
12964
 
12610
12965
 
12611
- <p>Manual text input with tagging enabled.
12966
+ <p>Manual text input with tagging enabled.
12612
12967
  Press enter to create a new entry.</p>
12613
12968
 
12614
12969
 
12615
12970
 
12616
12971
 
12972
+
12973
+
12974
+
12975
+
12976
+
12617
12977
  <div class="doc doc-children">
12618
12978
 
12619
12979
 
@@ -12645,16 +13005,21 @@ Press enter to create a new entry.</p>
12645
13005
 
12646
13006
  <div class="doc doc-contents ">
12647
13007
  <p class="doc doc-class-bases">
12648
- Bases: <code><autoref identifier="django.forms.ModelMultipleChoiceField" optional hover>ModelMultipleChoiceField</autoref></code></p>
13008
+ Bases: <code><span title="django.forms.ModelMultipleChoiceField">ModelMultipleChoiceField</span></code></p>
12649
13009
 
12650
13010
 
12651
- <p>Field for choosing any number of <code>ContentType</code> objects.</p>
13011
+ <p>Field for choosing any number of <code>ContentType</code> objects.</p>
12652
13012
  <p>Optionally can restrict the available ContentTypes to those supporting a particular feature only.
12653
13013
  Optionally can pass the selection through as a list of <code>{app_label}.{model}</code> strings instead of PK values.</p>
12654
13014
 
12655
13015
 
12656
13016
 
12657
13017
 
13018
+
13019
+
13020
+
13021
+
13022
+
12658
13023
  <div class="doc doc-children">
12659
13024
 
12660
13025
 
@@ -12676,7 +13041,7 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
12676
13041
 
12677
13042
  <div class="doc doc-contents ">
12678
13043
 
12679
- <p>Construct a MultipleContentTypeField.</p>
13044
+ <p>Construct a MultipleContentTypeField.</p>
12680
13045
 
12681
13046
 
12682
13047
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -12691,9 +13056,11 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
12691
13056
  </thead>
12692
13057
  <tbody>
12693
13058
  <tr class="doc-section-item">
12694
- <td><code>feature</code></td>
12695
13059
  <td>
12696
- <code><autoref identifier="str" optional>str</autoref></code>
13060
+ <code>feature</code>
13061
+ </td>
13062
+ <td>
13063
+ <code>str</code>
12697
13064
  </td>
12698
13065
  <td>
12699
13066
  <div class="doc-md-description">
@@ -12705,9 +13072,11 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
12705
13072
  </td>
12706
13073
  </tr>
12707
13074
  <tr class="doc-section-item">
12708
- <td><code>choices_as_strings</code></td>
12709
13075
  <td>
12710
- <code><autoref identifier="bool" optional>bool</autoref></code>
13076
+ <code>choices_as_strings</code>
13077
+ </td>
13078
+ <td>
13079
+ <code>bool</code>
12711
13080
  </td>
12712
13081
  <td>
12713
13082
  <div class="doc-md-description">
@@ -12746,10 +13115,15 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
12746
13115
 
12747
13116
  <div class="doc doc-contents ">
12748
13117
  <p class="doc doc-class-bases">
12749
- Bases: <code><autoref identifier="nautobot.core.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.CustomFieldModelBulkEditFormMixin" optional hover>CustomFieldModelBulkEditFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.NoteModelBulkEditFormMixin" optional hover>NoteModelBulkEditFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.RelationshipModelBulkEditFormMixin" optional hover>RelationshipModelBulkEditFormMixin</autoref></code></p>
13118
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><span title="nautobot.extras.forms.mixins.CustomFieldModelBulkEditFormMixin">CustomFieldModelBulkEditFormMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.NoteModelBulkEditFormMixin" href="#nautobot.apps.forms.NoteModelBulkEditFormMixin">NoteModelBulkEditFormMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.RelationshipModelBulkEditFormMixin" href="#nautobot.apps.forms.RelationshipModelBulkEditFormMixin">RelationshipModelBulkEditFormMixin</a></code></p>
13119
+
13120
+
13121
+ <p>Base class for bulk-edit forms for models that support relationships, custom fields and notes.</p>
13122
+
13123
+
13124
+
12750
13125
 
12751
13126
 
12752
- <p>Base class for bulk-edit forms for models that support relationships, custom fields and notes.</p>
12753
13127
 
12754
13128
 
12755
13129
 
@@ -12785,16 +13159,21 @@ Optionally can pass the selection through as a list of <code>{app_label}.{model}
12785
13159
 
12786
13160
  <div class="doc doc-contents ">
12787
13161
  <p class="doc doc-class-bases">
12788
- Bases: <code><autoref identifier="nautobot.core.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.ContactTeamModelFilterFormMixin" optional hover>ContactTeamModelFilterFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.CustomFieldModelFilterFormMixin" optional hover>CustomFieldModelFilterFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.RelationshipModelFilterFormMixin" optional hover>RelationshipModelFilterFormMixin</autoref></code></p>
13162
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.ContactTeamModelFilterFormMixin" href="#nautobot.apps.forms.ContactTeamModelFilterFormMixin">ContactTeamModelFilterFormMixin</a></code>, <code><span title="nautobot.extras.forms.mixins.CustomFieldModelFilterFormMixin">CustomFieldModelFilterFormMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.RelationshipModelFilterFormMixin" href="#nautobot.apps.forms.RelationshipModelFilterFormMixin">RelationshipModelFilterFormMixin</a></code></p>
12789
13163
 
12790
13164
 
12791
- <p>This class exists to combine common functionality and is used to inherit from throughout the
13165
+ <p>This class exists to combine common functionality and is used to inherit from throughout the
12792
13166
  codebase where all of ContactTeamModelFilterFormMixin, CustomFieldModelFilterFormMixin, and
12793
13167
  RelationshipModelFilterFormMixin are needed.</p>
12794
13168
 
12795
13169
 
12796
13170
 
12797
13171
 
13172
+
13173
+
13174
+
13175
+
13176
+
12798
13177
  <div class="doc doc-children">
12799
13178
 
12800
13179
 
@@ -12826,16 +13205,21 @@ RelationshipModelFilterFormMixin are needed.</p>
12826
13205
 
12827
13206
  <div class="doc doc-contents ">
12828
13207
  <p class="doc doc-class-bases">
12829
- Bases: <code><autoref identifier="nautobot.core.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.CustomFieldModelFormMixin" optional hover>CustomFieldModelFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.DynamicGroupModelFormMixin" optional hover>DynamicGroupModelFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.NoteModelFormMixin" optional hover>NoteModelFormMixin</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.RelationshipModelFormMixin" optional hover>RelationshipModelFormMixin</autoref></code></p>
13208
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.CustomFieldModelFormMixin" href="#nautobot.apps.forms.CustomFieldModelFormMixin">CustomFieldModelFormMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.DynamicGroupModelFormMixin" href="#nautobot.apps.forms.DynamicGroupModelFormMixin">DynamicGroupModelFormMixin</a></code>, <code><span title="nautobot.extras.forms.mixins.NoteModelFormMixin">NoteModelFormMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.RelationshipModelFormMixin" href="#nautobot.apps.forms.RelationshipModelFormMixin">RelationshipModelFormMixin</a></code></p>
12830
13209
 
12831
13210
 
12832
- <p>This class exists to combine common functionality and is used to inherit from throughout the
13211
+ <p>This class exists to combine common functionality and is used to inherit from throughout the
12833
13212
  codebase where all of BootstrapMixin, CustomFieldModelFormMixin, RelationshipModelFormMixin, and
12834
13213
  NoteModelFormMixin are needed.</p>
12835
13214
 
12836
13215
 
12837
13216
 
12838
13217
 
13218
+
13219
+
13220
+
13221
+
13222
+
12839
13223
  <div class="doc doc-children">
12840
13224
 
12841
13225
 
@@ -12867,10 +13251,15 @@ NoteModelFormMixin are needed.</p>
12867
13251
 
12868
13252
  <div class="doc doc-contents ">
12869
13253
  <p class="doc doc-class-bases">
12870
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
13254
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
13255
+
13256
+
13257
+ <p>Base for the NoteModelFormMixin and NoteModelBulkEditFormMixin.</p>
13258
+
13259
+
13260
+
12871
13261
 
12872
13262
 
12873
- <p>Base for the NoteModelFormMixin and NoteModelBulkEditFormMixin.</p>
12874
13263
 
12875
13264
 
12876
13265
 
@@ -12906,10 +13295,15 @@ NoteModelFormMixin are needed.</p>
12906
13295
 
12907
13296
  <div class="doc doc-contents ">
12908
13297
  <p class="doc doc-class-bases">
12909
- Bases: <code><autoref identifier="nautobot.core.forms.BulkEditForm" optional hover>BulkEditForm</autoref></code>, <code><autoref identifier="nautobot.extras.forms.mixins.NoteFormBase" optional hover>NoteFormBase</autoref></code></p>
13298
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.BulkEditForm" href="#nautobot.apps.forms.BulkEditForm">BulkEditForm</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.forms.mixins.NoteFormBase" href="#nautobot.apps.forms.NoteFormBase">NoteFormBase</a></code></p>
13299
+
13300
+
13301
+ <p>Bulk-edit form mixin for models that support Notes.</p>
13302
+
13303
+
13304
+
12910
13305
 
12911
13306
 
12912
- <p>Bulk-edit form mixin for models that support Notes.</p>
12913
13307
 
12914
13308
 
12915
13309
 
@@ -12945,10 +13339,15 @@ NoteModelFormMixin are needed.</p>
12945
13339
 
12946
13340
  <div class="doc doc-contents ">
12947
13341
  <p class="doc doc-class-bases">
12948
- Bases: <code><autoref identifier="django.contrib.postgres.forms.SimpleArrayField" optional hover>SimpleArrayField</autoref></code></p>
13342
+ Bases: <code><span title="django.contrib.postgres.forms.SimpleArrayField">SimpleArrayField</span></code></p>
13343
+
13344
+
13345
+ <p>Basic array field that takes comma-separated or hyphenated ranges.</p>
13346
+
13347
+
13348
+
12949
13349
 
12950
13350
 
12951
- <p>Basic array field that takes comma-separated or hyphenated ranges.</p>
12952
13351
 
12953
13352
 
12954
13353
 
@@ -12984,10 +13383,15 @@ NoteModelFormMixin are needed.</p>
12984
13383
 
12985
13384
  <div class="doc doc-contents ">
12986
13385
  <p class="doc doc-class-bases">
12987
- Bases: <code><autoref identifier="django.forms.ModelForm" optional hover>ModelForm</autoref></code></p>
13386
+ Bases: <code><span title="django.forms.ModelForm">ModelForm</span></code></p>
13387
+
13388
+
13389
+ <p>ModelForm mixin for IPNetwork based models.</p>
13390
+
13391
+
13392
+
12988
13393
 
12989
13394
 
12990
- <p>ModelForm mixin for IPNetwork based models.</p>
12991
13395
 
12992
13396
 
12993
13397
 
@@ -13023,10 +13427,15 @@ NoteModelFormMixin are needed.</p>
13023
13427
 
13024
13428
  <div class="doc doc-contents ">
13025
13429
  <p class="doc doc-class-bases">
13026
- Bases: <code><autoref identifier="nautobot.core.forms.BulkEditForm" optional hover>BulkEditForm</autoref></code></p>
13430
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.BulkEditForm" href="#nautobot.apps.forms.BulkEditForm">BulkEditForm</a></code></p>
13431
+
13432
+
13433
+ <p>Bulk-edit form mixin for models that support Relationships.</p>
13434
+
13435
+
13436
+
13027
13437
 
13028
13438
 
13029
- <p>Bulk-edit form mixin for models that support Relationships.</p>
13030
13439
 
13031
13440
 
13032
13441
 
@@ -13052,7 +13461,7 @@ NoteModelFormMixin are needed.</p>
13052
13461
 
13053
13462
  <div class="doc doc-contents ">
13054
13463
 
13055
- <p>Helper method to be called from BulkEditView.post().</p>
13464
+ <p>Helper method to be called from BulkEditView.post().</p>
13056
13465
 
13057
13466
  </div>
13058
13467
 
@@ -13079,7 +13488,12 @@ NoteModelFormMixin are needed.</p>
13079
13488
 
13080
13489
  <div class="doc doc-contents ">
13081
13490
  <p class="doc doc-class-bases">
13082
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
13491
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
13492
+
13493
+
13494
+
13495
+
13496
+
13083
13497
 
13084
13498
 
13085
13499
 
@@ -13116,7 +13530,12 @@ NoteModelFormMixin are needed.</p>
13116
13530
 
13117
13531
  <div class="doc doc-contents ">
13118
13532
  <p class="doc doc-class-bases">
13119
- Bases: <code><autoref identifier="django.forms.ModelForm" optional hover>ModelForm</autoref></code></p>
13533
+ Bases: <code><span title="django.forms.ModelForm">ModelForm</span></code></p>
13534
+
13535
+
13536
+
13537
+
13538
+
13120
13539
 
13121
13540
 
13122
13541
 
@@ -13143,7 +13562,7 @@ NoteModelFormMixin are needed.</p>
13143
13562
 
13144
13563
  <div class="doc doc-contents ">
13145
13564
 
13146
- <p>First check for any required relationships errors and if there are any, add them via form field errors.
13565
+ <p>First check for any required relationships errors and if there are any, add them via form field errors.
13147
13566
  Then verify that any requested RelationshipAssociations do not violate relationship cardinality restrictions.</p>
13148
13567
  <ul>
13149
13568
  <li>For TYPE_ONE_TO_MANY and TYPE_ONE_TO_ONE relations, if the form's object is on the "source" side of
@@ -13179,10 +13598,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13179
13598
 
13180
13599
  <div class="doc doc-contents ">
13181
13600
  <p class="doc doc-class-bases">
13182
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
13601
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
13602
+
13603
+
13604
+ <p>Provides a hidden return URL field to control where the user is directed after the form is submitted.</p>
13605
+
13606
+
13607
+
13183
13608
 
13184
13609
 
13185
- <p>Provides a hidden return URL field to control where the user is directed after the form is submitted.</p>
13186
13610
 
13187
13611
 
13188
13612
 
@@ -13218,10 +13642,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13218
13642
 
13219
13643
  <div class="doc doc-contents ">
13220
13644
  <p class="doc doc-class-bases">
13221
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
13645
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
13646
+
13647
+
13648
+ <p>Mixin to add non-required <code>role</code> choice field to forms.</p>
13649
+
13650
+
13651
+
13222
13652
 
13223
13653
 
13224
- <p>Mixin to add non-required <code>role</code> choice field to forms.</p>
13225
13654
 
13226
13655
 
13227
13656
 
@@ -13257,10 +13686,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13257
13686
 
13258
13687
  <div class="doc doc-contents ">
13259
13688
  <p class="doc doc-class-bases">
13260
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
13689
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
13690
+
13691
+
13692
+ <p>Mixin to add non-required <code>role</code> multiple-choice field to filter forms.</p>
13693
+
13694
+
13695
+
13261
13696
 
13262
13697
 
13263
- <p>Mixin to add non-required <code>role</code> multiple-choice field to filter forms.</p>
13264
13698
 
13265
13699
 
13266
13700
 
@@ -13296,15 +13730,20 @@ Then verify that any requested RelationshipAssociations do not violate relations
13296
13730
 
13297
13731
  <div class="doc doc-contents ">
13298
13732
  <p class="doc doc-class-bases">
13299
- Bases: <code><autoref identifier="django.forms.Select" optional hover>Select</autoref></code></p>
13733
+ Bases: <code><span title="django.forms.Select">Select</span></code></p>
13300
13734
 
13301
13735
 
13302
- <p>Modified the stock Select widget to accept choices using a dict() for a label. The dict for each option must include
13736
+ <p>Modified the stock Select widget to accept choices using a dict() for a label. The dict for each option must include
13303
13737
  'label' (string) and 'disabled' (boolean).</p>
13304
13738
 
13305
13739
 
13306
13740
 
13307
13741
 
13742
+
13743
+
13744
+
13745
+
13746
+
13308
13747
  <div class="doc doc-children">
13309
13748
 
13310
13749
 
@@ -13336,10 +13775,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13336
13775
 
13337
13776
  <div class="doc doc-contents ">
13338
13777
  <p class="doc doc-class-bases">
13339
- Bases: <code><autoref identifier="nautobot.core.forms.widgets.StaticSelect2" optional hover>StaticSelect2</autoref></code></p>
13778
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.widgets.StaticSelect2" href="#nautobot.apps.forms.StaticSelect2">StaticSelect2</a></code></p>
13779
+
13780
+
13781
+ <p>Include the primary key of each option in the option label (e.g. "Router7 (4721)").</p>
13782
+
13783
+
13784
+
13340
13785
 
13341
13786
 
13342
- <p>Include the primary key of each option in the option label (e.g. "Router7 (4721)").</p>
13343
13787
 
13344
13788
 
13345
13789
 
@@ -13375,10 +13819,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13375
13819
 
13376
13820
  <div class="doc doc-contents ">
13377
13821
  <p class="doc doc-class-bases">
13378
- Bases: <code><autoref identifier="django.forms.SlugField" optional hover>SlugField</autoref></code></p>
13822
+ Bases: <code><span title="django.forms.SlugField">SlugField</span></code></p>
13823
+
13824
+
13825
+ <p>Extend the built-in SlugField to automatically populate from a field called <code>name</code> unless otherwise specified.</p>
13826
+
13827
+
13828
+
13379
13829
 
13380
13830
 
13381
- <p>Extend the built-in SlugField to automatically populate from a field called <code>name</code> unless otherwise specified.</p>
13382
13831
 
13383
13832
 
13384
13833
 
@@ -13404,7 +13853,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
13404
13853
 
13405
13854
  <div class="doc doc-contents ">
13406
13855
 
13407
- <p>Instantiate a SlugField.</p>
13856
+ <p>Instantiate a SlugField.</p>
13408
13857
 
13409
13858
 
13410
13859
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -13419,9 +13868,11 @@ Then verify that any requested RelationshipAssociations do not violate relations
13419
13868
  </thead>
13420
13869
  <tbody>
13421
13870
  <tr class="doc-section-item">
13422
- <td><code>slug_source</code></td>
13423
13871
  <td>
13424
- <code>(<autoref identifier="str" optional>str</autoref>, <autoref identifier="tuple" optional>tuple</autoref>)</code>
13872
+ <code>slug_source</code>
13873
+ </td>
13874
+ <td>
13875
+ <code>(str, tuple)</code>
13425
13876
  </td>
13426
13877
  <td>
13427
13878
  <div class="doc-md-description">
@@ -13460,10 +13911,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13460
13911
 
13461
13912
  <div class="doc doc-contents ">
13462
13913
  <p class="doc doc-class-bases">
13463
- Bases: <code><autoref identifier="django.forms.TextInput" optional hover>TextInput</autoref></code></p>
13914
+ Bases: <code><span title="django.forms.TextInput">TextInput</span></code></p>
13915
+
13916
+
13917
+ <p>Subclass TextInput and add a slug regeneration button next to the form field.</p>
13918
+
13919
+
13920
+
13464
13921
 
13465
13922
 
13466
- <p>Subclass TextInput and add a slug regeneration button next to the form field.</p>
13467
13923
 
13468
13924
 
13469
13925
 
@@ -13499,10 +13955,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13499
13955
 
13500
13956
  <div class="doc doc-contents ">
13501
13957
  <p class="doc doc-class-bases">
13502
- Bases: <code><autoref identifier="django.forms.Textarea" optional hover>Textarea</autoref></code></p>
13958
+ Bases: <code><span title="django.forms.Textarea">Textarea</span></code></p>
13959
+
13960
+
13961
+ <p>Subclass used for rendering a smaller textarea element.</p>
13962
+
13963
+
13964
+
13503
13965
 
13504
13966
 
13505
- <p>Subclass used for rendering a smaller textarea element.</p>
13506
13967
 
13507
13968
 
13508
13969
  </div>
@@ -13522,10 +13983,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13522
13983
 
13523
13984
  <div class="doc doc-contents ">
13524
13985
  <p class="doc doc-class-bases">
13525
- Bases: <code><autoref identifier="nautobot.core.forms.widgets.SelectWithDisabled" optional hover>SelectWithDisabled</autoref></code></p>
13986
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.widgets.SelectWithDisabled" href="#nautobot.apps.forms.SelectWithDisabled">SelectWithDisabled</a></code></p>
13987
+
13988
+
13989
+ <p>A static <select> form widget using the Select2 library.</p>
13990
+
13991
+
13992
+
13526
13993
 
13527
13994
 
13528
- <p>A static <select> form widget using the Select2 library.</p>
13529
13995
 
13530
13996
 
13531
13997
 
@@ -13561,10 +14027,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13561
14027
 
13562
14028
  <div class="doc doc-contents ">
13563
14029
  <p class="doc doc-class-bases">
13564
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
14030
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
14031
+
14032
+
14033
+ <p>Mixin to add non-required <code>status</code> choice field to forms.</p>
14034
+
14035
+
14036
+
13565
14037
 
13566
14038
 
13567
- <p>Mixin to add non-required <code>status</code> choice field to forms.</p>
13568
14039
 
13569
14040
 
13570
14041
 
@@ -13600,10 +14071,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13600
14071
 
13601
14072
  <div class="doc doc-contents ">
13602
14073
  <p class="doc doc-class-bases">
13603
- Bases: <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
14074
+ Bases: <code><span title="django.forms.Form">Form</span></code></p>
14075
+
14076
+
14077
+ <p>Mixin to add non-required <code>status</code> multiple-choice field to filter forms.</p>
14078
+
14079
+
14080
+
13604
14081
 
13605
14082
 
13606
- <p>Mixin to add non-required <code>status</code> multiple-choice field to filter forms.</p>
13607
14083
 
13608
14084
 
13609
14085
 
@@ -13639,10 +14115,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13639
14115
 
13640
14116
  <div class="doc doc-contents ">
13641
14117
  <p class="doc doc-class-bases">
13642
- Bases: <code><autoref identifier="nautobot.core.forms.forms.BootstrapMixin" optional hover>BootstrapMixin</autoref></code>, <code><autoref identifier="django.forms.Form" optional hover>Form</autoref></code></p>
14118
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.forms.BootstrapMixin" href="#nautobot.apps.forms.BootstrapMixin">BootstrapMixin</a></code>, <code><span title="django.forms.Form">Form</span></code></p>
14119
+
14120
+
14121
+ <p>Form for configuring user's table preferences.</p>
14122
+
14123
+
14124
+
13643
14125
 
13644
14126
 
13645
- <p>Form for configuring user's table preferences.</p>
13646
14127
 
13647
14128
 
13648
14129
 
@@ -13678,15 +14159,20 @@ Then verify that any requested RelationshipAssociations do not violate relations
13678
14159
 
13679
14160
  <div class="doc doc-contents ">
13680
14161
  <p class="doc doc-class-bases">
13681
- Bases: <code><autoref identifier="nautobot.core.forms.fields.DynamicModelMultipleChoiceField" optional hover>DynamicModelMultipleChoiceField</autoref></code></p>
14162
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.forms.fields.DynamicModelMultipleChoiceField" href="#nautobot.apps.forms.DynamicModelMultipleChoiceField">DynamicModelMultipleChoiceField</a></code></p>
13682
14163
 
13683
14164
 
13684
- <p>A filter field for the tags of a model. Only the tags used by a model are displayed.</p>
14165
+ <p>A filter field for the tags of a model. Only the tags used by a model are displayed.</p>
13685
14166
  <p>:param model: The model of the filter</p>
13686
14167
 
13687
14168
 
13688
14169
 
13689
14170
 
14171
+
14172
+
14173
+
14174
+
14175
+
13690
14176
  <div class="doc doc-children">
13691
14177
 
13692
14178
 
@@ -13718,10 +14204,15 @@ Then verify that any requested RelationshipAssociations do not violate relations
13718
14204
 
13719
14205
  <div class="doc doc-contents ">
13720
14206
  <p class="doc doc-class-bases">
13721
- Bases: <code><autoref identifier="django.forms.TextInput" optional hover>TextInput</autoref></code></p>
14207
+ Bases: <code><span title="django.forms.TextInput">TextInput</span></code></p>
14208
+
14209
+
14210
+ <p>Time picker using Flatpickr.</p>
14211
+
14212
+
14213
+
13722
14214
 
13723
14215
 
13724
- <p>Time picker using Flatpickr.</p>
13725
14216
 
13726
14217
 
13727
14218
 
@@ -13756,7 +14247,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
13756
14247
 
13757
14248
  <div class="doc doc-contents ">
13758
14249
 
13759
- <p>Add a blank choice to the beginning of a choices list.</p>
14250
+ <p>Add a blank choice to the beginning of a choices list.</p>
13760
14251
 
13761
14252
  </div>
13762
14253
 
@@ -13773,7 +14264,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
13773
14264
 
13774
14265
  <div class="doc doc-contents ">
13775
14266
 
13776
- <p>Attach a field to an existing filter form class.</p>
14267
+ <p>Attach a field to an existing filter form class.</p>
13777
14268
 
13778
14269
  </div>
13779
14270
 
@@ -13790,7 +14281,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
13790
14281
 
13791
14282
  <div class="doc doc-contents ">
13792
14283
 
13793
- <p>Expand an alphabetic pattern into a list of strings.</p>
14284
+ <p>Expand an alphabetic pattern into a list of strings.</p>
13794
14285
 
13795
14286
  </div>
13796
14287
 
@@ -13807,7 +14298,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
13807
14298
 
13808
14299
  <div class="doc doc-contents ">
13809
14300
 
13810
- <p>Expand an IP address pattern into a list of strings. Examples:
14301
+ <p>Expand an IP address pattern into a list of strings. Examples:
13811
14302
  '192.0.2.[1,2,100-250]/24' =&gt; ['192.0.2.1/24', '192.0.2.2/24', '192.0.2.100/24' ... '192.0.2.250/24']
13812
14303
  '2001:db8:0:[0,fd-ff]::/64' =&gt; ['2001:db8:0:0::/64', '2001:db8:0:fd::/64', ... '2001:db8:0:ff::/64']</p>
13813
14304
 
@@ -13826,7 +14317,7 @@ Then verify that any requested RelationshipAssociations do not violate relations
13826
14317
 
13827
14318
  <div class="doc doc-contents ">
13828
14319
 
13829
- <p>Return a Form class with the specified fields derived from a model. This is useful when we need a form to be used
14320
+ <p>Return a Form class with the specified fields derived from a model. This is useful when we need a form to be used
13830
14321
  for creating objects, but want to avoid the model's validation (e.g. for bulk create/edit functions). All fields
13831
14322
  are marked as not required.</p>
13832
14323
 
@@ -13845,7 +14336,7 @@ are marked as not required.</p>
13845
14336
 
13846
14337
  <div class="doc doc-contents ">
13847
14338
 
13848
- <p>Expand an alphanumeric range (continuous or not) into a list.
14339
+ <p>Expand an alphanumeric range (continuous or not) into a list.
13849
14340
  'a-d,f' =&gt; [a, b, c, d, f]
13850
14341
  '0-3,a-d' =&gt; [0, 1, 2, 3, a, b, c, d]</p>
13851
14342
 
@@ -13864,7 +14355,7 @@ are marked as not required.</p>
13864
14355
 
13865
14356
  <div class="doc doc-contents ">
13866
14357
 
13867
- <p>Expand a numeric range (continuous or not) into a sorted decimal or
14358
+ <p>Expand a numeric range (continuous or not) into a sorted decimal or
13868
14359
  hexadecimal list, as specified by the base parameter
13869
14360
  '0-3,5' =&gt; [0, 1, 2, 3, 5]
13870
14361
  '2,8-b,d,f' =&gt; [2, 8, 9, a, b, d, f]</p>
@@ -13884,7 +14375,7 @@ hexadecimal list, as specified by the base parameter
13884
14375
 
13885
14376
  <div class="doc doc-contents ">
13886
14377
 
13887
- <p>Restrict all form fields which reference a RestrictedQuerySet. This ensures that users see only permitted objects
14378
+ <p>Restrict all form fields which reference a RestrictedQuerySet. This ensures that users see only permitted objects
13888
14379
  as available choices.</p>
13889
14380
 
13890
14381
  </div>
@@ -13994,7 +14485,7 @@ as available choices.</p>
13994
14485
 
13995
14486
 
13996
14487
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
13997
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
14488
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
13998
14489
  </a>
13999
14490
 
14000
14491
 
@@ -14002,7 +14493,7 @@ as available choices.</p>
14002
14493
 
14003
14494
 
14004
14495
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
14005
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z"/></svg>
14496
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z"/></svg>
14006
14497
  </a>
14007
14498
 
14008
14499
 
@@ -14010,7 +14501,7 @@ as available choices.</p>
14010
14501
 
14011
14502
 
14012
14503
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
14013
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1s21.16-47.06 47.06-47.06h47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06S448 171 448 196.9s-21.16 47.06-47.06 47.06h-47.06zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06S309 480 283.1 480s-47.06-21.16-47.06-47.06v-47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06s21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06z"/></svg>
14504
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1s21.16-47.06 47.06-47.06h47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06S448 171 448 196.9s-21.16 47.06-47.06 47.06h-47.06zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06S309 480 283.1 480s-47.06-21.16-47.06-47.06v-47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06s21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06z"/></svg>
14014
14505
  </a>
14015
14506
 
14016
14507
 
@@ -14018,7 +14509,7 @@ as available choices.</p>
14018
14509
 
14019
14510
 
14020
14511
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
14021
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
14512
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
14022
14513
  </a>
14023
14514
 
14024
14515
 
@@ -14026,7 +14517,7 @@ as available choices.</p>
14026
14517
 
14027
14518
 
14028
14519
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
14029
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253"/></svg>
14520
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253"/></svg>
14030
14521
  </a>
14031
14522
 
14032
14523
  </div>
@@ -14041,10 +14532,10 @@ as available choices.</p>
14041
14532
  </div>
14042
14533
 
14043
14534
 
14044
- <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>
14535
+ <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.f8cc74c7.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>
14045
14536
 
14046
14537
 
14047
- <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script>
14538
+ <script src="../../../assets/javascripts/bundle.60a45f97.min.js"></script>
14048
14539
 
14049
14540
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
14050
14541