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
 
@@ -9382,11 +9499,11 @@
9382
9499
 
9383
9500
 
9384
9501
  <li class="md-nav__item">
9385
- <a href="../../../development/core/local-k8s.html" class="md-nav__link">
9502
+ <a href="../../../development/core/minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
9386
9503
 
9387
9504
 
9388
9505
  <span class="md-ellipsis">
9389
- Local Kubernetes Cluster
9506
+ Minikube Dev Environment for K8s Jobs
9390
9507
  </span>
9391
9508
 
9392
9509
 
@@ -11610,7 +11727,12 @@
11610
11727
 
11611
11728
  <div class="doc doc-contents first">
11612
11729
 
11613
- <p>Data model classes and utilities for app implementation.</p>
11730
+ <p>Data model classes and utilities for app implementation.</p>
11731
+
11732
+
11733
+
11734
+
11735
+
11614
11736
 
11615
11737
 
11616
11738
 
@@ -11636,10 +11758,10 @@
11636
11758
 
11637
11759
  <div class="doc doc-contents ">
11638
11760
  <p class="doc doc-class-bases">
11639
- Bases: <code><autoref identifier="django_extensions.db.fields.AutoSlugField" optional hover>AutoSlugField</autoref></code></p>
11761
+ Bases: <code><span title="django_extensions.db.fields.AutoSlugField">AutoSlugField</span></code></p>
11640
11762
 
11641
11763
 
11642
- <p>AutoSlugField</p>
11764
+ <p>AutoSlugField</p>
11643
11765
  <p>By default, sets editable=True, blank=True, max_length=100, overwrite_on_add=False, unique=True
11644
11766
  Required arguments:
11645
11767
  populate_from
@@ -11681,6 +11803,11 @@ class MyModel(models.Model):
11681
11803
 
11682
11804
 
11683
11805
 
11806
+
11807
+
11808
+
11809
+
11810
+
11684
11811
  <div class="doc doc-children">
11685
11812
 
11686
11813
 
@@ -11702,7 +11829,7 @@ class MyModel(models.Model):
11702
11829
 
11703
11830
  <div class="doc doc-contents ">
11704
11831
 
11705
- <p>Workaround for https://github.com/django-extensions/django-extensions/issues/1713.</p>
11832
+ <p>Workaround for https://github.com/django-extensions/django-extensions/issues/1713.</p>
11706
11833
 
11707
11834
  </div>
11708
11835
 
@@ -11729,15 +11856,20 @@ class MyModel(models.Model):
11729
11856
 
11730
11857
  <div class="doc doc-contents ">
11731
11858
  <p class="doc doc-class-bases">
11732
- Bases: <code><autoref identifier="django.db.models.Manager" optional hover>Manager</autoref></code></p>
11859
+ Bases: <code><span title="django.db.models.Manager">Manager</span></code></p>
11733
11860
 
11734
11861
 
11735
- <p>Base manager class corresponding to BaseModel and RestrictedQuerySet.</p>
11862
+ <p>Base manager class corresponding to BaseModel and RestrictedQuerySet.</p>
11736
11863
  <p>Adds built-in natural key support, loosely based on <code>django-natural-keys</code>.</p>
11737
11864
 
11738
11865
 
11739
11866
 
11740
11867
 
11868
+
11869
+
11870
+
11871
+
11872
+
11741
11873
  <div class="doc doc-children">
11742
11874
 
11743
11875
 
@@ -11759,7 +11891,7 @@ class MyModel(models.Model):
11759
11891
 
11760
11892
  <div class="doc doc-contents ">
11761
11893
 
11762
- <p>Return the object corresponding to the provided natural key.</p>
11894
+ <p>Return the object corresponding to the provided natural key.</p>
11763
11895
  <p>Generic implementation that depends on the model being a BaseModel subclass or otherwise implementing our
11764
11896
  <code>natural_key_field_lookups</code> property API. Loosely based on implementation from <code>django-natural-keys</code>.</p>
11765
11897
 
@@ -11788,10 +11920,10 @@ class MyModel(models.Model):
11788
11920
 
11789
11921
  <div class="doc doc-contents ">
11790
11922
  <p class="doc doc-class-bases">
11791
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
11923
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
11792
11924
 
11793
11925
 
11794
- <p>Base model class that all models should inherit from.</p>
11926
+ <p>Base model class that all models should inherit from.</p>
11795
11927
  <p>This abstract base provides globally common fields and functionality.</p>
11796
11928
  <p>Here we define the primary key to be a UUID field and set its default to
11797
11929
  automatically generate a random UUID value. Note however, this does not
@@ -11807,6 +11939,11 @@ can be used for the same purpose in most cases.</p>
11807
11939
 
11808
11940
 
11809
11941
 
11942
+
11943
+
11944
+
11945
+
11946
+
11810
11947
  <div class="doc doc-children">
11811
11948
 
11812
11949
 
@@ -11820,7 +11957,7 @@ can be used for the same purpose in most cases.</p>
11820
11957
 
11821
11958
 
11822
11959
  <h3 id="nautobot.apps.models.BaseModel.composite_key" class="doc doc-heading">
11823
- <code class="highlight language-python"><span class="n">composite_key</span><span class="p">:</span> <span class="nb">str</span></code>
11960
+ <code class="highlight language-python"><span class="n">composite_key</span></code>
11824
11961
 
11825
11962
  <span class="doc doc-labels">
11826
11963
  <small class="doc doc-label doc-label-property"><code>property</code></small>
@@ -11831,7 +11968,7 @@ can be used for the same purpose in most cases.</p>
11831
11968
 
11832
11969
  <div class="doc doc-contents ">
11833
11970
 
11834
- <p>Automatic "slug" string derived from this model's natural key, suitable for use in URLs etc.</p>
11971
+ <p>Automatic "slug" string derived from this model's natural key, suitable for use in URLs etc.</p>
11835
11972
  <p>A less naïve implementation than django-natural-keys provides by default, based around URL percent-encoding.</p>
11836
11973
  </div>
11837
11974
 
@@ -11842,7 +11979,7 @@ can be used for the same purpose in most cases.</p>
11842
11979
 
11843
11980
 
11844
11981
  <h3 id="nautobot.apps.models.BaseModel.natural_slug" class="doc doc-heading">
11845
- <code class="highlight language-python"><span class="n">natural_slug</span><span class="p">:</span> <span class="nb">str</span></code>
11982
+ <code class="highlight language-python"><span class="n">natural_slug</span></code>
11846
11983
 
11847
11984
  <span class="doc doc-labels">
11848
11985
  <small class="doc doc-label doc-label-property"><code>property</code></small>
@@ -11853,7 +11990,7 @@ can be used for the same purpose in most cases.</p>
11853
11990
 
11854
11991
  <div class="doc doc-contents ">
11855
11992
 
11856
- <p>Automatic "slug" string derived from this model's natural key. This differs from composite
11993
+ <p>Automatic "slug" string derived from this model's natural key. This differs from composite
11857
11994
  key in that it must be human-readable and comply with a very limited character set, and is therefore lossy.
11858
11995
  This value is not guaranteed to be
11859
11996
  unique although a best effort is made by appending a fragment of the primary key to the
@@ -11878,7 +12015,7 @@ natural slug value.</p>
11878
12015
 
11879
12016
  <div class="doc doc-contents ">
11880
12017
 
11881
- <p>True if the record exists in the database, False if it does not.</p>
12018
+ <p>True if the record exists in the database, False if it does not.</p>
11882
12019
  </div>
11883
12020
 
11884
12021
  </div>
@@ -11900,7 +12037,7 @@ natural slug value.</p>
11900
12037
 
11901
12038
  <div class="doc doc-contents ">
11902
12039
 
11903
- <p>Override this method for models with Python <code>@property</code> as part of their <code>natural_key_field_names</code>.</p>
12040
+ <p>Override this method for models with Python <code>@property</code> as part of their <code>natural_key_field_names</code>.</p>
11904
12041
  <p>Since CSV export for <code>natural_key_field_names</code> relies on database fields, you can override this method
11905
12042
  to provide custom handling for models with property-based natural keys.</p>
11906
12043
 
@@ -11919,7 +12056,7 @@ to provide custom handling for models with property-based natural keys.</p>
11919
12056
 
11920
12057
  <div class="doc doc-contents ">
11921
12058
 
11922
- <p>Return the canonical URL for this object in either the UI or the REST API.</p>
12059
+ <p>Return the canonical URL for this object in either the UI or the REST API.</p>
11923
12060
 
11924
12061
  </div>
11925
12062
 
@@ -11936,7 +12073,7 @@ to provide custom handling for models with property-based natural keys.</p>
11936
12073
 
11937
12074
  <div class="doc doc-contents ">
11938
12075
 
11939
- <p>Smarter default implementation of natural key construction.</p>
12076
+ <p>Smarter default implementation of natural key construction.</p>
11940
12077
  <ol>
11941
12078
  <li>Handles nullable foreign keys (https://github.com/wq/django-natural-keys/issues/18)</li>
11942
12079
  <li>Handles variadic natural-keys (e.g. Location model - [name, parent__name, parent__parent__name, ...].)</li>
@@ -11961,7 +12098,7 @@ to provide custom handling for models with property-based natural keys.</p>
11961
12098
 
11962
12099
  <div class="doc doc-contents ">
11963
12100
 
11964
- <p>Helper function to map a list of natural key field values to actual kwargs suitable for lookup and filtering.</p>
12101
+ <p>Helper function to map a list of natural key field values to actual kwargs suitable for lookup and filtering.</p>
11965
12102
  <p>Based on <code>django-natural-keys</code> <code>NaturalKeyQuerySet.natural_key_kwargs()</code> method.</p>
11966
12103
 
11967
12104
  </div>
@@ -11979,7 +12116,7 @@ to provide custom handling for models with property-based natural keys.</p>
11979
12116
 
11980
12117
  <div class="doc doc-contents ">
11981
12118
 
11982
- <p>List of lookups (possibly including nested lookups for related models) that make up this model's natural key.</p>
12119
+ <p>List of lookups (possibly including nested lookups for related models) that make up this model's natural key.</p>
11983
12120
  <p>BaseModel provides a "smart" implementation that tries to determine this automatically,
11984
12121
  but you can also explicitly set <code>natural_key_field_names</code> on a given model subclass if desired.</p>
11985
12122
  <p>This property is based on a consolidation of <code>django-natural-keys</code> <code>ForeignKeyModel.get_natural_key_info()</code>,
@@ -12002,7 +12139,7 @@ but instead explicitly discounts the <code>id</code> field (only) as a candidate
12002
12139
 
12003
12140
  <div class="doc doc-contents ">
12004
12141
 
12005
- <p>Perform model validation during instance save.</p>
12142
+ <p>Perform model validation during instance save.</p>
12006
12143
  <p>This is a convenience method that first calls <code>self.full_clean()</code> and then <code>self.save()</code>
12007
12144
  which in effect enforces model validation prior to saving the instance, without having
12008
12145
  to manually make these calls seperately. This is a slight departure from Django norms,
@@ -12035,15 +12172,20 @@ command.</p>
12035
12172
 
12036
12173
  <div class="doc doc-contents ">
12037
12174
  <p class="doc doc-class-bases">
12038
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
12175
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
12039
12176
 
12040
12177
 
12041
- <p>An abstract model which adds fields to store the creation and last-updated times for an object. Both fields can be
12178
+ <p>An abstract model which adds fields to store the creation and last-updated times for an object. Both fields can be
12042
12179
  null to facilitate adding these fields to existing instances via a database migration.</p>
12043
12180
 
12044
12181
 
12045
12182
 
12046
12183
 
12184
+
12185
+
12186
+
12187
+
12188
+
12047
12189
  <div class="doc doc-children">
12048
12190
 
12049
12191
 
@@ -12065,7 +12207,7 @@ null to facilitate adding these fields to existing instances via a database migr
12065
12207
 
12066
12208
  <div class="doc doc-contents ">
12067
12209
 
12068
- <p>Return the changelog URL for this object.</p>
12210
+ <p>Return the changelog URL for this object.</p>
12069
12211
 
12070
12212
  </div>
12071
12213
 
@@ -12082,7 +12224,7 @@ null to facilitate adding these fields to existing instances via a database migr
12082
12224
 
12083
12225
  <div class="doc doc-contents ">
12084
12226
 
12085
- <p>Return a new ObjectChange representing a change made to this object, or None if the object shouldn't be logged.</p>
12227
+ <p>Return a new ObjectChange representing a change made to this object, or None if the object shouldn't be logged.</p>
12086
12228
  <p>This will typically be called automatically by ChangeLoggingMiddleware.</p>
12087
12229
 
12088
12230
  </div>
@@ -12110,10 +12252,15 @@ null to facilitate adding these fields to existing instances via a database migr
12110
12252
 
12111
12253
  <div class="doc doc-contents ">
12112
12254
  <p class="doc doc-class-bases">
12113
- Bases: <code><autoref identifier="django.db.models.Func" optional hover>Func</autoref></code></p>
12255
+ Bases: <code><span title="django.db.models.Func">Func</span></code></p>
12256
+
12257
+
12258
+ <p>Disregard localization by collating a field as a plain character string. Helpful for ensuring predictable ordering.</p>
12259
+
12260
+
12261
+
12114
12262
 
12115
12263
 
12116
- <p>Disregard localization by collating a field as a plain character string. Helpful for ensuring predictable ordering.</p>
12117
12264
 
12118
12265
 
12119
12266
 
@@ -12150,7 +12297,7 @@ null to facilitate adding these fields to existing instances via a database migr
12150
12297
  <div class="doc doc-contents ">
12151
12298
 
12152
12299
 
12153
- <p>Mixin to extend a base queryset class with support for filtering by <code>composite_key=...</code> as a virtual parameter.</p>
12300
+ <p>Mixin to extend a base queryset class with support for filtering by <code>composite_key=...</code> as a virtual parameter.</p>
12154
12301
  <p>Example:</p>
12155
12302
  <div class="highlight"><pre><span></span><code>&gt;&gt;&gt; Location.objects.last().composite_key
12156
12303
  &#39;Durham;AMER&#39;
@@ -12188,6 +12335,11 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
12188
12335
 
12189
12336
 
12190
12337
 
12338
+
12339
+
12340
+
12341
+
12342
+
12191
12343
  <div class="doc doc-children">
12192
12344
 
12193
12345
 
@@ -12209,7 +12361,7 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
12209
12361
 
12210
12362
  <div class="doc doc-contents ">
12211
12363
 
12212
- <p>Explicitly handle <code>exclude(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
12364
+ <p>Explicitly handle <code>exclude(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
12213
12365
  <p>Counterpart to BaseModel.composite_key property.</p>
12214
12366
 
12215
12367
  </div>
@@ -12227,7 +12379,7 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
12227
12379
 
12228
12380
  <div class="doc doc-contents ">
12229
12381
 
12230
- <p>Explicitly handle <code>filter(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
12382
+ <p>Explicitly handle <code>filter(composite_key="...")</code> by decomposing the composite-key into natural key parameters.</p>
12231
12383
  <p>Counterpart to BaseModel.composite_key property.</p>
12232
12384
 
12233
12385
  </div>
@@ -12245,7 +12397,7 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
12245
12397
 
12246
12398
  <div class="doc doc-contents ">
12247
12399
 
12248
- <p>Helper method abstracting a common need from filter() and exclude().</p>
12400
+ <p>Helper method abstracting a common need from filter() and exclude().</p>
12249
12401
  <p>Subclasses may need to call this directly if they also have special processing of other filter/exclude params.</p>
12250
12402
 
12251
12403
  </div>
@@ -12273,15 +12425,20 @@ ValueError: Conflicting values for key &quot;name&quot;: (&#39;Durham&#39;, &#39
12273
12425
 
12274
12426
  <div class="doc doc-contents ">
12275
12427
  <p class="doc doc-class-bases">
12276
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code>, <code><autoref identifier="nautobot.extras.models.models.ConfigContextSchemaValidationMixin" optional hover>ConfigContextSchemaValidationMixin</autoref></code></p>
12428
+ Bases: <code><span title="django.db.models.Model">Model</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.models.ConfigContextSchemaValidationMixin" href="#nautobot.apps.models.ConfigContextSchemaValidationMixin">ConfigContextSchemaValidationMixin</a></code></p>
12277
12429
 
12278
12430
 
12279
- <p>A model which includes local configuration context data. This local data will override any inherited data from
12431
+ <p>A model which includes local configuration context data. This local data will override any inherited data from
12280
12432
  ConfigContexts.</p>
12281
12433
 
12282
12434
 
12283
12435
 
12284
12436
 
12437
+
12438
+
12439
+
12440
+
12441
+
12285
12442
  <div class="doc doc-children">
12286
12443
 
12287
12444
 
@@ -12303,7 +12460,7 @@ ConfigContexts.</p>
12303
12460
 
12304
12461
  <div class="doc doc-contents ">
12305
12462
 
12306
- <p>Return the rendered configuration context for a device or VM.</p>
12463
+ <p>Return the rendered configuration context for a device or VM.</p>
12307
12464
 
12308
12465
  </div>
12309
12466
 
@@ -12331,7 +12488,12 @@ ConfigContexts.</p>
12331
12488
  <div class="doc doc-contents ">
12332
12489
 
12333
12490
 
12334
- <p>Mixin that provides validation of config context data against a json schema.</p>
12491
+ <p>Mixin that provides validation of config context data against a json schema.</p>
12492
+
12493
+
12494
+
12495
+
12496
+
12335
12497
 
12336
12498
 
12337
12499
 
@@ -12367,10 +12529,15 @@ ConfigContexts.</p>
12367
12529
 
12368
12530
  <div class="doc doc-contents ">
12369
12531
  <p class="doc doc-class-bases">
12370
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
12532
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
12533
+
12534
+
12535
+ <p>Abstract mixin for enabling Contact/Team association to a given model class.</p>
12536
+
12537
+
12538
+
12371
12539
 
12372
12540
 
12373
- <p>Abstract mixin for enabling Contact/Team association to a given model class.</p>
12374
12541
 
12375
12542
 
12376
12543
 
@@ -12406,7 +12573,12 @@ ConfigContexts.</p>
12406
12573
 
12407
12574
  <div class="doc doc-contents ">
12408
12575
  <p class="doc doc-class-bases">
12409
- Bases: <code><autoref identifier="nautobot.core.models.querysets.RestrictedQuerySet" optional hover>RestrictedQuerySet</autoref></code></p>
12576
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.querysets.RestrictedQuerySet" href="#nautobot.apps.models.RestrictedQuerySet">RestrictedQuerySet</a></code></p>
12577
+
12578
+
12579
+
12580
+
12581
+
12410
12582
 
12411
12583
 
12412
12584
 
@@ -12433,7 +12605,7 @@ ConfigContexts.</p>
12433
12605
 
12434
12606
  <div class="doc doc-contents ">
12435
12607
 
12436
- <p>Return all <code>self.model</code> instances assigned to the given model.</p>
12608
+ <p>Return all <code>self.model</code> instances assigned to the given model.</p>
12437
12609
 
12438
12610
  </div>
12439
12611
 
@@ -12450,7 +12622,7 @@ ConfigContexts.</p>
12450
12622
 
12451
12623
  <div class="doc doc-contents ">
12452
12624
 
12453
- <p>Return all <code>self.model</code> instances assigned to the given <code>_models</code>.</p>
12625
+ <p>Return all <code>self.model</code> instances assigned to the given <code>_models</code>.</p>
12454
12626
 
12455
12627
  </div>
12456
12628
 
@@ -12477,10 +12649,15 @@ ConfigContexts.</p>
12477
12649
 
12478
12650
  <div class="doc doc-contents ">
12479
12651
  <p class="doc doc-class-bases">
12480
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
12652
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
12653
+
12654
+
12655
+ <p>Abstract class for any model which may have custom fields associated with it.</p>
12656
+
12657
+
12658
+
12481
12659
 
12482
12660
 
12483
- <p>Abstract class for any model which may have custom fields associated with it.</p>
12484
12661
 
12485
12662
 
12486
12663
 
@@ -12509,7 +12686,7 @@ ConfigContexts.</p>
12509
12686
 
12510
12687
  <div class="doc doc-contents ">
12511
12688
 
12512
- <p>Convenience wrapper for custom field data.</p>
12689
+ <p>Convenience wrapper for custom field data.</p>
12513
12690
  </div>
12514
12691
 
12515
12692
  </div>
@@ -12530,7 +12707,7 @@ ConfigContexts.</p>
12530
12707
 
12531
12708
  <div class="doc doc-contents ">
12532
12709
 
12533
- <p>Legacy interface to raw custom field data</p>
12710
+ <p>Legacy interface to raw custom field data</p>
12534
12711
  <p>TODO(John): remove this entirely when the cf property is enhanced</p>
12535
12712
  </div>
12536
12713
 
@@ -12549,7 +12726,7 @@ ConfigContexts.</p>
12549
12726
 
12550
12727
  <div class="doc doc-contents ">
12551
12728
 
12552
- <p>Get a computed field for this model, lookup via key.
12729
+ <p>Get a computed field for this model, lookup via key.
12553
12730
  Returns the template of this field if render is False, otherwise returns the rendered value.</p>
12554
12731
 
12555
12732
  </div>
@@ -12567,7 +12744,7 @@ Returns the template of this field if render is False, otherwise returns the ren
12567
12744
 
12568
12745
  <div class="doc doc-contents ">
12569
12746
 
12570
- <p>Return a dictionary of all computed fields and their rendered values for this model.
12747
+ <p>Return a dictionary of all computed fields and their rendered values for this model.
12571
12748
  Keys are the <code>key</code> value of each field. If label_as_key is True, <code>label</code> values of each field are used as keys.</p>
12572
12749
 
12573
12750
  </div>
@@ -12585,7 +12762,7 @@ Keys are the <code>key</code> value of each field. If label_as_key is True, <cod
12585
12762
 
12586
12763
  <div class="doc doc-contents ">
12587
12764
 
12588
- <p>Return a dictonary of computed fields grouped by the same grouping in the form
12765
+ <p>Return a dictonary of computed fields grouped by the same grouping in the form
12589
12766
  {
12590
12767
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
12591
12768
  ...
@@ -12608,7 +12785,7 @@ Keys are the <code>key</code> value of each field. If label_as_key is True, <cod
12608
12785
 
12609
12786
  <div class="doc doc-contents ">
12610
12787
 
12611
- <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12788
+ <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12612
12789
  Return a dictonary of computed fields grouped by the same grouping in the form
12613
12790
  {
12614
12791
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12633,7 +12810,7 @@ which have advanced_ui set to True</p>
12633
12810
 
12634
12811
  <div class="doc doc-contents ">
12635
12812
 
12636
- <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12813
+ <p>This method exists to help call get_computed_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12637
12814
  Return a dictonary of computed fields grouped by the same grouping in the form
12638
12815
  {
12639
12816
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12658,7 +12835,7 @@ which have advanced_ui set to False</p>
12658
12835
 
12659
12836
  <div class="doc doc-contents ">
12660
12837
 
12661
- <p>Return a dictonary of custom fields grouped by the same grouping in the form
12838
+ <p>Return a dictonary of custom fields grouped by the same grouping in the form
12662
12839
  {
12663
12840
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
12664
12841
  ...
@@ -12681,7 +12858,7 @@ which have advanced_ui set to False</p>
12681
12858
 
12682
12859
  <div class="doc doc-contents ">
12683
12860
 
12684
- <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12861
+ <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12685
12862
  Return a dictonary of custom fields grouped by the same grouping in the form
12686
12863
  {
12687
12864
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12706,7 +12883,7 @@ which have advanced_ui set to True</p>
12706
12883
 
12707
12884
  <div class="doc doc-contents ">
12708
12885
 
12709
- <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12886
+ <p>This method exists to help call get_custom_field_groupings() in templates where a function argument (advanced_ui) cannot be specified.
12710
12887
  Return a dictonary of custom fields grouped by the same grouping in the form
12711
12888
  {
12712
12889
  <grouping_1>: [(cf1, <value for cf1>), (cf2, <value for cf2>), ...],
@@ -12731,7 +12908,7 @@ which have advanced_ui set to False</p>
12731
12908
 
12732
12909
  <div class="doc doc-contents ">
12733
12910
 
12734
- <p>Return a dictionary of custom fields for a single object in the form {<field>: value}.</p>
12911
+ <p>Return a dictionary of custom fields for a single object in the form {<field>: value}.</p>
12735
12912
 
12736
12913
  </div>
12737
12914
 
@@ -12748,7 +12925,7 @@ which have advanced_ui set to False</p>
12748
12925
 
12749
12926
  <div class="doc doc-contents ">
12750
12927
 
12751
- <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12928
+ <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12752
12929
  Return a dictionary of custom fields for a single object in the form {<field>: value}
12753
12930
  which have advanced_ui set to True</p>
12754
12931
 
@@ -12767,7 +12944,7 @@ which have advanced_ui set to True</p>
12767
12944
 
12768
12945
  <div class="doc doc-contents ">
12769
12946
 
12770
- <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12947
+ <p>This method exists to help call get_custom_fields() in templates where a function argument (advanced_ui) cannot be specified.
12771
12948
  Return a dictionary of custom fields for a single object in the form {<field>: value}
12772
12949
  which have advanced_ui set to False</p>
12773
12950
 
@@ -12786,7 +12963,7 @@ which have advanced_ui set to False</p>
12786
12963
 
12787
12964
  <div class="doc doc-contents ">
12788
12965
 
12789
- <p>Return a boolean indicating whether or not this content type has computed fields associated with it.
12966
+ <p>Return a boolean indicating whether or not this content type has computed fields associated with it.
12790
12967
  This can also check whether the advanced_ui attribute is True or False for UI display purposes.</p>
12791
12968
 
12792
12969
  </div>
@@ -12815,7 +12992,7 @@ This can also check whether the advanced_ui attribute is True or False for UI di
12815
12992
  <div class="doc doc-contents ">
12816
12993
 
12817
12994
 
12818
- <p>This class is used to register plugin custom model validators which act on specified models. It contains the clean
12995
+ <p>This class is used to register plugin custom model validators which act on specified models. It contains the clean
12819
12996
  method which is overridden by plugin authors to execute custom validation logic. Plugin authors must raise
12820
12997
  ValidationError within this method to trigger validation error messages which are propagated to the user.
12821
12998
  A convenience method <code>validation_error(&lt;message&gt;)</code> may be used for this purpose.</p>
@@ -12825,6 +13002,11 @@ should be set as a string in the form <code>&lt;app_label&gt;.&lt;model_name&gt;
12825
13002
 
12826
13003
 
12827
13004
 
13005
+
13006
+
13007
+
13008
+
13009
+
12828
13010
  <div class="doc doc-children">
12829
13011
 
12830
13012
 
@@ -12846,7 +13028,7 @@ should be set as a string in the form <code>&lt;app_label&gt;.&lt;model_name&gt;
12846
13028
 
12847
13029
  <div class="doc doc-contents ">
12848
13030
 
12849
- <p>Implement custom model validation in the standard Django clean method pattern. The model instance is accessed
13031
+ <p>Implement custom model validation in the standard Django clean method pattern. The model instance is accessed
12850
13032
  with the <code>object</code> key within <code>self.context</code>, e.g. <code>self.context['object']</code>. ValidationError must be raised to
12851
13033
  prevent saving model instance changes, and propagate messages to the user. For convenience,
12852
13034
  <code>self.validation_error(&lt;message&gt;)</code> may be called to raise a ValidationError.</p>
@@ -12866,7 +13048,7 @@ prevent saving model instance changes, and propagate messages to the user. For c
12866
13048
 
12867
13049
  <div class="doc doc-contents ">
12868
13050
 
12869
- <p>Convenience method for raising <code>django.core.exceptions.ValidationError</code> which is required in order to
13051
+ <p>Convenience method for raising <code>django.core.exceptions.ValidationError</code> which is required in order to
12870
13052
  trigger validation error messages which are propagated to the user.</p>
12871
13053
 
12872
13054
  </div>
@@ -12895,7 +13077,7 @@ trigger validation error messages which are propagated to the user.</p>
12895
13077
  <div class="doc doc-contents ">
12896
13078
 
12897
13079
 
12898
- <p>DEPRECATED - use DynamicGroupsModelMixin instead if you need to mark a model as supporting Dynamic Groups.</p>
13080
+ <p>DEPRECATED - use DynamicGroupsModelMixin instead if you need to mark a model as supporting Dynamic Groups.</p>
12899
13081
  <p>This is necessary because DynamicGroupMixin was incorrectly not implemented as a subclass of models.Model,
12900
13082
  and so it cannot properly implement Model behaviors like the <code>static_group_association_set</code> ReverseRelation.
12901
13083
  However, adding this inheritance to DynamicGroupMixin itself would negatively impact existing migrations.
@@ -12909,6 +13091,11 @@ to the new DynamicGroupsModelMixin in its place.</p>
12909
13091
 
12910
13092
 
12911
13093
 
13094
+
13095
+
13096
+
13097
+
13098
+
12912
13099
  <div class="doc doc-children">
12913
13100
 
12914
13101
 
@@ -12933,7 +13120,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12933
13120
 
12934
13121
  <div class="doc doc-contents ">
12935
13122
 
12936
- <p>Return a queryset of (cached) <code>DynamicGroup</code> objects this instance is a member of.</p>
13123
+ <p>Return a queryset of (cached) <code>DynamicGroup</code> objects this instance is a member of.</p>
12937
13124
  </div>
12938
13125
 
12939
13126
  </div>
@@ -12954,7 +13141,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12954
13141
 
12955
13142
  <div class="doc doc-contents ">
12956
13143
 
12957
- <p>Deprecated - use <code>self.dynamic_groups</code> instead.</p>
13144
+ <p>Deprecated - use <code>self.dynamic_groups</code> instead.</p>
12958
13145
  </div>
12959
13146
 
12960
13147
  </div>
@@ -12975,7 +13162,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12975
13162
 
12976
13163
  <div class="doc doc-contents ">
12977
13164
 
12978
- <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
13165
+ <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
12979
13166
  </div>
12980
13167
 
12981
13168
  </div>
@@ -12996,7 +13183,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
12996
13183
 
12997
13184
  <div class="doc doc-contents ">
12998
13185
 
12999
- <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
13186
+ <p>Deprecated - use <code>list(self.dynamic_groups)</code> instead.</p>
13000
13187
  </div>
13001
13188
 
13002
13189
  </div>
@@ -13014,7 +13201,7 @@ to the new DynamicGroupsModelMixin in its place.</p>
13014
13201
 
13015
13202
  <div class="doc doc-contents ">
13016
13203
 
13017
- <p>Return the dynamic groups URL for a given instance.</p>
13204
+ <p>Return the dynamic groups URL for a given instance.</p>
13018
13205
 
13019
13206
  </div>
13020
13207
 
@@ -13041,10 +13228,15 @@ to the new DynamicGroupsModelMixin in its place.</p>
13041
13228
 
13042
13229
  <div class="doc doc-contents ">
13043
13230
  <p class="doc doc-class-bases">
13044
- Bases: <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupMixin" optional hover>DynamicGroupMixin</autoref></code>, <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
13231
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupMixin" href="#nautobot.apps.models.DynamicGroupMixin">DynamicGroupMixin</a></code>, <code><span title="django.db.models.Model">Model</span></code></p>
13232
+
13233
+
13234
+ <p>Add this to models to make them fully support Dynamic Groups.</p>
13235
+
13236
+
13237
+
13045
13238
 
13046
13239
 
13047
- <p>Add this to models to make them fully support Dynamic Groups.</p>
13048
13240
 
13049
13241
 
13050
13242
 
@@ -13080,16 +13272,21 @@ to the new DynamicGroupsModelMixin in its place.</p>
13080
13272
 
13081
13273
  <div class="doc doc-contents ">
13082
13274
  <p class="doc doc-class-bases">
13083
- Bases: <code><autoref identifier="nautobot.core.models.query_functions.JSONBAgg" optional hover>JSONBAgg</autoref></code></p>
13275
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.query_functions.JSONBAgg" href="#nautobot.apps.models.JSONBAgg">JSONBAgg</a></code></p>
13084
13276
 
13085
13277
 
13086
- <p>JSONBAgg is a builtin aggregation function which means it includes the use of a GROUP BY clause.
13278
+ <p>JSONBAgg is a builtin aggregation function which means it includes the use of a GROUP BY clause.
13087
13279
  When used as an annotation for collecting config context data objects, the GROUP BY is
13088
13280
  incorrect. This subclass overrides the Django ORM aggregation control to remove the GROUP BY.</p>
13089
13281
 
13090
13282
 
13091
13283
 
13092
13284
 
13285
+
13286
+
13287
+
13288
+
13289
+
13093
13290
  <div class="doc doc-children">
13094
13291
 
13095
13292
 
@@ -13121,15 +13318,20 @@ incorrect. This subclass overrides the Django ORM aggregation control to remove
13121
13318
 
13122
13319
  <div class="doc doc-contents ">
13123
13320
  <p class="doc doc-class-bases">
13124
- Bases: <code><autoref identifier="django.core.validators.URLValidator" optional hover>URLValidator</autoref></code></p>
13321
+ Bases: <code><span title="django.core.validators.URLValidator">URLValidator</span></code></p>
13125
13322
 
13126
13323
 
13127
- <p>Extends Django's built-in URLValidator to permit the use of hostnames with no domain extension and enforce allowed
13324
+ <p>Extends Django's built-in URLValidator to permit the use of hostnames with no domain extension and enforce allowed
13128
13325
  schemes specified in the configuration.</p>
13129
13326
 
13130
13327
 
13131
13328
 
13132
13329
 
13330
+
13331
+
13332
+
13333
+
13334
+
13133
13335
  <div class="doc doc-children">
13134
13336
 
13135
13337
 
@@ -13161,10 +13363,15 @@ schemes specified in the configuration.</p>
13161
13363
 
13162
13364
  <div class="doc doc-contents ">
13163
13365
  <p class="doc doc-class-bases">
13164
- Bases: <code><autoref identifier="django.core.validators.BaseValidator" optional hover>BaseValidator</autoref></code></p>
13366
+ Bases: <code><span title="django.core.validators.BaseValidator">BaseValidator</span></code></p>
13367
+
13368
+
13369
+ <p>Ensure that a field's value is not equal to any of the specified values.</p>
13370
+
13371
+
13372
+
13165
13373
 
13166
13374
 
13167
- <p>Ensure that a field's value is not equal to any of the specified values.</p>
13168
13375
 
13169
13376
 
13170
13377
 
@@ -13200,10 +13407,10 @@ schemes specified in the configuration.</p>
13200
13407
 
13201
13408
  <div class="doc doc-contents ">
13202
13409
  <p class="doc doc-class-bases">
13203
- Bases: <code><autoref identifier="nautobot.core.models.fields.ForeignKeyWithAutoRelatedName" optional hover>ForeignKeyWithAutoRelatedName</autoref></code></p>
13410
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.fields.ForeignKeyWithAutoRelatedName" href="#nautobot.apps.models.ForeignKeyWithAutoRelatedName">ForeignKeyWithAutoRelatedName</a></code></p>
13204
13411
 
13205
13412
 
13206
- <p>An abstract model field that automatically restricts ForeignKey options based on content_types.</p>
13413
+ <p>An abstract model field that automatically restricts ForeignKey options based on content_types.</p>
13207
13414
  <p>For instance, if the model "Role" contains two records: role_1 and role_2, role_1's content_types
13208
13415
  are set to "dcim.location" and "dcim.device" while the role_2's content_types are set to
13209
13416
  "circuit.circuit" and "dcim.location."</p>
@@ -13220,6 +13427,11 @@ while role_1 &amp; role_2 are both available for the Location model.</p>
13220
13427
 
13221
13428
 
13222
13429
 
13430
+
13431
+
13432
+
13433
+
13434
+
13223
13435
  <div class="doc doc-children">
13224
13436
 
13225
13437
 
@@ -13241,7 +13453,7 @@ while role_1 &amp; role_2 are both available for the Location model.</p>
13241
13453
 
13242
13454
  <div class="doc doc-contents ">
13243
13455
 
13244
- <p>Return a prepped formfield for use in model forms.</p>
13456
+ <p>Return a prepped formfield for use in model forms.</p>
13245
13457
 
13246
13458
  </div>
13247
13459
 
@@ -13258,7 +13470,7 @@ while role_1 &amp; role_2 are both available for the Location model.</p>
13258
13470
 
13259
13471
  <div class="doc doc-contents ">
13260
13472
 
13261
- <p>Limit this field to only objects which are assigned to this model's content-type.</p>
13473
+ <p>Limit this field to only objects which are assigned to this model's content-type.</p>
13262
13474
  <p>Note that this is implemented via specifying <code>content_types__app_label=</code> and <code>content_types__model=</code>
13263
13475
  rather than via the more obvious <code>content_types=ContentType.objects.get_for_model(self.model)</code>
13264
13476
  because the latter approach would involve a database query, and in some cases
@@ -13289,10 +13501,10 @@ because the latter approach would involve a database query, and in some cases
13289
13501
 
13290
13502
  <div class="doc doc-contents ">
13291
13503
  <p class="doc doc-class-bases">
13292
- Bases: <code><autoref identifier="django.db.models.ForeignKey" optional hover>ForeignKey</autoref></code></p>
13504
+ Bases: <code><span title="django.db.models.ForeignKey">ForeignKey</span></code></p>
13293
13505
 
13294
13506
 
13295
- <p>Extend base ForeignKey functionality to create a smarter default <code>related_name</code>.</p>
13507
+ <p>Extend base ForeignKey functionality to create a smarter default <code>related_name</code>.</p>
13296
13508
  <p>For example, "ip_addresses" instead of "ipaddress_set", "ipaddresss", or "ipam_ipaddress_related".</p>
13297
13509
  <p>Primarily useful for cases of abstract base classes that define ForeignKeys, such as
13298
13510
  <code>nautobot.dcim.models.device_components.ComponentModel</code>.</p>
@@ -13300,6 +13512,11 @@ because the latter approach would involve a database query, and in some cases
13300
13512
 
13301
13513
 
13302
13514
 
13515
+
13516
+
13517
+
13518
+
13519
+
13303
13520
  <div class="doc doc-children">
13304
13521
 
13305
13522
 
@@ -13331,16 +13548,21 @@ because the latter approach would involve a database query, and in some cases
13331
13548
 
13332
13549
  <div class="doc doc-contents ">
13333
13550
  <p class="doc doc-class-bases">
13334
- Bases: <code><autoref identifier="django.db.models.JSONField" optional hover>JSONField</autoref></code></p>
13551
+ Bases: <code><span title="django.db.models.JSONField">JSONField</span></code></p>
13335
13552
 
13336
13553
 
13337
- <p>An ArrayField implementation backed JSON storage.
13554
+ <p>An ArrayField implementation backed JSON storage.
13338
13555
  Replicates ArrayField's base field validation.</p>
13339
13556
  <p>Supports choices in the base field.</p>
13340
13557
 
13341
13558
 
13342
13559
 
13343
13560
 
13561
+
13562
+
13563
+
13564
+
13565
+
13344
13566
  <div class="doc doc-children">
13345
13567
 
13346
13568
 
@@ -13391,7 +13613,7 @@ Replicates ArrayField's base field validation.</p>
13391
13613
 
13392
13614
  <div class="doc doc-contents ">
13393
13615
 
13394
- <p>Return a django.forms.Field instance for this field.</p>
13616
+ <p>Return a django.forms.Field instance for this field.</p>
13395
13617
 
13396
13618
  </div>
13397
13619
 
@@ -13408,7 +13630,7 @@ Replicates ArrayField's base field validation.</p>
13408
13630
 
13409
13631
  <div class="doc doc-contents ">
13410
13632
 
13411
- <p>Perform preliminary non-db specific value checks and conversions.</p>
13633
+ <p>Perform preliminary non-db specific value checks and conversions.</p>
13412
13634
 
13413
13635
  </div>
13414
13636
 
@@ -13425,7 +13647,7 @@ Replicates ArrayField's base field validation.</p>
13425
13647
 
13426
13648
  <div class="doc doc-contents ">
13427
13649
 
13428
- <p>Runs all validators against <code>value</code> and raise ValidationError if necessary.
13650
+ <p>Runs all validators against <code>value</code> and raise ValidationError if necessary.
13429
13651
  Some validators can't be created at field initialization time.</p>
13430
13652
 
13431
13653
  </div>
@@ -13443,7 +13665,7 @@ Some validators can't be created at field initialization time.</p>
13443
13665
 
13444
13666
  <div class="doc doc-contents ">
13445
13667
 
13446
- <p>Convert <code>value</code> into JSON, raising django.core.exceptions.ValidationError
13668
+ <p>Convert <code>value</code> into JSON, raising django.core.exceptions.ValidationError
13447
13669
  if the data can't be converted. Return the converted value.</p>
13448
13670
 
13449
13671
  </div>
@@ -13461,7 +13683,7 @@ if the data can't be converted. Return the converted value.</p>
13461
13683
 
13462
13684
  <div class="doc doc-contents ">
13463
13685
 
13464
- <p>Validate <code>value</code> and raise ValidationError if necessary.</p>
13686
+ <p>Validate <code>value</code> and raise ValidationError if necessary.</p>
13465
13687
 
13466
13688
  </div>
13467
13689
 
@@ -13478,7 +13700,7 @@ if the data can't be converted. Return the converted value.</p>
13478
13700
 
13479
13701
  <div class="doc doc-contents ">
13480
13702
 
13481
- <p>Return a string value of this field from the passed obj.
13703
+ <p>Return a string value of this field from the passed obj.
13482
13704
  This is used by the serialization framework.</p>
13483
13705
 
13484
13706
  </div>
@@ -13506,10 +13728,10 @@ This is used by the serialization framework.</p>
13506
13728
 
13507
13729
  <div class="doc doc-contents ">
13508
13730
  <p class="doc doc-class-bases">
13509
- Bases: <code><autoref identifier="django.db.models.Aggregate" optional hover>Aggregate</autoref></code></p>
13731
+ Bases: <code><span title="django.db.models.Aggregate">Aggregate</span></code></p>
13510
13732
 
13511
13733
 
13512
- <p>Like django.contrib.postgres.aggregates.JSONBAgg, but different.</p>
13734
+ <p>Like django.contrib.postgres.aggregates.JSONBAgg, but different.</p>
13513
13735
  <ol>
13514
13736
  <li>Supports both Postgres (JSONB_AGG) and MySQL (JSON_ARRAYAGG)</li>
13515
13737
  <li>Does not support <code>ordering</code> as JSON_ARRAYAGG does not guarantee ordering.</li>
@@ -13518,6 +13740,11 @@ This is used by the serialization framework.</p>
13518
13740
 
13519
13741
 
13520
13742
 
13743
+
13744
+
13745
+
13746
+
13747
+
13521
13748
  <div class="doc doc-children">
13522
13749
 
13523
13750
 
@@ -13549,10 +13776,15 @@ This is used by the serialization framework.</p>
13549
13776
 
13550
13777
  <div class="doc doc-contents ">
13551
13778
  <p class="doc doc-class-bases">
13552
- Bases: <code><autoref identifier="django.db.models.URLField" optional hover>URLField</autoref></code></p>
13779
+ Bases: <code><span title="django.db.models.URLField">URLField</span></code></p>
13780
+
13781
+
13782
+ <p>Like models.URLField, but using validators.EnhancedURLValidator and forms.LaxURLField.</p>
13783
+
13784
+
13785
+
13553
13786
 
13554
13787
 
13555
- <p>Like models.URLField, but using validators.EnhancedURLValidator and forms.LaxURLField.</p>
13556
13788
 
13557
13789
 
13558
13790
 
@@ -13588,15 +13820,20 @@ This is used by the serialization framework.</p>
13588
13820
 
13589
13821
  <div class="doc doc-contents ">
13590
13822
  <p class="doc doc-class-bases">
13591
- Bases: <code><autoref identifier="nautobot.extras.models.change_logging.ChangeLoggedModel" optional hover>ChangeLoggedModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.ContactMixin" optional hover>ContactMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.customfields.CustomFieldModel" optional hover>CustomFieldModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupsModelMixin" optional hover>DynamicGroupsModelMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.NotesMixin" optional hover>NotesMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.relationships.RelationshipModel" optional hover>RelationshipModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.SavedViewMixin" optional hover>SavedViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref></code></p>
13823
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.change_logging.ChangeLoggedModel" href="#nautobot.apps.models.ChangeLoggedModel">ChangeLoggedModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.ContactMixin" href="#nautobot.apps.models.ContactMixin">ContactMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.customfields.CustomFieldModel" href="#nautobot.apps.models.CustomFieldModel">CustomFieldModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupsModelMixin" href="#nautobot.apps.models.DynamicGroupsModelMixin">DynamicGroupsModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.NotesMixin" href="#nautobot.apps.models.NotesMixin">NotesMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.relationships.RelationshipModel" href="#nautobot.apps.models.RelationshipModel">RelationshipModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.SavedViewMixin" href="#nautobot.apps.models.SavedViewMixin">SavedViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a></code></p>
13592
13824
 
13593
13825
 
13594
- <p>This abstract base properties model contains fields and functionality that are
13826
+ <p>This abstract base properties model contains fields and functionality that are
13595
13827
  shared amongst models that requires these fields: name, color, content_types and description.</p>
13596
13828
 
13597
13829
 
13598
13830
 
13599
13831
 
13832
+
13833
+
13834
+
13835
+
13836
+
13600
13837
  <div class="doc doc-children">
13601
13838
 
13602
13839
 
@@ -13628,16 +13865,21 @@ shared amongst models that requires these fields: name, color, content_types and
13628
13865
 
13629
13866
  <div class="doc doc-contents ">
13630
13867
  <p class="doc doc-class-bases">
13631
- Bases: <code><autoref identifier="django.db.models.CharField" optional hover>CharField</autoref></code></p>
13868
+ Bases: <code><span title="django.db.models.CharField">CharField</span></code></p>
13632
13869
 
13633
13870
 
13634
- <p>A field which stores a naturalized representation of its target field, to be used for ordering its parent model.</p>
13871
+ <p>A field which stores a naturalized representation of its target field, to be used for ordering its parent model.</p>
13635
13872
  <p>:param target_field: Name of the field of the parent model to be naturalized
13636
13873
  :param naturalize_function: The function used to generate a naturalized value (optional)</p>
13637
13874
 
13638
13875
 
13639
13876
 
13640
13877
 
13878
+
13879
+
13880
+
13881
+
13882
+
13641
13883
  <div class="doc doc-children">
13642
13884
 
13643
13885
 
@@ -13659,7 +13901,7 @@ shared amongst models that requires these fields: name, color, content_types and
13659
13901
 
13660
13902
  <div class="doc doc-contents ">
13661
13903
 
13662
- <p>Generate a naturalized value from the target field</p>
13904
+ <p>Generate a naturalized value from the target field</p>
13663
13905
 
13664
13906
  </div>
13665
13907
 
@@ -13687,7 +13929,12 @@ shared amongst models that requires these fields: name, color, content_types and
13687
13929
  <div class="doc doc-contents ">
13688
13930
 
13689
13931
 
13690
- <p>Adds a <code>notes</code> property that returns a queryset of <code>Notes</code> membership.</p>
13932
+ <p>Adds a <code>notes</code> property that returns a queryset of <code>Notes</code> membership.</p>
13933
+
13934
+
13935
+
13936
+
13937
+
13691
13938
 
13692
13939
 
13693
13940
 
@@ -13716,7 +13963,7 @@ shared amongst models that requires these fields: name, color, content_types and
13716
13963
 
13717
13964
  <div class="doc doc-contents ">
13718
13965
 
13719
- <p>Return a <code>Notes</code> queryset for this instance.</p>
13966
+ <p>Return a <code>Notes</code> queryset for this instance.</p>
13720
13967
  </div>
13721
13968
 
13722
13969
  </div>
@@ -13734,7 +13981,7 @@ shared amongst models that requires these fields: name, color, content_types and
13734
13981
 
13735
13982
  <div class="doc doc-contents ">
13736
13983
 
13737
- <p>Return the notes URL for a given instance.</p>
13984
+ <p>Return the notes URL for a given instance.</p>
13738
13985
 
13739
13986
  </div>
13740
13987
 
@@ -13761,10 +14008,10 @@ shared amongst models that requires these fields: name, color, content_types and
13761
14008
 
13762
14009
  <div class="doc doc-contents ">
13763
14010
  <p class="doc doc-class-bases">
13764
- Bases: <code><autoref identifier="nautobot.extras.models.change_logging.ChangeLoggedModel" optional hover>ChangeLoggedModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.ContactMixin" optional hover>ContactMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.customfields.CustomFieldModel" optional hover>CustomFieldModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupsModelMixin" optional hover>DynamicGroupsModelMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.NotesMixin" optional hover>NotesMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.relationships.RelationshipModel" optional hover>RelationshipModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.SavedViewMixin" optional hover>SavedViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref></code></p>
14011
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.change_logging.ChangeLoggedModel" href="#nautobot.apps.models.ChangeLoggedModel">ChangeLoggedModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.ContactMixin" href="#nautobot.apps.models.ContactMixin">ContactMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.customfields.CustomFieldModel" href="#nautobot.apps.models.CustomFieldModel">CustomFieldModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupsModelMixin" href="#nautobot.apps.models.DynamicGroupsModelMixin">DynamicGroupsModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.NotesMixin" href="#nautobot.apps.models.NotesMixin">NotesMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.relationships.RelationshipModel" href="#nautobot.apps.models.RelationshipModel">RelationshipModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.SavedViewMixin" href="#nautobot.apps.models.SavedViewMixin">SavedViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a></code></p>
13765
14012
 
13766
14013
 
13767
- <p>Base abstract model for all organizational models.</p>
14014
+ <p>Base abstract model for all organizational models.</p>
13768
14015
  <p>Organizational models aid the primary models by building structured relationships
13769
14016
  and logical groups, or categorizations. Organizational models do not typically
13770
14017
  represent concrete networking resources or assets, but rather they enable user
@@ -13774,6 +14021,11 @@ Device Role, Rack Group, Status, Manufacturer, and Platform.</p>
13774
14021
 
13775
14022
 
13776
14023
 
14024
+
14025
+
14026
+
14027
+
14028
+
13777
14029
  <div class="doc doc-children">
13778
14030
 
13779
14031
 
@@ -13805,10 +14057,10 @@ Device Role, Rack Group, Status, Manufacturer, and Platform.</p>
13805
14057
 
13806
14058
  <div class="doc doc-contents ">
13807
14059
  <p class="doc doc-class-bases">
13808
- Bases: <code><autoref identifier="nautobot.extras.models.change_logging.ChangeLoggedModel" optional hover>ChangeLoggedModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.ContactMixin" optional hover>ContactMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.customfields.CustomFieldModel" optional hover>CustomFieldModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.DynamicGroupsModelMixin" optional hover>DynamicGroupsModelMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.NotesMixin" optional hover>NotesMixin</autoref></code>, <code><autoref identifier="nautobot.extras.models.relationships.RelationshipModel" optional hover>RelationshipModel</autoref></code>, <code><autoref identifier="nautobot.extras.models.mixins.SavedViewMixin" optional hover>SavedViewMixin</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref></code></p>
14060
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.change_logging.ChangeLoggedModel" href="#nautobot.apps.models.ChangeLoggedModel">ChangeLoggedModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.ContactMixin" href="#nautobot.apps.models.ContactMixin">ContactMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.customfields.CustomFieldModel" href="#nautobot.apps.models.CustomFieldModel">CustomFieldModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.DynamicGroupsModelMixin" href="#nautobot.apps.models.DynamicGroupsModelMixin">DynamicGroupsModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.NotesMixin" href="#nautobot.apps.models.NotesMixin">NotesMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.relationships.RelationshipModel" href="#nautobot.apps.models.RelationshipModel">RelationshipModel</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.models.mixins.SavedViewMixin" href="#nautobot.apps.models.SavedViewMixin">SavedViewMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a></code></p>
13809
14061
 
13810
14062
 
13811
- <p>Base abstract model for all primary models.</p>
14063
+ <p>Base abstract model for all primary models.</p>
13812
14064
  <p>A primary model is one which is materialistically relevant to the network datamodel.
13813
14065
  Such models form the basis of major elements of the data model, like Device,
13814
14066
  IP Address, Location, VLAN, Virtual Machine, etc. Primary models usually represent
@@ -13817,6 +14069,11 @@ tangible or logical resources on the network, or within the organization.</p>
13817
14069
 
13818
14070
 
13819
14071
 
14072
+
14073
+
14074
+
14075
+
14076
+
13820
14077
  <div class="doc doc-children">
13821
14078
 
13822
14079
 
@@ -13848,10 +14105,15 @@ tangible or logical resources on the network, or within the organization.</p>
13848
14105
 
13849
14106
  <div class="doc doc-contents ">
13850
14107
  <p class="doc doc-class-bases">
13851
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
14108
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
14109
+
14110
+
14111
+ <p>Abstract class for any model which may have custom relationships associated with it.</p>
14112
+
14113
+
14114
+
13852
14115
 
13853
14116
 
13854
- <p>Abstract class for any model which may have custom relationships associated with it.</p>
13855
14117
 
13856
14118
 
13857
14119
 
@@ -13877,7 +14139,7 @@ tangible or logical resources on the network, or within the organization.</p>
13877
14139
 
13878
14140
  <div class="doc doc-contents ">
13879
14141
 
13880
- <p>Return a dictionary of RelationshipAssociation querysets for all custom relationships</p>
14142
+ <p>Return a dictionary of RelationshipAssociation querysets for all custom relationships</p>
13881
14143
 
13882
14144
 
13883
14145
  <p><span class="doc-section-title">Returns:</span></p>
@@ -13891,7 +14153,7 @@ tangible or logical resources on the network, or within the organization.</p>
13891
14153
  <tbody>
13892
14154
  <tr class="doc-section-item">
13893
14155
  <td>
13894
- <code><autoref identifier="dict" optional>dict</autoref></code>
14156
+ <code>dict</code>
13895
14157
  </td>
13896
14158
  <td>
13897
14159
  <div class="doc-md-description">
@@ -13930,7 +14192,7 @@ tangible or logical resources on the network, or within the organization.</p>
13930
14192
 
13931
14193
  <div class="doc doc-contents ">
13932
14194
 
13933
- <p>Return a dictionary of relationships with the label and the value or the queryset for each.</p>
14195
+ <p>Return a dictionary of relationships with the label and the value or the queryset for each.</p>
13934
14196
  <p>Used for rendering relationships in the UI; see nautobot/core/templates/inc/relationships_table_rows.html</p>
13935
14197
 
13936
14198
 
@@ -13945,7 +14207,7 @@ tangible or logical resources on the network, or within the organization.</p>
13945
14207
  <tbody>
13946
14208
  <tr class="doc-section-item">
13947
14209
  <td>
13948
- <code><autoref identifier="dict" optional>dict</autoref></code>
14210
+ <code>dict</code>
13949
14211
  </td>
13950
14212
  <td>
13951
14213
  <div class="doc-md-description">
@@ -13994,7 +14256,7 @@ tangible or logical resources on the network, or within the organization.</p>
13994
14256
 
13995
14257
  <div class="doc doc-contents ">
13996
14258
 
13997
- <p>Same docstring as get_relationships_data() above except this only returns relationships
14259
+ <p>Same docstring as get_relationships_data() above except this only returns relationships
13998
14260
  where advanced_ui==True for displaying in the 'Advanced' tab on the object's page</p>
13999
14261
 
14000
14262
  </div>
@@ -14012,7 +14274,7 @@ where advanced_ui==True for displaying in the 'Advanced' tab on the object's pag
14012
14274
 
14013
14275
  <div class="doc doc-contents ">
14014
14276
 
14015
- <p>Same docstring as get_relationships_data() above except this only returns relationships
14277
+ <p>Same docstring as get_relationships_data() above except this only returns relationships
14016
14278
  where advanced_ui==False for displaying in the main object detail tab on the object's page</p>
14017
14279
 
14018
14280
  </div>
@@ -14030,7 +14292,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14030
14292
 
14031
14293
  <div class="doc doc-contents ">
14032
14294
 
14033
- <p>Alternative version of get_relationships().</p>
14295
+ <p>Alternative version of get_relationships().</p>
14034
14296
 
14035
14297
  </div>
14036
14298
 
@@ -14065,9 +14327,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14065
14327
  </thead>
14066
14328
  <tbody>
14067
14329
  <tr class="doc-section-item">
14068
- <td><code>output_for</code></td>
14069
14330
  <td>
14070
- <code><autoref identifier="str" optional>str</autoref></code>
14331
+ <code>output_for</code>
14332
+ </td>
14333
+ <td>
14334
+ <code>str</code>
14071
14335
  </td>
14072
14336
  <td>
14073
14337
  <div class="doc-md-description">
@@ -14079,9 +14343,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14079
14343
  </td>
14080
14344
  </tr>
14081
14345
  <tr class="doc-section-item">
14082
- <td><code>initial_data</code></td>
14083
14346
  <td>
14084
- <code><autoref identifier="dict" optional>dict</autoref></code>
14347
+ <code>initial_data</code>
14348
+ </td>
14349
+ <td>
14350
+ <code>dict</code>
14085
14351
  </td>
14086
14352
  <td>
14087
14353
  <div class="doc-md-description">
@@ -14093,9 +14359,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14093
14359
  </td>
14094
14360
  </tr>
14095
14361
  <tr class="doc-section-item">
14096
- <td><code>relationships_key_specified</code></td>
14097
14362
  <td>
14098
- <code><autoref identifier="bool" optional>bool</autoref></code>
14363
+ <code>relationships_key_specified</code>
14364
+ </td>
14365
+ <td>
14366
+ <code>bool</code>
14099
14367
  </td>
14100
14368
  <td>
14101
14369
  <div class="doc-md-description">
@@ -14107,9 +14375,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14107
14375
  </td>
14108
14376
  </tr>
14109
14377
  <tr class="doc-section-item">
14110
- <td><code>instance</code></td>
14111
14378
  <td>
14112
- <code><autoref identifier="Optional" optional>Optional</autoref>[<autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref>]</code>
14379
+ <code>instance</code>
14380
+ </td>
14381
+ <td>
14382
+ <code>Optional[<a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a>]</code>
14113
14383
  </td>
14114
14384
  <td>
14115
14385
  <div class="doc-md-description">
@@ -14122,7 +14392,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14122
14392
  </tr>
14123
14393
  </tbody>
14124
14394
  </table>
14125
- <p>Returns:
14395
+ <p>Returns:
14126
14396
  (list[dict]): List of field error dicts if any are found</p>
14127
14397
 
14128
14398
  </div>
@@ -14150,7 +14420,12 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14150
14420
 
14151
14421
  <div class="doc doc-contents ">
14152
14422
  <p class="doc doc-class-bases">
14153
- Bases: <code><autoref identifier="nautobot.core.models.querysets.CompositeKeyQuerySetMixin" optional hover>CompositeKeyQuerySetMixin</autoref></code>, <code><autoref identifier="django.db.models.QuerySet" optional hover>QuerySet</autoref></code></p>
14423
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.querysets.CompositeKeyQuerySetMixin" href="#nautobot.apps.models.CompositeKeyQuerySetMixin">CompositeKeyQuerySetMixin</a></code>, <code><span title="django.db.models.QuerySet">QuerySet</span></code></p>
14424
+
14425
+
14426
+
14427
+
14428
+
14154
14429
 
14155
14430
 
14156
14431
 
@@ -14177,7 +14452,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14177
14452
 
14178
14453
  <div class="doc doc-contents ">
14179
14454
 
14180
- <p>Check whether the given user can perform the given action with regard to the given instance of this model.</p>
14455
+ <p>Check whether the given user can perform the given action with regard to the given instance of this model.</p>
14181
14456
  <p>Either instance or pk must be specified, but not both.</p>
14182
14457
 
14183
14458
 
@@ -14193,9 +14468,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14193
14468
  </thead>
14194
14469
  <tbody>
14195
14470
  <tr class="doc-section-item">
14196
- <td><code>user</code></td>
14197
14471
  <td>
14198
- <code><autoref identifier="User" optional>User</autoref></code>
14472
+ <code>user</code>
14473
+ </td>
14474
+ <td>
14475
+ <code>User</code>
14199
14476
  </td>
14200
14477
  <td>
14201
14478
  <div class="doc-md-description">
@@ -14207,9 +14484,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14207
14484
  </td>
14208
14485
  </tr>
14209
14486
  <tr class="doc-section-item">
14210
- <td><code>instance</code></td>
14211
14487
  <td>
14212
- <code><autoref identifier="self.model" optional hover>model</autoref></code>
14488
+ <code>instance</code>
14489
+ </td>
14490
+ <td>
14491
+ <code><span title="self.model">model</span></code>
14213
14492
  </td>
14214
14493
  <td>
14215
14494
  <div class="doc-md-description">
@@ -14221,9 +14500,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14221
14500
  </td>
14222
14501
  </tr>
14223
14502
  <tr class="doc-section-item">
14224
- <td><code>pk</code></td>
14225
14503
  <td>
14226
- <code><autoref identifier="uuid" optional>uuid</autoref></code>
14504
+ <code>pk</code>
14505
+ </td>
14506
+ <td>
14507
+ <code>uuid</code>
14227
14508
  </td>
14228
14509
  <td>
14229
14510
  <div class="doc-md-description">
@@ -14235,9 +14516,11 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14235
14516
  </td>
14236
14517
  </tr>
14237
14518
  <tr class="doc-section-item">
14238
- <td><code>action</code></td>
14239
14519
  <td>
14240
- <code><autoref identifier="str" optional>str</autoref></code>
14520
+ <code>action</code>
14521
+ </td>
14522
+ <td>
14523
+ <code>str</code>
14241
14524
  </td>
14242
14525
  <td>
14243
14526
  <div class="doc-md-description">
@@ -14263,7 +14546,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14263
14546
  <tbody>
14264
14547
  <tr class="doc-section-item">
14265
14548
  <td>
14266
- <code><autoref identifier="bool" optional>bool</autoref></code>
14549
+ <code>bool</code>
14267
14550
  </td>
14268
14551
  <td>
14269
14552
  <div class="doc-md-description">
@@ -14289,7 +14572,7 @@ where advanced_ui==False for displaying in the main object detail tab on the obj
14289
14572
 
14290
14573
  <div class="doc doc-contents ">
14291
14574
 
14292
- <p>Wrapper for <code>QuerySet.values_list()</code> that adds the <code>distinct()</code> query to return a list of unique values.</p>
14575
+ <p>Wrapper for <code>QuerySet.values_list()</code> that adds the <code>distinct()</code> query to return a list of unique values.</p>
14293
14576
 
14294
14577
 
14295
14578
  <details class="note" open>
@@ -14310,9 +14593,11 @@ in the Django <code>distinct()</code> documentation at https://docs.djangoprojec
14310
14593
  </thead>
14311
14594
  <tbody>
14312
14595
  <tr class="doc-section-item">
14313
- <td><code>*fields</code></td>
14314
14596
  <td>
14315
- <code><autoref identifier="str" optional>str</autoref></code>
14597
+ <code>*fields</code>
14598
+ </td>
14599
+ <td>
14600
+ <code>str</code>
14316
14601
  </td>
14317
14602
  <td>
14318
14603
  <div class="doc-md-description">
@@ -14324,9 +14609,11 @@ in the Django <code>distinct()</code> documentation at https://docs.djangoprojec
14324
14609
  </td>
14325
14610
  </tr>
14326
14611
  <tr class="doc-section-item">
14327
- <td><code>flat</code></td>
14328
14612
  <td>
14329
- <code><autoref identifier="bool" optional>bool</autoref></code>
14613
+ <code>flat</code>
14614
+ </td>
14615
+ <td>
14616
+ <code>bool</code>
14330
14617
  </td>
14331
14618
  <td>
14332
14619
  <div class="doc-md-description">
@@ -14339,9 +14626,11 @@ Defaults to False.</p>
14339
14626
  </td>
14340
14627
  </tr>
14341
14628
  <tr class="doc-section-item">
14342
- <td><code>named</code></td>
14343
14629
  <td>
14344
- <code><autoref identifier="bool" optional>bool</autoref></code>
14630
+ <code>named</code>
14631
+ </td>
14632
+ <td>
14633
+ <code>bool</code>
14345
14634
  </td>
14346
14635
  <td>
14347
14636
  <div class="doc-md-description">
@@ -14367,7 +14656,7 @@ Defaults to False.</p>
14367
14656
  <tbody>
14368
14657
  <tr class="doc-section-item">
14369
14658
  <td>
14370
- <code><autoref identifier="django.db.models.QuerySet" optional hover>QuerySet</autoref></code>
14659
+ <code><span title="django.db.models.QuerySet">QuerySet</span></code>
14371
14660
  </td>
14372
14661
  <td>
14373
14662
  <div class="doc-md-description">
@@ -14393,7 +14682,7 @@ Defaults to False.</p>
14393
14682
 
14394
14683
  <div class="doc doc-contents ">
14395
14684
 
14396
- <p>Filter the QuerySet to return only objects on which the specified user has been granted the specified
14685
+ <p>Filter the QuerySet to return only objects on which the specified user has been granted the specified
14397
14686
  permission.</p>
14398
14687
  <p>:param user: User instance
14399
14688
  :param action: The action which must be permitted (e.g. "view" for "dcim.view_location"); default is 'view'</p>
@@ -14423,10 +14712,15 @@ permission.</p>
14423
14712
 
14424
14713
  <div class="doc doc-contents ">
14425
14714
  <p class="doc doc-class-bases">
14426
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
14715
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
14716
+
14717
+
14718
+ <p>Abstract mixin for enabling Saved View functionality to a given model class.</p>
14719
+
14720
+
14721
+
14427
14722
 
14428
14723
 
14429
- <p>Abstract mixin for enabling Saved View functionality to a given model class.</p>
14430
14724
 
14431
14725
 
14432
14726
 
@@ -14462,10 +14756,10 @@ permission.</p>
14462
14756
 
14463
14757
  <div class="doc doc-contents ">
14464
14758
  <p class="doc doc-class-bases">
14465
- Bases: <code><autoref identifier="nautobot.core.models.fields.ForeignKeyLimitedByContentTypes" optional hover>ForeignKeyLimitedByContentTypes</autoref></code></p>
14759
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.models.fields.ForeignKeyLimitedByContentTypes" href="#nautobot.apps.models.ForeignKeyLimitedByContentTypes">ForeignKeyLimitedByContentTypes</a></code></p>
14466
14760
 
14467
14761
 
14468
- <p>Model database field that automatically limits custom choices.</p>
14762
+ <p>Model database field that automatically limits custom choices.</p>
14469
14763
  <p>The limit_choices_to for the field are automatically derived from:</p>
14470
14764
  <div class="highlight"><pre><span></span><code>- the content-type to which the field is attached (e.g. `dcim.device`)
14471
14765
  </code></pre></div>
@@ -14473,6 +14767,11 @@ permission.</p>
14473
14767
 
14474
14768
 
14475
14769
 
14770
+
14771
+
14772
+
14773
+
14774
+
14476
14775
  <div class="doc doc-children">
14477
14776
 
14478
14777
 
@@ -14494,7 +14793,7 @@ permission.</p>
14494
14793
 
14495
14794
  <div class="doc doc-contents ">
14496
14795
 
14497
- <p>Overload default so that we can assert that <code>.get_FOO_display</code> is
14796
+ <p>Overload default so that we can assert that <code>.get_FOO_display</code> is
14498
14797
  attached to any model that is using a <code>StatusField</code>.</p>
14499
14798
  <p>Using <code>.contribute_to_class()</code> is how field objects get added to the model
14500
14799
  at during the instance preparation. This is also where any custom model
@@ -14528,15 +14827,20 @@ having to define it on the model yourself.</p>
14528
14827
 
14529
14828
  <div class="doc doc-contents ">
14530
14829
  <p class="doc doc-class-bases">
14531
- Bases: <code><autoref identifier="django.db.models.Model" optional hover>Model</autoref></code></p>
14830
+ Bases: <code><span title="django.db.models.Model">Model</span></code></p>
14532
14831
 
14533
14832
 
14534
- <p>Deprecated abstract base class for any model which may have statuses.</p>
14833
+ <p>Deprecated abstract base class for any model which may have statuses.</p>
14535
14834
  <p>Just directly include a StatusField instead for any new models.</p>
14536
14835
 
14537
14836
 
14538
14837
 
14539
14838
 
14839
+
14840
+
14841
+
14842
+
14843
+
14540
14844
  <div class="doc doc-children">
14541
14845
 
14542
14846
 
@@ -14568,10 +14872,15 @@ having to define it on the model yourself.</p>
14568
14872
 
14569
14873
  <div class="doc doc-contents ">
14570
14874
  <p class="doc doc-class-bases">
14571
- Bases: <code><autoref identifier="taggit.managers.TaggableManager" optional hover>TaggableManager</autoref></code></p>
14875
+ Bases: <code><span title="taggit.managers.TaggableManager">TaggableManager</span></code></p>
14876
+
14877
+
14878
+ <p>Override FormField method on taggit.managers.TaggableManager to match the Nautobot UI.</p>
14879
+
14880
+
14881
+
14572
14882
 
14573
14883
 
14574
- <p>Override FormField method on taggit.managers.TaggableManager to match the Nautobot UI.</p>
14575
14884
 
14576
14885
 
14577
14886
 
@@ -14607,10 +14916,15 @@ having to define it on the model yourself.</p>
14607
14916
 
14608
14917
  <div class="doc doc-contents ">
14609
14918
  <p class="doc doc-class-bases">
14610
- Bases: <code><autoref identifier="taggit.managers._TaggableManager" optional hover>_TaggableManager</autoref></code>, <code><autoref identifier="nautobot.core.models.managers.BaseManager" optional hover>BaseManager</autoref></code></p>
14919
+ Bases: <code><span title="taggit.managers._TaggableManager">_TaggableManager</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.managers.BaseManager" href="#nautobot.apps.models.BaseManager">BaseManager</a></code></p>
14920
+
14921
+
14922
+ <p>Manager class for model 'tags' fields.</p>
14923
+
14924
+
14925
+
14611
14926
 
14612
14927
 
14613
- <p>Manager class for model 'tags' fields.</p>
14614
14928
 
14615
14929
 
14616
14930
 
@@ -14646,10 +14960,15 @@ having to define it on the model yourself.</p>
14646
14960
 
14647
14961
  <div class="doc doc-contents ">
14648
14962
  <p class="doc doc-class-bases">
14649
- Bases: <code><autoref identifier="tree_queries.query.TreeManager" optional hover>TreeManager</autoref></code>, <code><autoref identifier="nautobot.core.models.BaseManager.from_queryset" optional hover>from_queryset</autoref>(<autoref identifier="nautobot.core.models.tree_queries.TreeQuerySet" optional hover>TreeQuerySet</autoref>)</code></p>
14963
+ Bases: <code><span title="tree_queries.query.TreeManager">TreeManager</span></code>, <code><span title="nautobot.core.models.BaseManager.from_queryset">from_queryset</span>(<a class="autorefs autorefs-internal" title="nautobot.core.models.tree_queries.TreeQuerySet" href="#nautobot.apps.models.TreeQuerySet">TreeQuerySet</a>)</code></p>
14964
+
14965
+
14966
+ <p>Extend django-tree-queries' TreeManager to incorporate RestrictedQuerySet.</p>
14967
+
14968
+
14969
+
14650
14970
 
14651
14971
 
14652
- <p>Extend django-tree-queries' TreeManager to incorporate RestrictedQuerySet.</p>
14653
14972
 
14654
14973
 
14655
14974
 
@@ -14678,7 +14997,7 @@ having to define it on the model yourself.</p>
14678
14997
 
14679
14998
  <div class="doc doc-contents ">
14680
14999
 
14681
- <p>Cacheable version of <code>TreeQuerySet.max_tree_depth()</code>.</p>
15000
+ <p>Cacheable version of <code>TreeQuerySet.max_tree_depth()</code>.</p>
14682
15001
  <p>Generally TreeManagers are persistent objects while TreeQuerySets are not, hence the difference in behavior.</p>
14683
15002
  </div>
14684
15003
 
@@ -14707,10 +15026,15 @@ having to define it on the model yourself.</p>
14707
15026
 
14708
15027
  <div class="doc doc-contents ">
14709
15028
  <p class="doc doc-class-bases">
14710
- Bases: <code><autoref identifier="tree_queries.models.TreeNode" optional hover>TreeNode</autoref></code></p>
15029
+ Bases: <code><span title="tree_queries.models.TreeNode">TreeNode</span></code></p>
15030
+
15031
+
15032
+ <p>Nautobot-specific base class for models that exist in a self-referential tree.</p>
15033
+
15034
+
15035
+
14711
15036
 
14712
15037
 
14713
- <p>Nautobot-specific base class for models that exist in a self-referential tree.</p>
14714
15038
 
14715
15039
 
14716
15040
 
@@ -14739,7 +15063,7 @@ having to define it on the model yourself.</p>
14739
15063
 
14740
15064
  <div class="doc doc-contents ">
14741
15065
 
14742
- <p>By default, TreeModels display their full ancestry for clarity.</p>
15066
+ <p>By default, TreeModels display their full ancestry for clarity.</p>
14743
15067
  <p>As this is an expensive thing to calculate, we cache it for a few seconds in the case of repeated lookups.</p>
14744
15068
  </div>
14745
15069
 
@@ -14768,10 +15092,15 @@ having to define it on the model yourself.</p>
14768
15092
 
14769
15093
  <div class="doc doc-contents ">
14770
15094
  <p class="doc doc-class-bases">
14771
- Bases: <code><autoref identifier="tree_queries.query.TreeQuerySet" optional hover>TreeQuerySet</autoref></code>, <code><autoref identifier="nautobot.core.models.querysets.RestrictedQuerySet" optional hover>RestrictedQuerySet</autoref></code></p>
15095
+ Bases: <code><span title="tree_queries.query.TreeQuerySet">TreeQuerySet</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.models.querysets.RestrictedQuerySet" href="#nautobot.apps.models.RestrictedQuerySet">RestrictedQuerySet</a></code></p>
15096
+
15097
+
15098
+ <p>Combine django-tree-queries' TreeQuerySet with our RestrictedQuerySet for permissions enforcement.</p>
15099
+
15100
+
15101
+
14772
15102
 
14773
15103
 
14774
- <p>Combine django-tree-queries' TreeQuerySet with our RestrictedQuerySet for permissions enforcement.</p>
14775
15104
 
14776
15105
 
14777
15106
 
@@ -14797,7 +15126,7 @@ having to define it on the model yourself.</p>
14797
15126
 
14798
15127
  <div class="doc doc-contents ">
14799
15128
 
14800
- <p>Custom ancestors method for optimization purposes.</p>
15129
+ <p>Custom ancestors method for optimization purposes.</p>
14801
15130
  <p>Dynamically computes ancestors either through the tree or through the <code>parent</code> foreign key depending on whether
14802
15131
  tree fields are present on <code>of</code>.</p>
14803
15132
 
@@ -14816,7 +15145,7 @@ tree fields are present on <code>of</code>.</p>
14816
15145
 
14817
15146
  <div class="doc doc-contents ">
14818
15147
 
14819
- <p>Get the maximum tree depth of any node in this queryset.</p>
15148
+ <p>Get the maximum tree depth of any node in this queryset.</p>
14820
15149
  <p>In most cases you should use TreeManager.max_depth instead as it's cached and this is not.</p>
14821
15150
  <p>root - depth 0
14822
15151
  \
@@ -14852,15 +15181,20 @@ This is probably a bug, we should really return -1 in the case of an empty query
14852
15181
 
14853
15182
  <div class="doc doc-contents ">
14854
15183
  <p class="doc doc-class-bases">
14855
- Bases: <code><autoref identifier="django.core.validators.RegexValidator" optional hover>RegexValidator</autoref></code></p>
15184
+ Bases: <code><span title="django.core.validators.RegexValidator">RegexValidator</span></code></p>
14856
15185
 
14857
15186
 
14858
- <p>Checks that the value is a valid regular expression.</p>
15187
+ <p>Checks that the value is a valid regular expression.</p>
14859
15188
  <p>Don't confuse this with <code>RegexValidator</code>, which <em>uses</em> a regex to validate a value.</p>
14860
15189
 
14861
15190
 
14862
15191
 
14863
15192
 
15193
+
15194
+
15195
+
15196
+
15197
+
14864
15198
  <div class="doc doc-children">
14865
15199
 
14866
15200
 
@@ -14892,10 +15226,15 @@ This is probably a bug, we should really return -1 in the case of an empty query
14892
15226
 
14893
15227
  <div class="doc doc-contents ">
14894
15228
  <p class="doc doc-class-bases">
14895
- Bases: <code><autoref identifier="django.db.models.BinaryField" optional hover>BinaryField</autoref></code></p>
15229
+ Bases: <code><span title="django.db.models.BinaryField">BinaryField</span></code></p>
15230
+
15231
+
15232
+ <p>IP network address</p>
15233
+
15234
+
15235
+
14896
15236
 
14897
15237
 
14898
- <p>IP network address</p>
14899
15238
 
14900
15239
 
14901
15240
 
@@ -14921,7 +15260,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14921
15260
 
14922
15261
  <div class="doc doc-contents ">
14923
15262
 
14924
- <p>Returns the correct field type for a given database vendor.</p>
15263
+ <p>Returns the correct field type for a given database vendor.</p>
14925
15264
 
14926
15265
  </div>
14927
15266
 
@@ -14938,7 +15277,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14938
15277
 
14939
15278
  <div class="doc doc-contents ">
14940
15279
 
14941
- <p>Converts DB (varbinary) to Python (str).</p>
15280
+ <p>Converts DB (varbinary) to Python (str).</p>
14942
15281
 
14943
15282
  </div>
14944
15283
 
@@ -14955,7 +15294,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14955
15294
 
14956
15295
  <div class="doc doc-contents ">
14957
15296
 
14958
- <p>Converts Python (str) to DB (varbinary).</p>
15297
+ <p>Converts Python (str) to DB (varbinary).</p>
14959
15298
 
14960
15299
  </div>
14961
15300
 
@@ -14972,7 +15311,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14972
15311
 
14973
15312
  <div class="doc doc-contents ">
14974
15313
 
14975
- <p>Converts <code>value</code> to Python (str).</p>
15314
+ <p>Converts <code>value</code> to Python (str).</p>
14976
15315
 
14977
15316
  </div>
14978
15317
 
@@ -14989,7 +15328,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
14989
15328
 
14990
15329
  <div class="doc doc-contents ">
14991
15330
 
14992
- <p>IPField is serialized as str(IPAddress())</p>
15331
+ <p>IPField is serialized as str(IPAddress())</p>
14993
15332
 
14994
15333
  </div>
14995
15334
 
@@ -15015,7 +15354,7 @@ This is probably a bug, we should really return -1 in the case of an empty query
15015
15354
 
15016
15355
  <div class="doc doc-contents ">
15017
15356
 
15018
- <p>Generate an efficient, human-friendly string from a set of integers. Intended for use with ArrayField.
15357
+ <p>Generate an efficient, human-friendly string from a set of integers. Intended for use with ArrayField.
15019
15358
  For example:
15020
15359
  [0, 1, 2, 10, 14, 15, 16] =&gt; "0-2, 10, 14-16"</p>
15021
15360
 
@@ -15034,7 +15373,7 @@ For example:
15034
15373
 
15035
15374
  <div class="doc doc-contents ">
15036
15375
 
15037
- <p>Convert the given list of natural key values to a single URL-path-usable string.</p>
15376
+ <p>Convert the given list of natural key values to a single URL-path-usable string.</p>
15038
15377
  <ul>
15039
15378
  <li>Non-URL-safe characters are percent-encoded.</li>
15040
15379
  <li>Null (<code>None</code>) values are percent-encoded as a literal null character <code>%00</code>.</li>
@@ -15056,7 +15395,7 @@ For example:
15056
15395
 
15057
15396
  <div class="doc doc-contents ">
15058
15397
 
15059
- <p>Convert the given list of natural key <code>values</code> to a single human-readable string.</p>
15398
+ <p>Convert the given list of natural key <code>values</code> to a single human-readable string.</p>
15060
15399
  <p>If <code>pk</code> is provided, it will be appended to the end of the natural slug. If the PK is a UUID,
15061
15400
  only the first four characters will be appended.</p>
15062
15401
  <p>A third-party lossy <code>slugify()</code> function is used to convert each natural key value to a
@@ -15087,7 +15426,7 @@ slug, and then they are joined with an underscore.</p>
15087
15426
 
15088
15427
  <div class="doc doc-contents ">
15089
15428
 
15090
- <p>Return a Subquery suitable for annotating a child object count.</p>
15429
+ <p>Return a Subquery suitable for annotating a child object count.</p>
15091
15430
 
15092
15431
 
15093
15432
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -15102,9 +15441,11 @@ slug, and then they are joined with an underscore.</p>
15102
15441
  </thead>
15103
15442
  <tbody>
15104
15443
  <tr class="doc-section-item">
15105
- <td><code>model</code></td>
15106
15444
  <td>
15107
- <code><autoref identifier="Model" optional>Model</autoref></code>
15445
+ <code>model</code>
15446
+ </td>
15447
+ <td>
15448
+ <code>Model</code>
15108
15449
  </td>
15109
15450
  <td>
15110
15451
  <div class="doc-md-description">
@@ -15116,9 +15457,11 @@ slug, and then they are joined with an underscore.</p>
15116
15457
  </td>
15117
15458
  </tr>
15118
15459
  <tr class="doc-section-item">
15119
- <td><code>field</code></td>
15120
15460
  <td>
15121
- <code><autoref identifier="str" optional>str</autoref></code>
15461
+ <code>field</code>
15462
+ </td>
15463
+ <td>
15464
+ <code>str</code>
15122
15465
  </td>
15123
15466
  <td>
15124
15467
  <div class="doc-md-description">
@@ -15130,9 +15473,11 @@ slug, and then they are joined with an underscore.</p>
15130
15473
  </td>
15131
15474
  </tr>
15132
15475
  <tr class="doc-section-item">
15133
- <td><code>filter_dict</code></td>
15134
15476
  <td>
15135
- <code><autoref identifier="dict" optional>dict</autoref></code>
15477
+ <code>filter_dict</code>
15478
+ </td>
15479
+ <td>
15480
+ <code>dict</code>
15136
15481
  </td>
15137
15482
  <td>
15138
15483
  <div class="doc-md-description">
@@ -15144,9 +15489,11 @@ slug, and then they are joined with an underscore.</p>
15144
15489
  </td>
15145
15490
  </tr>
15146
15491
  <tr class="doc-section-item">
15147
- <td><code>manager_name</code></td>
15148
15492
  <td>
15149
- <code><autoref identifier="str" optional>str</autoref></code>
15493
+ <code>manager_name</code>
15494
+ </td>
15495
+ <td>
15496
+ <code>str</code>
15150
15497
  </td>
15151
15498
  <td>
15152
15499
  <div class="doc-md-description">
@@ -15175,7 +15522,7 @@ slug, and then they are joined with an underscore.</p>
15175
15522
 
15176
15523
  <div class="doc doc-contents ">
15177
15524
 
15178
- <p>Convert the given composite-key string back to a list of distinct values.</p>
15525
+ <p>Convert the given composite-key string back to a list of distinct values.</p>
15179
15526
  <ul>
15180
15527
  <li>Percent-encoded characters are converted back to their raw values</li>
15181
15528
  <li>Single literal null characters <code>%00</code> are converted back to a Python <code>None</code>.</li>
@@ -15197,7 +15544,7 @@ slug, and then they are joined with an underscore.</p>
15197
15544
 
15198
15545
  <div class="doc doc-contents ">
15199
15546
 
15200
- <p>Decorator used to register extras provided features to a model</p>
15547
+ <p>Decorator used to register extras provided features to a model</p>
15201
15548
 
15202
15549
  </div>
15203
15550
 
@@ -15214,7 +15561,7 @@ slug, and then they are joined with an underscore.</p>
15214
15561
 
15215
15562
  <div class="doc doc-contents ">
15216
15563
 
15217
- <p>Find all models that have fields with the specified names and satisfy the additional constraints,
15564
+ <p>Find all models that have fields with the specified names and satisfy the additional constraints,
15218
15565
  and return them grouped by app.</p>
15219
15566
 
15220
15567
 
@@ -15230,9 +15577,11 @@ and return them grouped by app.</p>
15230
15577
  </thead>
15231
15578
  <tbody>
15232
15579
  <tr class="doc-section-item">
15233
- <td><code>app_models</code></td>
15234
15580
  <td>
15235
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="nautobot.core.models.BaseModel" optional hover>BaseModel</autoref>]</code>
15581
+ <code>app_models</code>
15582
+ </td>
15583
+ <td>
15584
+ <code>list[<a class="autorefs autorefs-internal" title="nautobot.core.models.BaseModel" href="#nautobot.apps.models.BaseModel">BaseModel</a>]</code>
15236
15585
  </td>
15237
15586
  <td>
15238
15587
  <div class="doc-md-description">
@@ -15244,9 +15593,11 @@ and return them grouped by app.</p>
15244
15593
  </td>
15245
15594
  </tr>
15246
15595
  <tr class="doc-section-item">
15247
- <td><code>field_names</code></td>
15248
15596
  <td>
15249
- <code><autoref identifier="list" optional>list</autoref>[<autoref identifier="str" optional>str</autoref>]</code>
15597
+ <code>field_names</code>
15598
+ </td>
15599
+ <td>
15600
+ <code>list[str]</code>
15250
15601
  </td>
15251
15602
  <td>
15252
15603
  <div class="doc-md-description">
@@ -15258,9 +15609,11 @@ and return them grouped by app.</p>
15258
15609
  </td>
15259
15610
  </tr>
15260
15611
  <tr class="doc-section-item">
15261
- <td><code>field_attributes</code></td>
15262
15612
  <td>
15263
- <code><autoref identifier="dict" optional>dict</autoref></code>
15613
+ <code>field_attributes</code>
15614
+ </td>
15615
+ <td>
15616
+ <code>dict</code>
15264
15617
  </td>
15265
15618
  <td>
15266
15619
  <div class="doc-md-description">
@@ -15272,9 +15625,11 @@ and return them grouped by app.</p>
15272
15625
  </td>
15273
15626
  </tr>
15274
15627
  <tr class="doc-section-item">
15275
- <td><code>additional_constraints</code></td>
15276
15628
  <td>
15277
- <code><autoref identifier="dict" optional>dict</autoref></code>
15629
+ <code>additional_constraints</code>
15630
+ </td>
15631
+ <td>
15632
+ <code>dict</code>
15278
15633
  </td>
15279
15634
  <td>
15280
15635
  <div class="doc-md-description">
@@ -15308,7 +15663,7 @@ and return them grouped by app.</p>
15308
15663
 
15309
15664
  <div class="doc doc-contents ">
15310
15665
 
15311
- <p>Get a list of all non-abstract models that inherit from the given base_class.</p>
15666
+ <p>Get a list of all non-abstract models that inherit from the given base_class.</p>
15312
15667
 
15313
15668
  </div>
15314
15669
 
@@ -15325,7 +15680,7 @@ and return them grouped by app.</p>
15325
15680
 
15326
15681
  <div class="doc doc-contents ">
15327
15682
 
15328
- <p>Return the Global namespace.</p>
15683
+ <p>Return the Global namespace.</p>
15329
15684
 
15330
15685
  </div>
15331
15686
 
@@ -15342,7 +15697,7 @@ and return them grouped by app.</p>
15342
15697
 
15343
15698
  <div class="doc doc-contents ">
15344
15699
 
15345
- <p>Return the PK of the Global namespace for use in default value for foreign keys.</p>
15700
+ <p>Return the PK of the Global namespace for use in default value for foreign keys.</p>
15346
15701
 
15347
15702
  </div>
15348
15703
 
@@ -15359,7 +15714,7 @@ and return them grouped by app.</p>
15359
15714
 
15360
15715
  <div class="doc doc-contents ">
15361
15716
 
15362
- <p>Return True if the instance can have Tags assigned to it; False otherwise.</p>
15717
+ <p>Return True if the instance can have Tags assigned to it; False otherwise.</p>
15363
15718
 
15364
15719
  </div>
15365
15720
 
@@ -15376,7 +15731,7 @@ and return them grouped by app.</p>
15376
15731
 
15377
15732
  <div class="doc doc-contents ">
15378
15733
 
15379
- <p>Take an alphanumeric string and prepend all integers to <code>integer_places</code> places to ensure the strings
15734
+ <p>Take an alphanumeric string and prepend all integers to <code>integer_places</code> places to ensure the strings
15380
15735
  are ordered naturally. For example:</p>
15381
15736
  <div class="highlight"><pre><span></span><code>location9router21
15382
15737
  location10router4
@@ -15406,7 +15761,7 @@ location00000010router00000019
15406
15761
 
15407
15762
  <div class="doc doc-contents ">
15408
15763
 
15409
- <p>Similar in nature to naturalize(), but takes into account a particular naming format adapted from the old
15764
+ <p>Similar in nature to naturalize(), but takes into account a particular naming format adapted from the old
15410
15765
  InterfaceManager.</p>
15411
15766
  <p>:param value: The value to be naturalized
15412
15767
  :param max_length: The maximum length of the returned string. Characters beyond this length will be stripped.</p>
@@ -15426,7 +15781,7 @@ InterfaceManager.</p>
15426
15781
 
15427
15782
  <div class="doc doc-contents ">
15428
15783
 
15429
- <p>Given a <code>Q</code> object, display it in a more human-readable format.</p>
15784
+ <p>Given a <code>Q</code> object, display it in a more human-readable format.</p>
15430
15785
 
15431
15786
 
15432
15787
  <p><span class="doc-section-title">Parameters:</span></p>
@@ -15441,9 +15796,11 @@ InterfaceManager.</p>
15441
15796
  </thead>
15442
15797
  <tbody>
15443
15798
  <tr class="doc-section-item">
15444
- <td><code>query</code></td>
15445
15799
  <td>
15446
- <code><autoref identifier="Q" optional>Q</autoref></code>
15800
+ <code>query</code>
15801
+ </td>
15802
+ <td>
15803
+ <code>Q</code>
15447
15804
  </td>
15448
15805
  <td>
15449
15806
  <div class="doc-md-description">
@@ -15469,7 +15826,7 @@ InterfaceManager.</p>
15469
15826
  <tbody>
15470
15827
  <tr class="doc-section-item">
15471
15828
  <td>
15472
- <code><autoref identifier="str" optional>str</autoref></code>
15829
+ <code>str</code>
15473
15830
  </td>
15474
15831
  <td>
15475
15832
  <div class="doc-md-description">
@@ -15515,7 +15872,7 @@ InterfaceManager.</p>
15515
15872
 
15516
15873
  <div class="doc doc-contents ">
15517
15874
 
15518
- <p>Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like
15875
+ <p>Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like
15519
15876
  change logging, not the REST API.) Optionally include a dictionary to supplement the object data. A list of keys
15520
15877
  can be provided to exclude them from the returned dictionary. Private fields (prefaced with an underscore) are
15521
15878
  implicitly excluded.</p>
@@ -15535,7 +15892,7 @@ implicitly excluded.</p>
15535
15892
 
15536
15893
  <div class="doc doc-contents ">
15537
15894
 
15538
- <p>Return a JSON serialized representation of an object using obj's serializer.</p>
15895
+ <p>Return a JSON serialized representation of an object using obj's serializer.</p>
15539
15896
 
15540
15897
  </div>
15541
15898
 
@@ -15552,7 +15909,7 @@ implicitly excluded.</p>
15552
15909
 
15553
15910
  <div class="doc doc-contents ">
15554
15911
 
15555
- <p>Custom slugify_function - use underscores instead of dashes; resulting slug can be used as a variable name,
15912
+ <p>Custom slugify_function - use underscores instead of dashes; resulting slug can be used as a variable name,
15556
15913
  as well as a graphql safe string.
15557
15914
  Note: If content starts with a non graphql-safe character, e.g. a digit
15558
15915
  This method will prepend an "a" to content to make it graphql-safe
@@ -15574,7 +15931,7 @@ e.g:
15574
15931
 
15575
15932
  <div class="doc doc-contents ">
15576
15933
 
15577
- <p>Custom slugify_function - convert '.' to '-' instead of removing dots outright.</p>
15934
+ <p>Custom slugify_function - convert '.' to '-' instead of removing dots outright.</p>
15578
15935
 
15579
15936
  </div>
15580
15937
 
@@ -15683,7 +16040,7 @@ e.g:
15683
16040
 
15684
16041
 
15685
16042
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
15686
- <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>
16043
+ <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>
15687
16044
  </a>
15688
16045
 
15689
16046
 
@@ -15691,7 +16048,7 @@ e.g:
15691
16048
 
15692
16049
 
15693
16050
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
15694
- <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>
16051
+ <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>
15695
16052
  </a>
15696
16053
 
15697
16054
 
@@ -15699,7 +16056,7 @@ e.g:
15699
16056
 
15700
16057
 
15701
16058
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
15702
- <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>
16059
+ <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>
15703
16060
  </a>
15704
16061
 
15705
16062
 
@@ -15707,7 +16064,7 @@ e.g:
15707
16064
 
15708
16065
 
15709
16066
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
15710
- <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>
16067
+ <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>
15711
16068
  </a>
15712
16069
 
15713
16070
 
@@ -15715,7 +16072,7 @@ e.g:
15715
16072
 
15716
16073
 
15717
16074
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
15718
- <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>
16075
+ <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>
15719
16076
  </a>
15720
16077
 
15721
16078
  </div>
@@ -15730,10 +16087,10 @@ e.g:
15730
16087
  </div>
15731
16088
 
15732
16089
 
15733
- <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>
16090
+ <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>
15734
16091
 
15735
16092
 
15736
- <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script>
16093
+ <script src="../../../assets/javascripts/bundle.60a45f97.min.js"></script>
15737
16094
 
15738
16095
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
15739
16096