nautobot 2.4.16__py3-none-any.whl → 2.4.17__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 (370) hide show
  1. nautobot/apps/utils.py +2 -0
  2. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +3 -3
  3. nautobot/cloud/views.py +7 -0
  4. nautobot/core/apps/__init__.py +1 -0
  5. nautobot/core/celery/__init__.py +2 -1
  6. nautobot/core/templates/components/panel/panel.html +1 -1
  7. nautobot/core/templates/inc/paginator.html +3 -3
  8. nautobot/core/templates/inc/table.html +2 -2
  9. nautobot/core/templatetags/helpers.py +80 -6
  10. nautobot/core/testing/mixins.py +1 -1
  11. nautobot/core/testing/views.py +2 -4
  12. nautobot/core/ui/bulk_buttons.py +53 -53
  13. nautobot/core/ui/object_detail.py +9 -4
  14. nautobot/core/utils/data.py +13 -0
  15. nautobot/core/utils/deprecation.py +2 -0
  16. nautobot/dcim/migrations/0073_alter_powerport_power_factor_and_more.py +41 -0
  17. nautobot/dcim/models/device_component_templates.py +4 -2
  18. nautobot/dcim/models/device_components.py +3 -2
  19. nautobot/dcim/templates/dcim/rack_elevation_list.html +4 -4
  20. nautobot/dcim/views.py +9 -0
  21. nautobot/extras/models/customfields.py +45 -9
  22. nautobot/extras/templates/extras/configcontext_retrieve.html +1 -1
  23. nautobot/extras/templates/extras/configcontext_update.html +49 -49
  24. nautobot/extras/templates/extras/configcontextschema_retrieve.html +47 -47
  25. nautobot/extras/templates/extras/configcontextschema_update.html +18 -18
  26. nautobot/extras/templates/extras/inc/job_table.html +1 -1
  27. nautobot/extras/templates/extras/inc/object_contact_header.html +2 -2
  28. nautobot/extras/templates/extras/note_retrieve.html +53 -53
  29. nautobot/extras/templates/extras/tag_retrieve.html +1 -1
  30. nautobot/extras/templates/extras/tag_update.html +14 -14
  31. nautobot/extras/templates/extras/team_retrieve.html +1 -1
  32. nautobot/extras/tests/test_models.py +216 -0
  33. nautobot/extras/tests/test_views.py +2 -2
  34. nautobot/extras/views.py +1 -0
  35. nautobot/ipam/apps.py +1 -0
  36. nautobot/ipam/jobs/__init__.py +10 -0
  37. nautobot/ipam/jobs/cleanup.py +296 -0
  38. nautobot/ipam/models.py +301 -178
  39. nautobot/ipam/templates/ipam/inc/ipadress_edit_header.html +3 -3
  40. nautobot/ipam/templates/ipam/inc/toggle_available.html +2 -2
  41. nautobot/ipam/templates/ipam/ipaddress_assign.html +1 -1
  42. nautobot/ipam/templates/ipam/prefix_list.html +1 -1
  43. nautobot/ipam/templates/ipam/vlan_retrieve.html +1 -77
  44. nautobot/ipam/tests/test_jobs.py +454 -0
  45. nautobot/ipam/tests/test_models.py +290 -122
  46. nautobot/ipam/tests/test_views.py +40 -164
  47. nautobot/ipam/urls.py +0 -11
  48. nautobot/ipam/utils/testing.py +9 -4
  49. nautobot/ipam/views.py +166 -235
  50. nautobot/project-static/docs/404.html +9 -6
  51. nautobot/project-static/docs/apps/index.html +9 -6
  52. nautobot/project-static/docs/apps/nautobot-apps.html +9 -6
  53. nautobot/project-static/docs/assets/javascripts/bundle.92b07e13.min.js +16 -0
  54. nautobot/project-static/docs/assets/javascripts/{bundle.50899def.min.js.map → bundle.92b07e13.min.js.map} +2 -2
  55. nautobot/project-static/docs/assets/javascripts/workers/{search.d50fe291.min.js → search.973d3a69.min.js} +4 -4
  56. nautobot/project-static/docs/assets/javascripts/workers/{search.d50fe291.min.js.map → search.973d3a69.min.js.map} +1 -1
  57. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +9 -6
  58. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +9 -6
  59. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +9 -6
  60. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +9 -6
  61. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +10 -7
  62. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +9 -6
  63. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +9 -6
  64. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +9 -6
  65. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9 -6
  66. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +9 -6
  67. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +9 -6
  68. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +9 -6
  69. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +9 -6
  70. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +9 -6
  71. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +9 -6
  72. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +11 -8
  73. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +9 -6
  74. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +9 -6
  75. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +11 -8
  76. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +9 -6
  77. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +28 -9
  78. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +9 -6
  79. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +69 -7
  80. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +9 -6
  81. nautobot/project-static/docs/development/apps/api/configuration-view.html +13 -10
  82. nautobot/project-static/docs/development/apps/api/database-backend-config.html +11 -8
  83. nautobot/project-static/docs/development/apps/api/models/django-admin.html +13 -10
  84. nautobot/project-static/docs/development/apps/api/models/global-search.html +10 -7
  85. nautobot/project-static/docs/development/apps/api/models/graphql.html +18 -15
  86. nautobot/project-static/docs/development/apps/api/models/index.html +14 -11
  87. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +11 -8
  88. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +15 -12
  89. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +9 -6
  90. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +15 -12
  91. nautobot/project-static/docs/development/apps/api/platform-features/index.html +9 -6
  92. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +11 -8
  93. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +16 -13
  94. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +12 -10305
  95. nautobot/project-static/docs/development/apps/api/platform-features/prepopulating-data.html +10722 -0
  96. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +15 -12
  97. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +14 -11
  98. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +9 -6
  99. nautobot/project-static/docs/development/apps/api/prometheus.html +15 -12
  100. nautobot/project-static/docs/development/apps/api/setup.html +9 -6
  101. nautobot/project-static/docs/development/apps/api/testing.html +9 -6
  102. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +12 -9
  103. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +9 -6
  104. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +9 -6
  105. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +9 -6
  106. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +20 -17
  107. nautobot/project-static/docs/development/apps/api/views/base-template.html +9 -6
  108. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +15 -12
  109. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +14 -11
  110. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +9 -6
  111. nautobot/project-static/docs/development/apps/api/views/index.html +9 -6
  112. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +10 -7
  113. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +24 -21
  114. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +12 -9
  115. nautobot/project-static/docs/development/apps/api/views/notes.html +10 -7
  116. nautobot/project-static/docs/development/apps/api/views/rest-api.html +19 -16
  117. nautobot/project-static/docs/development/apps/api/views/urls.html +11 -8
  118. nautobot/project-static/docs/development/apps/index.html +9 -6
  119. nautobot/project-static/docs/development/apps/migration/code-updates.html +19 -16
  120. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +9 -6
  121. nautobot/project-static/docs/development/apps/migration/from-v1.html +9 -6
  122. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +22 -19
  123. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +9 -6
  124. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +9 -6
  125. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +9 -6
  126. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9 -6
  127. nautobot/project-static/docs/development/apps/migration/ui-component-framework/breadcrumbs-titles.html +14 -11
  128. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +27 -24
  129. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +20 -17
  130. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +20 -17
  131. nautobot/project-static/docs/development/apps/porting-from-netbox.html +9 -6
  132. nautobot/project-static/docs/development/core/application-registry.html +23 -20
  133. nautobot/project-static/docs/development/core/best-practices.html +23 -20
  134. nautobot/project-static/docs/development/core/bootstrap-ui.html +9 -6
  135. nautobot/project-static/docs/development/core/caching.html +9 -6
  136. nautobot/project-static/docs/development/core/controllers.html +9 -6
  137. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +10 -7
  138. nautobot/project-static/docs/development/core/generic-views.html +9 -6
  139. nautobot/project-static/docs/development/core/getting-started.html +9 -6
  140. nautobot/project-static/docs/development/core/homepage.html +12 -9
  141. nautobot/project-static/docs/development/core/index.html +9 -6
  142. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9 -6
  143. nautobot/project-static/docs/development/core/model-checklist.html +9 -6
  144. nautobot/project-static/docs/development/core/model-features.html +11 -8
  145. nautobot/project-static/docs/development/core/natural-keys.html +21 -18
  146. nautobot/project-static/docs/development/core/navigation-menu.html +10 -7
  147. nautobot/project-static/docs/development/core/release-checklist.html +9 -6
  148. nautobot/project-static/docs/development/core/role-internals.html +9 -6
  149. nautobot/project-static/docs/development/core/settings.html +9 -6
  150. nautobot/project-static/docs/development/core/style-guide.html +32 -29
  151. nautobot/project-static/docs/development/core/templates.html +9 -6
  152. nautobot/project-static/docs/development/core/testing.html +10 -7
  153. nautobot/project-static/docs/development/core/ui-component-framework.html +36 -33
  154. nautobot/project-static/docs/development/core/user-preferences.html +9 -6
  155. nautobot/project-static/docs/development/index.html +9 -6
  156. nautobot/project-static/docs/development/jobs/getting-started.html +13 -10
  157. nautobot/project-static/docs/development/jobs/index.html +9 -6
  158. nautobot/project-static/docs/development/jobs/installation.html +23 -20
  159. nautobot/project-static/docs/development/jobs/job-extensions.html +25 -22
  160. nautobot/project-static/docs/development/jobs/job-logging.html +12 -9
  161. nautobot/project-static/docs/development/jobs/job-patterns.html +45 -42
  162. nautobot/project-static/docs/development/jobs/job-structure.html +53 -50
  163. nautobot/project-static/docs/development/jobs/migration/from-v1.html +23 -20
  164. nautobot/project-static/docs/development/jobs/testing.html +14 -11
  165. nautobot/project-static/docs/index.html +9 -6
  166. nautobot/project-static/docs/objects.inv +0 -0
  167. nautobot/project-static/docs/overview/application_stack.html +9 -6
  168. nautobot/project-static/docs/overview/design_philosophy.html +9 -6
  169. nautobot/project-static/docs/release-notes/index.html +9 -6
  170. nautobot/project-static/docs/release-notes/version-1.0.html +9 -6
  171. nautobot/project-static/docs/release-notes/version-1.1.html +9 -6
  172. nautobot/project-static/docs/release-notes/version-1.2.html +10 -7
  173. nautobot/project-static/docs/release-notes/version-1.3.html +9 -6
  174. nautobot/project-static/docs/release-notes/version-1.4.html +9 -6
  175. nautobot/project-static/docs/release-notes/version-1.5.html +13 -10
  176. nautobot/project-static/docs/release-notes/version-1.6.html +9 -6
  177. nautobot/project-static/docs/release-notes/version-2.0.html +9 -6
  178. nautobot/project-static/docs/release-notes/version-2.1.html +9 -6
  179. nautobot/project-static/docs/release-notes/version-2.2.html +9 -6
  180. nautobot/project-static/docs/release-notes/version-2.3.html +9 -6
  181. nautobot/project-static/docs/release-notes/version-2.4.html +267 -6
  182. nautobot/project-static/docs/requirements.txt +2 -2
  183. nautobot/project-static/docs/search/search_index.json +1 -1
  184. nautobot/project-static/docs/sitemap.xml +301 -301
  185. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  186. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +15 -12
  187. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +9 -6
  188. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +16 -13
  189. nautobot/project-static/docs/user-guide/administration/configuration/index.html +9 -6
  190. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +9 -6
  191. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +11 -8
  192. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +9 -6
  193. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +9 -6
  194. nautobot/project-static/docs/user-guide/administration/guides/docker.html +9 -6
  195. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +9 -6
  196. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +9 -6
  197. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +9 -6
  198. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +9 -6
  199. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +9 -6
  200. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +16 -13
  201. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +9 -6
  202. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +9 -6
  203. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +9 -6
  204. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +9 -6
  205. nautobot/project-static/docs/user-guide/administration/installation/index.html +9 -6
  206. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +9 -6
  207. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +9 -6
  208. nautobot/project-static/docs/user-guide/administration/installation/services.html +12 -9
  209. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +13 -10
  210. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +10 -7
  211. nautobot/project-static/docs/user-guide/administration/security/index.html +9 -6
  212. nautobot/project-static/docs/user-guide/administration/security/notices.html +9 -6
  213. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +9 -6
  214. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +10 -7
  215. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +9 -6
  216. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +9 -6
  217. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +9 -6
  218. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +9 -6
  219. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +9 -6
  220. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +9 -6
  221. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +9 -6
  222. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +15 -12
  223. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +9 -6
  224. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +9 -6
  225. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +9 -6
  226. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +9 -6
  227. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +9 -6
  228. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +9 -6
  229. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +9 -6
  230. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +9 -6
  231. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +9 -6
  232. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +9 -6
  233. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +9 -6
  234. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +9 -6
  235. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +9 -6
  236. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +9 -6
  237. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +9 -6
  238. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +9 -6
  239. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +9 -6
  240. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +9 -6
  241. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +9 -6
  242. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +9 -6
  243. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +9 -6
  244. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +9 -6
  245. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +9 -6
  246. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +9 -6
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +13 -10
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +9 -6
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +9 -6
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +9 -6
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +9 -6
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +9 -6
  253. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +9 -6
  254. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +9 -6
  255. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +9 -6
  256. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +9 -6
  257. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +9 -6
  258. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +9 -6
  259. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +9 -6
  260. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +9 -6
  261. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +9 -6
  262. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +9 -6
  263. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +9 -6
  264. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +9 -6
  265. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +9 -6
  266. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +9 -6
  267. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +9 -6
  268. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +9 -6
  269. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +9 -6
  270. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +9 -6
  271. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +9 -6
  272. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +9 -6
  273. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +9 -6
  274. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +9 -6
  275. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +9 -6
  276. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +9 -6
  277. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +9 -6
  278. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9 -6
  279. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +9 -6
  280. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +9 -6
  281. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +11 -8
  282. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +11 -8
  283. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +41 -41
  284. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +9 -6
  285. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +197 -54
  286. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +9 -6
  287. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +9 -6
  288. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +9 -6
  289. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +9 -6
  290. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +9 -6
  291. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +9 -6
  292. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +9 -6
  293. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +9 -6
  294. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +9 -6
  295. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +9 -6
  296. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +9 -6
  297. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +9 -6
  298. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +9 -6
  299. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +9 -6
  300. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9 -6
  301. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9 -6
  302. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9 -6
  303. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9 -6
  304. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +9 -6
  305. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +9 -6
  306. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +9 -6
  307. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +9 -6
  308. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +9 -6
  309. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +9 -6
  310. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +9 -6
  311. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +9 -6
  312. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +9 -6
  313. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +9 -6
  314. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +9 -6
  315. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +9 -6
  316. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +13 -10
  317. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +9 -6
  318. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +9 -6
  319. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +9 -6
  320. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +9 -6
  321. nautobot/project-static/docs/user-guide/index.html +9 -6
  322. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +9 -6
  323. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +9 -6
  324. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +10 -7
  325. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +9 -6
  326. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +9 -6
  327. nautobot/project-static/docs/user-guide/platform-functionality/events.html +11 -8
  328. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +9 -6
  329. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +9 -6
  330. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +9 -6
  331. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +9 -6
  332. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +9 -6
  333. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +9 -6
  334. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +9 -6
  335. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +9 -6
  336. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +9 -6
  337. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +9 -6
  338. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9 -6
  339. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9 -6
  340. nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +9 -6
  341. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +9 -6
  342. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +9 -6
  343. nautobot/project-static/docs/user-guide/platform-functionality/note.html +9 -6
  344. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +12 -9
  345. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +9 -6
  346. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9 -6
  347. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +9 -6
  348. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +9 -6
  349. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +9 -6
  350. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +9 -6
  351. nautobot/project-static/docs/user-guide/platform-functionality/role.html +9 -6
  352. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9 -6
  353. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +11 -8
  354. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +9 -6
  355. nautobot/project-static/docs/user-guide/platform-functionality/status.html +9 -6
  356. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +9 -6
  357. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +9 -6
  358. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +9 -6
  359. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +9 -6
  360. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +9 -6
  361. nautobot/project-static/fonts/UFL.txt +96 -96
  362. nautobot/project-static/js/forms.js +35 -2
  363. nautobot/virtualization/filters.py +7 -0
  364. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/METADATA +6 -6
  365. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/RECORD +369 -364
  366. nautobot/project-static/docs/assets/javascripts/bundle.50899def.min.js +0 -16
  367. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/LICENSE.txt +0 -0
  368. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/NOTICE +0 -0
  369. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/WHEEL +0 -0
  370. {nautobot-2.4.16.dist-info → nautobot-2.4.17.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.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7394,12 +7396,12 @@
7394
7396
 
7395
7397
 
7396
7398
  <li class="md-nav__item">
7397
- <a href="../apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7399
+ <a href="../apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7398
7400
 
7399
7401
 
7400
7402
 
7401
7403
  <span class="md-ellipsis">
7402
- Populating Extensibility Features
7404
+ Prepopulating Data
7403
7405
 
7404
7406
  </span>
7405
7407
 
@@ -10405,9 +10407,9 @@
10405
10407
  <summary>Added in version 2.4.14</summary>
10406
10408
  </details>
10407
10409
  <p>A dictionary of particular features (e.g. "graphql") mapped to the set of Nautobot model classes which support each such feature. For example:</p>
10408
- <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">nautobot.extras.registry</span> <span class="kn">import</span> <span class="n">registry</span>
10410
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.extras.registry</span><span class="w"> </span><span class="kn">import</span> <span class="n">registry</span>
10409
10411
  <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">registry</span><span class="p">[</span><span class="s2">&quot;feature_models&quot;</span><span class="p">][</span><span class="s2">&quot;graphql&quot;</span><span class="p">]</span>
10410
- <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="p">[</span><span class="o">&lt;</span><span class="k">class</span> <span class="err">&#39;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">change_logging</span><span class="o">.</span><span class="n">ObjectChange</span><span class="s1">&#39;&gt;, &lt;class &#39;</span><span class="n">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">customfields</span><span class="o">.</span><span class="n">ComputedField</span><span class="s1">&#39;&gt;, &lt;class &#39;</span><span class="n">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">customfields</span><span class="o">.</span><span class="n">CustomFieldChoice</span><span class="s1">&#39;&gt;, &lt;class &#39;</span><span class="n">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">roles</span><span class="o">.</span><span class="n">Role</span><span class="s1">&#39;&gt;, ...</span>
10412
+ <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="p">[</span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">change_logging</span><span class="o">.</span><span class="n">ObjectChange</span><span class="s1">&#39;&gt;, &lt;class &#39;</span><span class="n">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">customfields</span><span class="o">.</span><span class="n">ComputedField</span><span class="s1">&#39;&gt;, &lt;class &#39;</span><span class="n">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">customfields</span><span class="o">.</span><span class="n">CustomFieldChoice</span><span class="s1">&#39;&gt;, &lt;class &#39;</span><span class="n">nautobot</span><span class="o">.</span><span class="n">extras</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">roles</span><span class="o">.</span><span class="n">Role</span><span class="s1">&#39;&gt;, ...</span>
10411
10413
  </code></pre></div>
10412
10414
  <p>Useful as an alternative to <code>model_features</code> (<a href="#model_features">below</a>) for cases where direct access to the Django model classes is desired, such as in generating the GraphQL schema.</p>
10413
10415
  <h3 id="jobs"><code>jobs</code><a class="headerlink" href="#jobs" title="Permanent link">&para;</a></h3>
@@ -10416,18 +10418,18 @@
10416
10418
  </details>
10417
10419
  <p>A dictionary of registered <a href="../jobs/index.html">Job classes</a>, indexed by their <a href="../../user-guide/platform-functionality/jobs/models.html#understanding-job-class-paths">class path</a>. For example:</p>
10418
10420
  <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="p">{</span>
10419
- <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a> <span class="s2">&quot;nautobot.core.jobs.ExportObjectList&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExportObjectList</span><span class="s2">&quot;&gt;,</span>
10420
- <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a> <span class="s2">&quot;nautobot.core.jobs.GitRepositorySync&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">GitRepositorySync</span><span class="s2">&quot;&gt;,</span>
10421
- <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a> <span class="s2">&quot;nautobot.core.jobs.GitRepositoryDryRun&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">GitRepositoryDryRun</span><span class="s2">&quot;&gt;,</span>
10422
- <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a> <span class="s2">&quot;nautobot.core.jobs.ImportObjects&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ImportObjects</span><span class="s2">&quot;&gt;,</span>
10423
- <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a> <span class="s2">&quot;example_app.jobs.ExampleDryRunJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleDryRunJob</span><span class="s2">&quot;&gt;,</span>
10424
- <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="s2">&quot;example_app.jobs.ExampleJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleJob</span><span class="s2">&quot;&gt;,</span>
10425
- <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="s2">&quot;example_app.jobs.ExampleHiddenJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleHiddenJob</span><span class="s2">&quot;&gt;,</span>
10426
- <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="s2">&quot;example_app.jobs.ExampleLoggingJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleLoggingJob</span><span class="s2">&quot;&gt;,</span>
10427
- <a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="s2">&quot;example_app.jobs.ExampleFileInputOutputJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleFileInputOutputJob</span><span class="s2">&quot;&gt;,</span>
10428
- <a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a> <span class="s2">&quot;example_app.jobs.ExampleJobHookReceiver&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleJobHookReceiver</span><span class="s2">&quot;&gt;,</span>
10429
- <a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a> <span class="s2">&quot;example_app.jobs.ExampleSimpleJobButtonReceiver&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleSimpleJobButtonReceiver</span><span class="s2">&quot;&gt;,</span>
10430
- <a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> <span class="s2">&quot;example_app.jobs.ExampleComplexJobButtonReceiver&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span> <span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleComplexJobButtonReceiver</span><span class="s2">&quot;&gt;</span>
10421
+ <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a> <span class="s2">&quot;nautobot.core.jobs.ExportObjectList&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExportObjectList</span><span class="s2">&quot;&gt;,</span>
10422
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a> <span class="s2">&quot;nautobot.core.jobs.GitRepositorySync&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">GitRepositorySync</span><span class="s2">&quot;&gt;,</span>
10423
+ <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a> <span class="s2">&quot;nautobot.core.jobs.GitRepositoryDryRun&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">GitRepositoryDryRun</span><span class="s2">&quot;&gt;,</span>
10424
+ <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a> <span class="s2">&quot;nautobot.core.jobs.ImportObjects&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">nautobot</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ImportObjects</span><span class="s2">&quot;&gt;,</span>
10425
+ <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a> <span class="s2">&quot;example_app.jobs.ExampleDryRunJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleDryRunJob</span><span class="s2">&quot;&gt;,</span>
10426
+ <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="s2">&quot;example_app.jobs.ExampleJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleJob</span><span class="s2">&quot;&gt;,</span>
10427
+ <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="s2">&quot;example_app.jobs.ExampleHiddenJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleHiddenJob</span><span class="s2">&quot;&gt;,</span>
10428
+ <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="s2">&quot;example_app.jobs.ExampleLoggingJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleLoggingJob</span><span class="s2">&quot;&gt;,</span>
10429
+ <a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="s2">&quot;example_app.jobs.ExampleFileInputOutputJob&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleFileInputOutputJob</span><span class="s2">&quot;&gt;,</span>
10430
+ <a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a> <span class="s2">&quot;example_app.jobs.ExampleJobHookReceiver&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleJobHookReceiver</span><span class="s2">&quot;&gt;,</span>
10431
+ <a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a> <span class="s2">&quot;example_app.jobs.ExampleSimpleJobButtonReceiver&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleSimpleJobButtonReceiver</span><span class="s2">&quot;&gt;,</span>
10432
+ <a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> <span class="s2">&quot;example_app.jobs.ExampleComplexJobButtonReceiver&quot;</span><span class="p">:</span> <span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="err">&quot;</span><span class="nc">example_app</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">ExampleComplexJobButtonReceiver</span><span class="s2">&quot;&gt;</span>
10431
10433
  <a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="p">}</span>
10432
10434
  </code></pre></div>
10433
10435
  <div class="admonition caution">
@@ -10629,7 +10631,8 @@
10629
10631
  <!-- RTD version flyout injected on live site -->
10630
10632
  <div id="readthedocs-embed-flyout"></div>
10631
10633
 
10632
- <div class="md-social">
10634
+
10635
+ <div class="md-social">
10633
10636
 
10634
10637
 
10635
10638
 
@@ -10685,10 +10688,10 @@
10685
10688
 
10686
10689
 
10687
10690
 
10688
- <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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10691
+ <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10689
10692
 
10690
10693
 
10691
- <script src="../../assets/javascripts/bundle.50899def.min.js"></script>
10694
+ <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
10692
10695
 
10693
10696
 
10694
10697
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -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.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7394,12 +7396,12 @@
7394
7396
 
7395
7397
 
7396
7398
  <li class="md-nav__item">
7397
- <a href="../apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7399
+ <a href="../apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7398
7400
 
7399
7401
 
7400
7402
 
7401
7403
  <span class="md-ellipsis">
7402
- Populating Extensibility Features
7404
+ Prepopulating Data
7403
7405
 
7404
7406
  </span>
7405
7407
 
@@ -10703,12 +10705,12 @@ For most purposes, this is not the case you are intending to check!</p>
10703
10705
  <p>Models should generally <strong>not</strong> have a <code>slug</code> field, and should use the model's primary key (UUID) in URL patterns for both the UI and the REST API. All models should have a human-friendly natural key, either a single unique field (typically <code>name</code>) or a minimally complex unique-together set of fields (such as <code>DeviceType</code>'s <code>(manufacturer, model)</code>).</p>
10704
10706
  </details>
10705
10707
  <p>For models that have a strong use case for a <code>slug</code> or similar field (such as <code>GitRepository.slug</code>, which defines a module name for Python imports from the repository, or <code>CustomField.key</code>, which defines the key used to access this field in the REST API and GraphQL), Nautobot provides the <code>AutoSlugField</code> to handle automatically populating the <code>slug</code> field from another field(s). Generally speaking model slugs should be populated from the <code>name</code> field. Below is an example on defining the <code>slug</code> field.</p>
10706
- <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">models</span>
10708
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">models</span>
10707
10709
  <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>
10708
- <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kn">from</span> <span class="nn">nautobot.core.models.fields</span> <span class="kn">import</span> <span class="n">AutoSlugField</span>
10709
- <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="kn">from</span> <span class="nn">nautobot.core.models.generics</span> <span class="kn">import</span> <span class="n">PrimaryModel</span>
10710
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.core.models.fields</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoSlugField</span>
10711
+ <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.core.models.generics</span><span class="w"> </span><span class="kn">import</span> <span class="n">PrimaryModel</span>
10710
10712
  <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>
10711
- <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="k">class</span> <span class="nc">ExampleModel</span><span class="p">(</span><span class="n">PrimaryModel</span><span class="p">):</span>
10713
+ <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="k">class</span><span class="w"> </span><span class="nc">ExampleModel</span><span class="p">(</span><span class="n">PrimaryModel</span><span class="p">):</span>
10712
10714
  <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
10713
10715
  <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="n">slug</span> <span class="o">=</span> <span class="n">AutoSlugField</span><span class="p">(</span><span class="n">populate_from</span><span class="o">=</span><span class="s1">&#39;name&#39;</span><span class="p">)</span>
10714
10716
  </code></pre></div>
@@ -10720,7 +10722,7 @@ For most purposes, this is not the case you are intending to check!</p>
10720
10722
  <summary>Changed in version 2.0.0</summary>
10721
10723
  <p><code>get_route_for_model</code> was moved from the <code>nautobot.utilities.utils</code> module to <code>nautobot.core.utils.lookup</code>.</p>
10722
10724
  </details>
10723
- <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">from</span> <span class="nn">nautobot.core.utils.lookup</span> <span class="kn">import</span> <span class="n">get_route_for_model</span>
10725
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.core.utils.lookup</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_route_for_model</span>
10724
10726
  </code></pre></div>
10725
10727
  <p>This utility function supports both UI and API views for both Nautobot core apps and Nautobot Apps.</p>
10726
10728
  <h3 id="ui-routes">UI Routes<a class="headerlink" href="#ui-routes" title="Permanent link">&para;</a></h3>
@@ -10799,8 +10801,8 @@ For most purposes, this is not the case you are intending to check!</p>
10799
10801
  </li>
10800
10802
  <li>In the event that fields do need to be customized to extend lookup expressions, a <a href="https://django-filter.readthedocs.io/en/stable/ref/filterset.html#declaring-filterable-fields">dictionary of field names mapped to a list of lookups</a> <strong>may</strong> be used, however, this pattern is only compatible with explicitly declaring all fields, which should also be avoided for the common case. For example:</li>
10801
10803
  </ul>
10802
- <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="k">class</span> <span class="nc">UserFilter</span><span class="p">(</span><span class="n">NautobotFilterSet</span><span class="p">):</span>
10803
- <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
10804
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">UserFilter</span><span class="p">(</span><span class="n">NautobotFilterSet</span><span class="p">):</span>
10805
+ <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="k">class</span><span class="w"> </span><span class="nc">Meta</span><span class="p">:</span>
10804
10806
  <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> <span class="n">model</span> <span class="o">=</span> <span class="n">User</span>
10805
10807
  <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="n">fields</span> <span class="o">=</span> <span class="p">{</span>
10806
10808
  <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="s1">&#39;username&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;exact&#39;</span><span class="p">,</span> <span class="s1">&#39;contains&#39;</span><span class="p">],</span>
@@ -10832,7 +10834,7 @@ For most purposes, this is not the case you are intending to check!</p>
10832
10834
  </li>
10833
10835
  </ul>
10834
10836
  <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="c1"># Typical usage</span>
10835
- <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="kn">from</span> <span class="nn">nautobot.core.filters</span> <span class="kn">import</span> <span class="n">NaturalKeyOrPKMultipleChoiceFilter</span>
10837
+ <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.core.filters</span><span class="w"> </span><span class="kn">import</span> <span class="n">NaturalKeyOrPKMultipleChoiceFilter</span>
10836
10838
  <a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a>
10837
10839
  <a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">provider</span> <span class="o">=</span> <span class="n">NaturalKeyOrPKMultipleChoiceFilter</span><span class="p">(</span>
10838
10840
  <a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">queryset</span><span class="o">=</span><span class="n">Provider</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">(),</span>
@@ -10841,7 +10843,7 @@ For most purposes, this is not the case you are intending to check!</p>
10841
10843
  <a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="p">)</span>
10842
10844
  </code></pre></div>
10843
10845
  <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="c1"># Optionally, using the to_field_name argument to look up by &quot;slug&quot; instead of by &quot;name&quot;</span>
10844
- <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="kn">from</span> <span class="nn">nautobot.core.filters</span> <span class="kn">import</span> <span class="n">NaturalKeyOrPKMultipleChoiceFilter</span>
10846
+ <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.core.filters</span><span class="w"> </span><span class="kn">import</span> <span class="n">NaturalKeyOrPKMultipleChoiceFilter</span>
10845
10847
  <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>
10846
10848
  <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">git_repository</span> <span class="o">=</span> <span class="n">NaturalKeyOrPKMultipleChoiceFilter</span><span class="p">(</span>
10847
10849
  <a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">to_field_name</span><span class="o">=</span><span class="s2">&quot;slug&quot;</span><span class="p">,</span>
@@ -10855,7 +10857,7 @@ For most purposes, this is not the case you are intending to check!</p>
10855
10857
  </ul>
10856
10858
  </li>
10857
10859
  </ul>
10858
- <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="kn">from</span> <span class="nn">nautobot.core.filters</span> <span class="kn">import</span> <span class="n">RelatedMembershipBooleanFilter</span>
10860
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">nautobot.core.filters</span><span class="w"> </span><span class="kn">import</span> <span class="n">RelatedMembershipBooleanFilter</span>
10859
10861
  <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a>
10860
10862
  <a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a> <span class="n">has_interfaces</span> <span class="o">=</span> <span class="n">RelatedMembershipBooleanFilter</span><span class="p">(</span>
10861
10863
  <a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a> <span class="n">field_name</span><span class="o">=</span><span class="s2">&quot;interfaces&quot;</span><span class="p">,</span>
@@ -10907,9 +10909,9 @@ For most purposes, this is not the case you are intending to check!</p>
10907
10909
  <p>For example:</p>
10908
10910
  </li>
10909
10911
  </ul>
10910
- <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="k">class</span> <span class="nc">ProductFilter</span><span class="p">(</span><span class="n">NautobotFilterSet</span><span class="p">):</span>
10912
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">ProductFilter</span><span class="p">(</span><span class="n">NautobotFilterSet</span><span class="p">):</span>
10911
10913
  <a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a>
10912
- <a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
10914
+ <a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="k">class</span><span class="w"> </span><span class="nc">Meta</span><span class="p">:</span>
10913
10915
  <a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">model</span> <span class="o">=</span> <span class="n">Interface</span>
10914
10916
  <a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="n">fields</span> <span class="o">=</span> <span class="s2">&quot;__all__&quot;</span>
10915
10917
  <a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="n">filter_overrides</span> <span class="o">=</span> <span class="p">{</span>
@@ -10947,7 +10949,7 @@ For most purposes, this is not the case you are intending to check!</p>
10947
10949
  <a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a>
10948
10950
  <a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a> <span class="c1"># Method definition loses context and further the field&#39;s lookup_expr</span>
10949
10951
  <a id="__codelineno-22-9" name="__codelineno-22-9" href="#__codelineno-22-9"></a> <span class="c1"># falls back to the default of &quot;exact&quot; and the `name` value is irrelevant here.</span>
10950
- <a id="__codelineno-22-10" name="__codelineno-22-10" href="#__codelineno-22-10"></a> <span class="k">def</span> <span class="nf">_pass_through_ports</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">queryset</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
10952
+ <a id="__codelineno-22-10" name="__codelineno-22-10" href="#__codelineno-22-10"></a> <span class="k">def</span><span class="w"> </span><span class="nf">_pass_through_ports</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">queryset</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
10951
10953
  <a id="__codelineno-22-11" name="__codelineno-22-11" href="#__codelineno-22-11"></a> <span class="nb">breakpoint</span><span class="p">()</span> <span class="c1"># This was added to illustrate debugging with pdb below</span>
10952
10954
  <a id="__codelineno-22-12" name="__codelineno-22-12" href="#__codelineno-22-12"></a> <span class="k">return</span> <span class="n">queryset</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">frontports__isnull</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">rearports__isnull</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
10953
10955
  </code></pre></div>
@@ -10988,7 +10990,7 @@ For most purposes, this is not the case you are intending to check!</p>
10988
10990
  <p>It would be better to just eliminate <code>pass_through_ports=True</code> entirely in exchange for <code>front_ports=True&amp;rear_ports=True</code> (current) or <code>has_frontports=True&amp;has_rearports=True</code> (future).</p>
10989
10991
  <h4 id="generating-reversible-q-objects">Generating Reversible Q Objects<a class="headerlink" href="#generating-reversible-q-objects" title="Permanent link">&para;</a></h4>
10990
10992
  <p>With consistent and proper use of filter field arguments when defining them on a filterset, a query could be constructed using the <code>field_name</code> and <code>lookup_expr</code> values. For example:</p>
10991
- <div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a> <span class="k">def</span> <span class="nf">generate_query</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
10993
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a> <span class="k">def</span><span class="w"> </span><span class="nf">generate_query</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
10992
10994
  <a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a> <span class="n">query</span> <span class="o">=</span> <span class="n">Q</span><span class="p">()</span>
10993
10995
  <a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> <span class="n">predicate</span> <span class="o">=</span> <span class="p">{</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">field</span><span class="o">.</span><span class="n">field_name</span><span class="si">}</span><span class="s2">__</span><span class="si">{</span><span class="n">field</span><span class="o">.</span><span class="n">lookup_expr</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">:</span> <span class="n">value</span><span class="p">}</span>
10994
10996
  <a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> <span class="k">if</span> <span class="n">field</span><span class="o">.</span><span class="n">exclude</span><span class="p">:</span>
@@ -11101,7 +11103,8 @@ For most purposes, this is not the case you are intending to check!</p>
11101
11103
  <!-- RTD version flyout injected on live site -->
11102
11104
  <div id="readthedocs-embed-flyout"></div>
11103
11105
 
11104
- <div class="md-social">
11106
+
11107
+ <div class="md-social">
11105
11108
 
11106
11109
 
11107
11110
 
@@ -11157,10 +11160,10 @@ For most purposes, this is not the case you are intending to check!</p>
11157
11160
 
11158
11161
 
11159
11162
 
11160
- <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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
11163
+ <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
11161
11164
 
11162
11165
 
11163
- <script src="../../assets/javascripts/bundle.50899def.min.js"></script>
11166
+ <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
11164
11167
 
11165
11168
 
11166
11169
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -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.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7394,12 +7396,12 @@
7394
7396
 
7395
7397
 
7396
7398
  <li class="md-nav__item">
7397
- <a href="../apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7399
+ <a href="../apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7398
7400
 
7399
7401
 
7400
7402
 
7401
7403
  <span class="md-ellipsis">
7402
- Populating Extensibility Features
7404
+ Prepopulating Data
7403
7405
 
7404
7406
  </span>
7405
7407
 
@@ -10291,7 +10293,8 @@
10291
10293
  <!-- RTD version flyout injected on live site -->
10292
10294
  <div id="readthedocs-embed-flyout"></div>
10293
10295
 
10294
- <div class="md-social">
10296
+
10297
+ <div class="md-social">
10295
10298
 
10296
10299
 
10297
10300
 
@@ -10347,10 +10350,10 @@
10347
10350
 
10348
10351
 
10349
10352
 
10350
- <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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10353
+ <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10351
10354
 
10352
10355
 
10353
- <script src="../../assets/javascripts/bundle.50899def.min.js"></script>
10356
+ <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
10354
10357
 
10355
10358
 
10356
10359
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -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.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7394,12 +7396,12 @@
7394
7396
 
7395
7397
 
7396
7398
  <li class="md-nav__item">
7397
- <a href="../apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7399
+ <a href="../apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7398
7400
 
7399
7401
 
7400
7402
 
7401
7403
  <span class="md-ellipsis">
7402
- Populating Extensibility Features
7404
+ Prepopulating Data
7403
7405
 
7404
7406
  </span>
7405
7407
 
@@ -10308,7 +10310,8 @@
10308
10310
  <!-- RTD version flyout injected on live site -->
10309
10311
  <div id="readthedocs-embed-flyout"></div>
10310
10312
 
10311
- <div class="md-social">
10313
+
10314
+ <div class="md-social">
10312
10315
 
10313
10316
 
10314
10317
 
@@ -10364,10 +10367,10 @@
10364
10367
 
10365
10368
 
10366
10369
 
10367
- <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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10370
+ <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10368
10371
 
10369
10372
 
10370
- <script src="../../assets/javascripts/bundle.50899def.min.js"></script>
10373
+ <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
10371
10374
 
10372
10375
 
10373
10376
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -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.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7394,12 +7396,12 @@
7394
7396
 
7395
7397
 
7396
7398
  <li class="md-nav__item">
7397
- <a href="../apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7399
+ <a href="../apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7398
7400
 
7399
7401
 
7400
7402
 
7401
7403
  <span class="md-ellipsis">
7402
- Populating Extensibility Features
7404
+ Prepopulating Data
7403
7405
 
7404
7406
  </span>
7405
7407
 
@@ -10336,7 +10338,8 @@ erDiagram
10336
10338
  <!-- RTD version flyout injected on live site -->
10337
10339
  <div id="readthedocs-embed-flyout"></div>
10338
10340
 
10339
- <div class="md-social">
10341
+
10342
+ <div class="md-social">
10340
10343
 
10341
10344
 
10342
10345
 
@@ -10392,10 +10395,10 @@ erDiagram
10392
10395
 
10393
10396
 
10394
10397
 
10395
- <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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10398
+ <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10396
10399
 
10397
10400
 
10398
- <script src="../../assets/javascripts/bundle.50899def.min.js"></script>
10401
+ <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
10399
10402
 
10400
10403
 
10401
10404
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -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.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7394,12 +7396,12 @@
7394
7396
 
7395
7397
 
7396
7398
  <li class="md-nav__item">
7397
- <a href="../apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7399
+ <a href="../apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7398
7400
 
7399
7401
 
7400
7402
 
7401
7403
  <span class="md-ellipsis">
7402
- Populating Extensibility Features
7404
+ Prepopulating Data
7403
7405
 
7404
7406
  </span>
7405
7407
 
@@ -10502,7 +10504,7 @@
10502
10504
  <li><code>compose_dir</code>: the full path to the directory containing the Docker Compose YAML files (default: <code>"&lt;nautobot source directory&gt;/development"</code>)</li>
10503
10505
  <li><code>compose_files</code>: the Docker Compose YAML file(s) to use (default: <code>["docker-compose.yml", "docker-compose.postgres.yml", "docker-compose.dev.yml"]</code>)</li>
10504
10506
  <li><code>docker_image_names_main</code> and <code>docker_image_names_develop</code>: Used when <a href="release-checklist.html#publish-docker-images">building Docker images for publication</a>; you shouldn't generally need to change these.</li>
10505
- <li><code>ephemeral_ports</code>: Setting this value to <code>True</code> will make all Nautobot containers with published ports expose themselves with dynamic ports. This is useful when running multiple Nautobot versions at the same time on the same machine so you won't experience system port conflicts.</li>
10507
+ <li><code>ephemeral_ports</code>: Setting this value to <code>True</code> and not using any custom compose files will make all Nautobot containers with published ports expose themselves with dynamic ports. This is useful when running multiple Nautobot versions at the same time on the same machine so you won't experience system port conflicts. If setting <code>compose_files</code>, this will have no effect so please ensure to manually add the <code>docker-compose.ephemeral-ports.yml</code> to your list.</li>
10506
10508
  </ul>
10507
10509
  <p>These setting may be overridden several different ways (from highest to lowest precedence):</p>
10508
10510
  <ul>
@@ -10775,7 +10777,8 @@ then copy the <code>launch:</code> values to the <code>.vscode/launch.json</code
10775
10777
  <!-- RTD version flyout injected on live site -->
10776
10778
  <div id="readthedocs-embed-flyout"></div>
10777
10779
 
10778
- <div class="md-social">
10780
+
10781
+ <div class="md-social">
10779
10782
 
10780
10783
 
10781
10784
 
@@ -10831,10 +10834,10 @@ then copy the <code>launch:</code> values to the <code>.vscode/launch.json</code
10831
10834
 
10832
10835
 
10833
10836
 
10834
- <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.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10837
+ <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.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10835
10838
 
10836
10839
 
10837
- <script src="../../assets/javascripts/bundle.50899def.min.js"></script>
10840
+ <script src="../../assets/javascripts/bundle.92b07e13.min.js"></script>
10838
10841
 
10839
10842
 
10840
10843
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});