nautobot 2.4.10__py3-none-any.whl → 2.4.12__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 (439) hide show
  1. nautobot/circuits/templates/circuits/circuittermination_retrieve.html +1 -114
  2. nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +1 -1
  3. nautobot/circuits/views.py +76 -6
  4. nautobot/cloud/navigation.py +1 -1
  5. nautobot/cloud/tests/test_views.py +13 -1
  6. nautobot/cloud/views.py +39 -9
  7. nautobot/core/celery/__init__.py +21 -0
  8. nautobot/core/celery/encoders.py +3 -0
  9. nautobot/core/forms/forms.py +4 -1
  10. nautobot/core/jobs/bulk_actions.py +8 -8
  11. nautobot/core/jobs/cleanup.py +11 -0
  12. nautobot/core/management/commands/generate_test_data.py +2 -1
  13. nautobot/core/templates/components/panel/header_extra_content_table.html +12 -1
  14. nautobot/core/templates/components/panel/panel.html +4 -0
  15. nautobot/core/templates/generic/object_retrieve.html +2 -1
  16. nautobot/core/testing/mixins.py +19 -1
  17. nautobot/core/testing/views.py +104 -8
  18. nautobot/core/tests/test_jobs.py +20 -4
  19. nautobot/core/tests/test_utils.py +17 -0
  20. nautobot/core/tests/test_views.py +2 -2
  21. nautobot/core/tests/test_views_utils.py +53 -2
  22. nautobot/core/ui/object_detail.py +5 -1
  23. nautobot/core/utils/lookup.py +4 -2
  24. nautobot/core/utils/module_loading.py +23 -0
  25. nautobot/core/views/generic.py +2 -12
  26. nautobot/core/views/mixins.py +19 -1
  27. nautobot/core/views/renderers.py +4 -13
  28. nautobot/core/views/utils.py +16 -0
  29. nautobot/dcim/api/serializers.py +13 -0
  30. nautobot/dcim/api/urls.py +1 -0
  31. nautobot/dcim/api/views.py +20 -0
  32. nautobot/dcim/apps.py +1 -0
  33. nautobot/dcim/factory.py +11 -0
  34. nautobot/dcim/filters/__init__.py +116 -0
  35. nautobot/dcim/filters/mixins.py +2 -1
  36. nautobot/dcim/forms.py +205 -19
  37. nautobot/dcim/migrations/0070_modulefamily_models.py +92 -0
  38. nautobot/dcim/models/__init__.py +2 -0
  39. nautobot/dcim/models/device_component_templates.py +14 -0
  40. nautobot/dcim/models/device_components.py +13 -1
  41. nautobot/dcim/models/devices.py +72 -0
  42. nautobot/dcim/navigation.py +16 -0
  43. nautobot/dcim/tables/__init__.py +2 -0
  44. nautobot/dcim/tables/devices.py +50 -0
  45. nautobot/dcim/tables/devicetypes.py +35 -1
  46. nautobot/dcim/tables/template_code.py +2 -0
  47. nautobot/dcim/templates/dcim/controller/base.html +1 -9
  48. nautobot/dcim/templates/dcim/controller_retrieve.html +2 -83
  49. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +2 -25
  50. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +1 -90
  51. nautobot/dcim/templates/dcim/inc/cable_toggle_buttons.html +1 -1
  52. nautobot/dcim/templates/dcim/interfaceredundancygroup_retrieve.html +1 -63
  53. nautobot/dcim/templates/dcim/location.html +2 -249
  54. nautobot/dcim/templates/dcim/location_edit.html +2 -38
  55. nautobot/dcim/templates/dcim/location_retrieve.html +249 -0
  56. nautobot/dcim/templates/dcim/location_update.html +38 -0
  57. nautobot/dcim/templates/dcim/module_update.html +1 -0
  58. nautobot/dcim/templates/dcim/modulebay_retrieve.html +93 -1
  59. nautobot/dcim/templates/dcim/modulefamily_retrieve.html +31 -0
  60. nautobot/dcim/templates/dcim/moduletype_retrieve.html +6 -0
  61. nautobot/dcim/templates/dcim/powerfeed_retrieve.html +1 -160
  62. nautobot/dcim/templates/dcim/virtualchassis.html +2 -51
  63. nautobot/dcim/templates/dcim/virtualchassis_add.html +2 -22
  64. nautobot/dcim/templates/dcim/virtualchassis_create.html +22 -0
  65. nautobot/dcim/templates/dcim/virtualchassis_edit.html +2 -93
  66. nautobot/dcim/templates/dcim/virtualchassis_retrieve.html +51 -0
  67. nautobot/dcim/templates/dcim/virtualchassis_update.html +93 -0
  68. nautobot/dcim/tests/test_api.py +35 -0
  69. nautobot/dcim/tests/test_filters.py +102 -3
  70. nautobot/dcim/tests/test_models.py +146 -0
  71. nautobot/dcim/tests/test_views.py +70 -97
  72. nautobot/dcim/urls.py +5 -80
  73. nautobot/dcim/views.py +584 -342
  74. nautobot/extras/api/views.py +9 -2
  75. nautobot/extras/datasources/git.py +9 -1
  76. nautobot/extras/forms/forms.py +9 -5
  77. nautobot/extras/jobs.py +4 -2
  78. nautobot/extras/jobs_ui.py +208 -0
  79. nautobot/extras/models/datasources.py +5 -8
  80. nautobot/extras/models/jobs.py +5 -0
  81. nautobot/extras/models/tags.py +4 -0
  82. nautobot/extras/plugins/__init__.py +3 -0
  83. nautobot/extras/tables.py +40 -3
  84. nautobot/extras/templates/extras/configcontext.html +2 -220
  85. nautobot/extras/templates/extras/configcontext_edit.html +2 -50
  86. nautobot/extras/templates/extras/configcontext_retrieve.html +2 -0
  87. nautobot/extras/templates/extras/configcontext_update.html +50 -0
  88. nautobot/extras/templates/extras/configcontextschema.html +2 -48
  89. nautobot/extras/templates/extras/configcontextschema_edit.html +2 -19
  90. nautobot/extras/templates/extras/configcontextschema_retrieve.html +48 -0
  91. nautobot/extras/templates/extras/configcontextschema_update.html +19 -0
  92. nautobot/extras/templates/extras/inc/configcontext_data.html +1 -0
  93. nautobot/extras/templates/extras/inc/configcontext_format.html +6 -0
  94. nautobot/extras/templates/extras/job_detail.html +1 -326
  95. nautobot/extras/templates/extras/job_edit.html +12 -6
  96. nautobot/extras/templates/extras/tag.html +2 -52
  97. nautobot/extras/templates/extras/tag_edit.html +2 -15
  98. nautobot/extras/templates/extras/tag_retrieve.html +2 -0
  99. nautobot/extras/templates/extras/tag_update.html +15 -0
  100. nautobot/extras/templates/extras/team_retrieve.html +2 -2
  101. nautobot/extras/tests/test_api.py +15 -15
  102. nautobot/extras/tests/test_filters.py +4 -4
  103. nautobot/extras/tests/test_jobs.py +23 -10
  104. nautobot/extras/tests/test_models.py +19 -8
  105. nautobot/extras/tests/test_plugins.py +6 -3
  106. nautobot/extras/tests/test_views.py +66 -11
  107. nautobot/extras/urls.py +4 -134
  108. nautobot/extras/views.py +186 -178
  109. nautobot/ipam/models.py +19 -4
  110. nautobot/ipam/tables.py +19 -0
  111. nautobot/ipam/templates/ipam/vlan.html +2 -84
  112. nautobot/ipam/templates/ipam/vlan_edit.html +2 -24
  113. nautobot/ipam/templates/ipam/vlan_retrieve.html +84 -0
  114. nautobot/ipam/templates/ipam/vlan_update.html +24 -0
  115. nautobot/ipam/tests/test_views.py +5 -0
  116. nautobot/ipam/urls.py +1 -21
  117. nautobot/ipam/views.py +45 -70
  118. nautobot/project-static/docs/404.html +33 -10
  119. nautobot/project-static/docs/apps/index.html +33 -10
  120. nautobot/project-static/docs/apps/nautobot-apps.html +33 -10
  121. nautobot/project-static/docs/assets/javascripts/{bundle.13a4f30d.min.js → bundle.56ea9cef.min.js} +2 -2
  122. nautobot/project-static/docs/assets/javascripts/{bundle.13a4f30d.min.js.map → bundle.56ea9cef.min.js.map} +2 -2
  123. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +33 -10
  124. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +33 -10
  125. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +33 -10
  126. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +33 -10
  127. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +33 -10
  128. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +33 -10
  129. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +33 -10
  130. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +33 -10
  131. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +33 -10
  132. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +33 -10
  133. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +33 -10
  134. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +33 -10
  135. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +33 -10
  136. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +33 -10
  137. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +33 -10
  138. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +33 -10
  139. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +33 -10
  140. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +33 -10
  141. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +33 -10
  142. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +122 -10
  143. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +33 -10
  144. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +33 -10
  145. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +33 -10
  146. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +33 -10
  147. nautobot/project-static/docs/development/apps/api/configuration-view.html +33 -10
  148. nautobot/project-static/docs/development/apps/api/database-backend-config.html +33 -10
  149. nautobot/project-static/docs/development/apps/api/models/django-admin.html +33 -10
  150. nautobot/project-static/docs/development/apps/api/models/global-search.html +33 -10
  151. nautobot/project-static/docs/development/apps/api/models/graphql.html +33 -10
  152. nautobot/project-static/docs/development/apps/api/models/index.html +33 -10
  153. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +42 -10
  154. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +33 -10
  155. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +33 -10
  156. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +33 -10
  157. nautobot/project-static/docs/development/apps/api/platform-features/index.html +33 -10
  158. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +33 -10
  159. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +33 -10
  160. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +33 -10
  161. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +34 -11
  162. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +33 -10
  163. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +33 -10
  164. nautobot/project-static/docs/development/apps/api/prometheus.html +33 -10
  165. nautobot/project-static/docs/development/apps/api/setup.html +33 -10
  166. nautobot/project-static/docs/development/apps/api/testing.html +33 -10
  167. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +33 -10
  168. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +33 -10
  169. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +33 -10
  170. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +33 -10
  171. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +33 -10
  172. nautobot/project-static/docs/development/apps/api/views/base-template.html +33 -10
  173. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +33 -10
  174. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +33 -10
  175. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +33 -10
  176. nautobot/project-static/docs/development/apps/api/views/index.html +33 -10
  177. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +33 -10
  178. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +33 -10
  179. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +33 -10
  180. nautobot/project-static/docs/development/apps/api/views/notes.html +33 -10
  181. nautobot/project-static/docs/development/apps/api/views/rest-api.html +33 -10
  182. nautobot/project-static/docs/development/apps/api/views/urls.html +33 -10
  183. nautobot/project-static/docs/development/apps/index.html +33 -10
  184. nautobot/project-static/docs/development/apps/migration/code-updates.html +33 -10
  185. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +33 -10
  186. nautobot/project-static/docs/development/apps/migration/from-v1.html +33 -10
  187. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +33 -10
  188. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +33 -10
  189. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +33 -10
  190. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +33 -10
  191. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +33 -10
  192. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +33 -10
  193. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +33 -10
  194. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +33 -10
  195. nautobot/project-static/docs/development/apps/porting-from-netbox.html +33 -10
  196. nautobot/project-static/docs/development/core/application-registry.html +33 -10
  197. nautobot/project-static/docs/development/core/best-practices.html +33 -10
  198. nautobot/project-static/docs/development/core/bootstrap-ui.html +33 -10
  199. nautobot/project-static/docs/development/core/caching.html +33 -10
  200. nautobot/project-static/docs/development/core/controllers.html +33 -10
  201. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +33 -10
  202. nautobot/project-static/docs/development/core/generic-views.html +33 -10
  203. nautobot/project-static/docs/development/core/getting-started.html +33 -10
  204. nautobot/project-static/docs/development/core/homepage.html +33 -10
  205. nautobot/project-static/docs/development/core/index.html +33 -10
  206. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +33 -10
  207. nautobot/project-static/docs/development/core/model-checklist.html +33 -10
  208. nautobot/project-static/docs/development/core/model-features.html +33 -10
  209. nautobot/project-static/docs/development/core/natural-keys.html +33 -10
  210. nautobot/project-static/docs/development/core/navigation-menu.html +33 -10
  211. nautobot/project-static/docs/development/core/release-checklist.html +33 -10
  212. nautobot/project-static/docs/development/core/role-internals.html +33 -10
  213. nautobot/project-static/docs/development/core/settings.html +33 -10
  214. nautobot/project-static/docs/development/core/style-guide.html +33 -10
  215. nautobot/project-static/docs/development/core/templates.html +33 -10
  216. nautobot/project-static/docs/development/core/testing.html +33 -10
  217. nautobot/project-static/docs/development/core/ui-component-framework.html +33 -10
  218. nautobot/project-static/docs/development/core/user-preferences.html +33 -10
  219. nautobot/project-static/docs/development/index.html +33 -10
  220. nautobot/project-static/docs/development/jobs/getting-started.html +33 -10
  221. nautobot/project-static/docs/development/jobs/index.html +33 -10
  222. nautobot/project-static/docs/development/jobs/installation.html +33 -10
  223. nautobot/project-static/docs/development/jobs/job-extensions.html +33 -10
  224. nautobot/project-static/docs/development/jobs/job-logging.html +33 -10
  225. nautobot/project-static/docs/development/jobs/job-patterns.html +33 -10
  226. nautobot/project-static/docs/development/jobs/job-structure.html +33 -10
  227. nautobot/project-static/docs/development/jobs/migration/from-v1.html +33 -10
  228. nautobot/project-static/docs/development/jobs/testing.html +33 -10
  229. nautobot/project-static/docs/index.html +33 -10
  230. nautobot/project-static/docs/insert-analytics.sh +36 -0
  231. nautobot/project-static/docs/objects.inv +0 -0
  232. nautobot/project-static/docs/overview/application_stack.html +33 -10
  233. nautobot/project-static/docs/overview/design_philosophy.html +33 -10
  234. nautobot/project-static/docs/release-notes/index.html +33 -10
  235. nautobot/project-static/docs/release-notes/version-1.0.html +33 -10
  236. nautobot/project-static/docs/release-notes/version-1.1.html +33 -10
  237. nautobot/project-static/docs/release-notes/version-1.2.html +33 -10
  238. nautobot/project-static/docs/release-notes/version-1.3.html +33 -10
  239. nautobot/project-static/docs/release-notes/version-1.4.html +33 -10
  240. nautobot/project-static/docs/release-notes/version-1.5.html +33 -10
  241. nautobot/project-static/docs/release-notes/version-1.6.html +33 -10
  242. nautobot/project-static/docs/release-notes/version-2.0.html +33 -10
  243. nautobot/project-static/docs/release-notes/version-2.1.html +33 -10
  244. nautobot/project-static/docs/release-notes/version-2.2.html +33 -10
  245. nautobot/project-static/docs/release-notes/version-2.3.html +33 -10
  246. nautobot/project-static/docs/release-notes/version-2.4.html +363 -10
  247. nautobot/project-static/docs/requirements.txt +1 -1
  248. nautobot/project-static/docs/search/search_index.json +1 -1
  249. nautobot/project-static/docs/sitemap.xml +302 -298
  250. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  251. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +33 -10
  252. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +33 -10
  253. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +33 -10
  254. nautobot/project-static/docs/user-guide/administration/configuration/index.html +33 -10
  255. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +33 -10
  256. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +33 -10
  257. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +33 -10
  258. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +33 -10
  259. nautobot/project-static/docs/user-guide/administration/guides/docker.html +33 -10
  260. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +33 -10
  261. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +33 -10
  262. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +33 -10
  263. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +33 -10
  264. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +33 -10
  265. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +33 -10
  266. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +33 -10
  267. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +33 -10
  268. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +33 -10
  269. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +33 -10
  270. nautobot/project-static/docs/user-guide/administration/installation/index.html +33 -10
  271. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +33 -10
  272. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +33 -10
  273. nautobot/project-static/docs/user-guide/administration/installation/services.html +33 -10
  274. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +33 -10
  275. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +33 -10
  276. nautobot/project-static/docs/user-guide/administration/security/index.html +33 -10
  277. nautobot/project-static/docs/user-guide/administration/security/notices.html +33 -10
  278. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +33 -10
  279. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +33 -10
  280. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +33 -10
  281. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +33 -10
  282. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +33 -10
  283. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +33 -10
  284. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +33 -10
  285. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +33 -10
  286. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +33 -10
  287. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +33 -10
  288. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +33 -10
  289. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +33 -10
  290. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +33 -10
  291. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +33 -10
  292. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +33 -10
  293. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +33 -10
  294. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +33 -10
  295. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +33 -10
  296. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +33 -10
  297. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +33 -10
  298. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +33 -10
  299. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +33 -10
  300. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +33 -10
  301. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +33 -10
  302. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +33 -10
  303. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +33 -10
  304. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +33 -10
  305. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +33 -10
  306. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +33 -10
  307. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +33 -10
  308. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +33 -10
  309. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +33 -10
  310. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +33 -10
  311. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +33 -10
  312. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +45 -22
  313. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +33 -10
  314. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +33 -10
  315. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +33 -10
  316. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +33 -10
  317. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +33 -10
  318. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +33 -10
  319. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +33 -10
  320. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +33 -10
  321. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +33 -10
  322. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +33 -10
  323. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +37 -10
  324. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +37 -10
  325. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +37 -10
  326. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +10261 -0
  327. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +36 -13
  328. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +33 -10
  329. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +33 -10
  330. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +33 -10
  331. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +33 -10
  332. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +33 -10
  333. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +33 -10
  334. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +33 -10
  335. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +33 -10
  336. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +33 -10
  337. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +33 -10
  338. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +33 -10
  339. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +33 -10
  340. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +33 -10
  341. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +33 -10
  342. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +33 -10
  343. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +33 -10
  344. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +33 -10
  345. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +33 -10
  346. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +33 -10
  347. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +33 -10
  348. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +33 -10
  349. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +33 -10
  350. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +33 -10
  351. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +33 -10
  352. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +33 -10
  353. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +33 -10
  354. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +33 -10
  355. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +33 -10
  356. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +33 -10
  357. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +33 -10
  358. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +33 -10
  359. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +33 -10
  360. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +33 -10
  361. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +33 -10
  362. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +33 -10
  363. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +33 -10
  364. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +33 -10
  365. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +33 -10
  366. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +33 -10
  367. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +33 -10
  368. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +33 -10
  369. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +33 -10
  370. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +33 -10
  371. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +33 -10
  372. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +33 -10
  373. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +33 -10
  374. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +33 -10
  375. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +33 -10
  376. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +33 -10
  377. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +33 -10
  378. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +33 -10
  379. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +33 -10
  380. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +44 -18
  381. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +33 -10
  382. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +33 -10
  383. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +33 -10
  384. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +33 -10
  385. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +33 -10
  386. nautobot/project-static/docs/user-guide/index.html +33 -10
  387. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +33 -10
  388. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +33 -10
  389. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +33 -10
  390. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +33 -10
  391. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +33 -10
  392. nautobot/project-static/docs/user-guide/platform-functionality/events.html +33 -10
  393. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +33 -10
  394. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +33 -10
  395. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +39 -11
  396. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +33 -10
  397. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +33 -10
  398. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +33 -10
  399. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +33 -10
  400. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +33 -10
  401. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +33 -10
  402. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +33 -10
  403. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +33 -10
  404. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +33 -10
  405. nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +33 -10
  406. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +33 -10
  407. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +33 -10
  408. nautobot/project-static/docs/user-guide/platform-functionality/note.html +33 -10
  409. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +33 -10
  410. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +33 -10
  411. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +33 -10
  412. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +33 -10
  413. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +33 -10
  414. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +33 -10
  415. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +33 -10
  416. nautobot/project-static/docs/user-guide/platform-functionality/role.html +33 -10
  417. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +33 -10
  418. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +33 -10
  419. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +33 -10
  420. nautobot/project-static/docs/user-guide/platform-functionality/status.html +33 -10
  421. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +33 -10
  422. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +33 -10
  423. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +33 -10
  424. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +33 -10
  425. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +33 -10
  426. nautobot/tenancy/tables.py +2 -0
  427. nautobot/virtualization/tests/test_views.py +1 -1
  428. nautobot/wireless/forms.py +0 -1
  429. nautobot/wireless/models.py +1 -1
  430. nautobot/wireless/navigation.py +1 -1
  431. nautobot/wireless/tables.py +18 -3
  432. {nautobot-2.4.10.dist-info → nautobot-2.4.12.dist-info}/METADATA +4 -4
  433. {nautobot-2.4.10.dist-info → nautobot-2.4.12.dist-info}/RECORD +439 -419
  434. /nautobot/dcim/templates/dcim/{platform_edit.html → platform_create.html} +0 -0
  435. /nautobot/extras/test_jobs/{pass.py → pass_job.py} +0 -0
  436. {nautobot-2.4.10.dist-info → nautobot-2.4.12.dist-info}/LICENSE.txt +0 -0
  437. {nautobot-2.4.10.dist-info → nautobot-2.4.12.dist-info}/NOTICE +0 -0
  438. {nautobot-2.4.10.dist-info → nautobot-2.4.12.dist-info}/WHEEL +0 -0
  439. {nautobot-2.4.10.dist-info → nautobot-2.4.12.dist-info}/entry_points.txt +0 -0
@@ -1,327 +1,2 @@
1
1
  {% extends 'generic/object_retrieve.html' %}
2
- {% load helpers %}
3
- {% load perms %}
4
- {% load plugins %}
5
-
6
- {% block extra_breadcrumbs %}
7
- <li>{{ object.grouping }}</li>
8
- {% endblock extra_breadcrumbs %}
9
-
10
- {% block extra_buttons %}
11
- {% if perms.extras.run_job %}
12
- <a href="{% url 'extras:job_run' pk=object.pk %}" class="btn btn-primary"
13
- {% if not object.installed or not object.enabled %}disabled="disabled"{% endif %}>
14
- <i class="mdi mdi-play" aria-hidden="true"></i> Run/Schedule
15
- </a>
16
- {% endif %}
17
- {% endblock extra_buttons %}
18
-
19
- {% block content_left_page %}
20
- <div class="panel panel-default">
21
- <div class="panel-heading">
22
- <strong>Source Code</strong>
23
- </div>
24
- <table class="table table-hover panel-body attr-table">
25
- <tr>
26
- <td>Module</td>
27
- <td><code>{{ object.module_name }}</code></td>
28
- </tr>
29
- <tr>
30
- <td>Job Class</td>
31
- <td><code>{{ object.job_class_name }}</code></td>
32
- </tr>
33
- <tr>
34
- <td>Class Path</td>
35
- <td>
36
- <span class="hover_copy">
37
- <span id="job_class_path_copy"><code>{{ object.class_path }}</code></span>
38
- <button class="btn btn-inline btn-default hover_copy_button" data-clipboard-target="#job_class_path_copy">
39
- <span class="mdi mdi-content-copy"></span>
40
- </button>
41
- </span>
42
- </td>
43
- </tr>
44
- <tr>
45
- <td>Installed</td>
46
- <td>{{ object.installed | render_boolean }}</td>
47
- </tr>
48
- <tr>
49
- <td>Is Job Hook Receiver</td>
50
- <td>{{ object.is_job_hook_receiver | render_boolean }}</td>
51
- </tr>
52
- <tr>
53
- <td>Is Job Button Receiver</td>
54
- <td>{{ object.is_job_button_receiver | render_boolean }}</td>
55
- </tr>
56
- </table>
57
- </div>
58
- <div class="panel panel-default">
59
- <div class="panel-heading">
60
- <strong>Job</strong>
61
- </div>
62
- <table class="table table-hover panel-body attr-table">
63
- <tr>
64
- <td>Grouping</td>
65
- <td>{{ object.grouping }}</td>
66
- <td>
67
- {% if object.grouping_override %}
68
- <span class="text-muted">
69
- overridden; default is
70
- {% if object.installed %}
71
- “{{ object.job_class.grouping }}”
72
- {% else %}
73
- unknown (not currently installed)
74
- {% endif %}
75
- </span>
76
- {% endif %}
77
- </td>
78
- </tr>
79
- <tr>
80
- <td>Name</td>
81
- <td>{{ object.name }}</td>
82
- <td>
83
- {% if object.name_override %}
84
- <span class="text-muted">
85
- overridden; default is
86
- {% if object.installed %}
87
- “{{ object.job_class.name }}”
88
- {% else %}
89
- unknown (not currently installed)
90
- {% endif %}
91
- </span>
92
- {% endif %}
93
- </td>
94
- </tr>
95
- <tr>
96
- <td>Description</td>
97
- <td>{{ object.description | render_markdown | placeholder }}</td>
98
- <td>
99
- {% if object.description_override %}
100
- <div class="text-muted">
101
- overridden; default is:<br>
102
- {% if object.installed %}
103
- {{ object.job_class.description | render_markdown | placeholder }}
104
- {% else %}
105
- unknown (not currently installed)
106
- {% endif %}
107
- </div>
108
- {% endif %}
109
- </td>
110
- </tr>
111
- <tr>
112
- <td>Enabled</td>
113
- <td>{{ object.enabled | render_boolean }}</td>
114
- <td></td>
115
- </tr>
116
- <tr>
117
- <td>Job Results</td>
118
- <td>
119
- {% if object.job_results.exists %}
120
- <a href="{% url 'extras:jobresult_list' %}?job_model={{ object.name | urlencode }}">{{ object.job_results.count }}</a>
121
- {% else %}
122
- {{ None|placeholder }}
123
- {% endif %}
124
- </td>
125
- <td></td>
126
- </tr>
127
- </table>
128
- </div>
129
- {% endblock content_left_page %}
130
-
131
- {% block content_right_page %}
132
- <div class="panel panel-default">
133
- <div class="panel-heading">
134
- <strong>Properties</strong>
135
- </div>
136
- <table class="table table-hover panel-body attr-table">
137
- <tr>
138
- <td>Approval Required to Execute</td>
139
- <td>{{ object.approval_required | render_boolean }}</td>
140
- <td>
141
- {% if object.approval_required_override %}
142
- <span class="text-muted">
143
- overridden; default is
144
- {% if object.installed %}
145
- {{ object.job_class.approval_required | render_boolean }}
146
- {% else %}
147
- unknown (not currently installed)
148
- {% endif %}
149
- </span>
150
- {% endif %}
151
- </td>
152
- </tr>
153
- <tr>
154
- <td>Supports Dryrun</td>
155
- <td colspan="2">{{ object.supports_dryrun | render_boolean }}</td>
156
- </tr>
157
- <tr>
158
- <td>Default to Dryrun</td>
159
- <td>{{ object.dryrun_default | render_boolean }}</td>
160
- <td>
161
- {% if object.dryrun_default_override %}
162
- <span class="text-muted">
163
- overridden; default is
164
- {% if object.installed %}
165
- {{ object.job_class.dryrun_default | render_boolean }}
166
- {% else %}
167
- unknown (not currently installed)
168
- {% endif %}
169
- </span>
170
- {% endif %}
171
- </td>
172
- </tr>
173
- <tr>
174
- <td>Read-Only Execution</td>
175
- <td colspan="2">{{ object.read_only | render_boolean }}</td>
176
- </tr>
177
- <tr>
178
- <td>Hide from Default UI</td>
179
- <td>{{ object.hidden | render_boolean }}</td>
180
- <td>
181
- {% if object.hidden_override %}
182
- <span class="text-muted">
183
- overridden; default is
184
- {% if object.installed %}
185
- {{ object.job_class.hidden | render_boolean }}
186
- {% else %}
187
- unknown (not currently installed)
188
- {% endif %}
189
- </span>
190
- {% endif %}
191
- </td>
192
- </tr>
193
- <tr>
194
- <td>Has Sensitive Variables</td>
195
- <td>{{ object.has_sensitive_variables | render_boolean }}</td>
196
- <td>
197
- {% if object.has_sensitive_variables_override %}
198
- <span class="text-muted">
199
- overridden; default is
200
- {% if object.installed %}
201
- {{ object.job_class.has_sensitive_variables | render_boolean }}
202
- {% else %}
203
- unknown (not currently installed)
204
- {% endif %}
205
- </span>
206
- {% endif %}
207
- </td>
208
- </tr>
209
- <tr>
210
- <td>Is Singleton</td>
211
- <td>{{ object.is_singleton | render_boolean }}</td>
212
- <td>
213
- {% if object.is_singleton_override %}
214
- <span class="text-muted">
215
- overridden; default is
216
- {% if object.installed %}
217
- {{ object.job_class.is_singleton | render_boolean }}
218
- {% else %}
219
- unknown (not currently installed)
220
- {% endif %}
221
- </span>
222
- {% endif %}
223
- </td>
224
- </tr>
225
- <tr>
226
- <td>Execution Soft Time Limit</td>
227
- <td>
228
- {% if object.soft_time_limit > 0 %}
229
- {{ object.soft_time_limit }} seconds
230
- {% else %}
231
- {{ "CELERY_TASK_SOFT_TIME_LIMIT" | settings_or_config }} seconds (system default)
232
- {% endif %}
233
- </td>
234
- <td>
235
- {% if object.soft_time_limit_override %}
236
- <span class="text-muted">
237
- overridden; default is
238
- {% if object.installed %}
239
- {% if object.job_class.soft_time_limit > 0 %}
240
- {{ object.job_class.soft_time_limit }} seconds
241
- {% else %}
242
- {{ "CELERY_TASK_SOFT_TIME_LIMIT" | settings_or_config }} seconds (system default)
243
- {% endif %}
244
- {% else %}
245
- unknown (not currently installed)
246
- {% endif %}
247
- </span>
248
- {% endif %}
249
- </td>
250
- </tr>
251
- <tr>
252
- <td>Execution Hard Time Limit</td>
253
- <td>
254
- {% if object.time_limit > 0 %}
255
- {{ object.time_limit }} seconds
256
- {% else %}
257
- {{ "CELERY_TASK_TIME_LIMIT" | settings_or_config }} seconds (system default)
258
- {% endif %}
259
- </td>
260
- <td>
261
- {% if object.time_limit_override %}
262
- <span class="text-muted">
263
- overridden; default is
264
- {% if object.installed %}
265
- {% if object.job_class.time_limit > 0 %}
266
- {{ object.job_class.time_limit }} seconds
267
- {% else %}
268
- {{ "CELERY_TASK_TIME_LIMIT" | settings_or_config }} seconds (system default)
269
- {% endif %}
270
- {% else %}
271
- unknown (not currently installed)
272
- {% endif %}
273
- </span>
274
- {% endif %}
275
- </td>
276
- </tr>
277
- <tr>
278
- <td>Job Queues</td>
279
- <td>
280
- {% if object.job_queues.exists %}
281
- <ul>
282
- {% for queue in object.job_queues.all %}
283
- <li>{{ queue|hyperlinked_object }}</li>
284
- {% endfor %}
285
- </ul>
286
- {% else %}
287
- {{ None|placeholder }}
288
- {% endif %}
289
- </td>
290
- <td>
291
- {% if object.job_queues_override %}
292
- <span class="text-muted">
293
- overridden; default is:<br>
294
- {% if object.installed %}
295
- {% include 'extras/inc/json_data.html' with data=object.job_class.task_queues format="json" %}
296
- {% else %}
297
- unknown (not currently installed)
298
- {% endif %}
299
- </span>
300
- {% endif %}
301
- </td>
302
- </tr>
303
- <tr>
304
- <td>Default Job Queue</td>
305
- <td>
306
- {{ object.default_job_queue|hyperlinked_object }}
307
- </td>
308
- <td>
309
- {% if object.default_job_queue_override %}
310
- <span class="text-muted">
311
- overridden; default is:
312
- {% if object.installed %}
313
- {% if object.job_class.task_queues|length > 1 %}
314
- {{ object.job_class.task_queues.0 }}
315
- {% else %}
316
- {{ None|placeholder }}
317
- {% endif %}
318
- {% else %}
319
- unknown (not currently installed)
320
- {% endif %}
321
- </span>
322
- {% endif %}
323
- </td>
324
- </tr>
325
- </table>
326
- </div>
327
- {% endblock content_right_page %}
2
+ {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}
@@ -115,7 +115,7 @@
115
115
  const field_name = field_id.slice(3);
116
116
  if ($(this).prop("checked")) {
117
117
  field.attr("readonly", null);
118
- field.attr("disabled", null);
118
+ field.prop("disabled", false);
119
119
  } else {
120
120
  /* Revert the field to its default value */
121
121
  if (field.attr("type") == "checkbox") {
@@ -131,11 +131,11 @@
131
131
  * Note that "disabled" fields aren't included in form submission, so we have to be sure to
132
132
  * re-enable them at form submission time.
133
133
  */
134
- field.attr("disabled", "disabled");
134
+ field.prop("disabled", true);
135
135
  } else {
136
136
  /* Do we have a job class object to derive properties from? */
137
137
  if (job_class_properties != "") {
138
- if (field_name != "job_queues") {
138
+ if (field_name != "job_queues" && field_name != "default_job_queue") {
139
139
  field.val(job_class_properties[field_name]);
140
140
  }
141
141
  } else if (field_name != "description") {
@@ -145,17 +145,23 @@
145
145
  /* Textarea fields don't have a "value" attribute */
146
146
  field.val(description_default);
147
147
  }
148
- field.attr("readonly", "readonly");
148
+ if (field_name == "job_queues" || field_name == "default_job_queue") {
149
+ field.prop("disabled", true);
150
+ } else {
151
+ field.attr("readonly", "readonly");
152
+ }
149
153
  }
150
154
  }
151
155
  });
152
156
  $("[id^=id_][id$=_override]").change();
153
157
 
154
- /* As mentioned above, we need to re-enable all checkboxes on form submission so they get included */
158
+ /* As mentioned above, we need to re-enable all checkboxes, job_queues and default_job_queue fields on form submission so they get included */
155
159
  $("form").submit(function() {
156
160
  $('input[type="checkbox"]:disabled').each(function() {
157
- $(this).attr("disabled", null);
161
+ $(this).prop("disabled", false);
158
162
  });
163
+ $('#id_job_queues').prop("disabled", false);
164
+ $('#id_default_job_queues').prop("disabled", false);
159
165
  });
160
166
  </script>
161
167
  {% endblock javascript %}
@@ -1,52 +1,2 @@
1
- {% extends 'generic/object_retrieve.html' %}
2
- {% load helpers %}
3
-
4
- {% block content_left_page %}
5
- <div class="panel panel-default">
6
- <div class="panel-heading">
7
- <strong>Tag</strong>
8
- </div>
9
- <table class="table table-hover panel-body attr-table">
10
- <tr>
11
- <td>Name</td>
12
- <td>
13
- {{ object.name }}
14
- </td>
15
- </tr>
16
- <tr>
17
- <td>Tagged Items</td>
18
- <td>
19
- {{ items_count }}
20
- </td>
21
- </tr>
22
- <tr>
23
- <td>Color</td>
24
- <td>
25
- <span class="label color-block" style="background-color: #{{ object.color }}">&nbsp;</span>
26
- </td>
27
- </tr>
28
- <tr>
29
- <td>Content Type(s)</td>
30
- <td>
31
- <ul class="list-unstyled">
32
- {% for ct in content_types %}
33
- <li>{{ ct }}</li>
34
- {% endfor %}
35
- </ul>
36
- </td>
37
- </tr>
38
- <tr>
39
- <td>Description</td>
40
- <td>
41
- {{ object.description|placeholder }}
42
- </td>
43
- </tr>
44
- </table>
45
- </div>
46
- {% endblock content_left_page %}
47
-
48
- {% block content_right_page %}
49
- {% include 'panel_table.html' with table=items_table heading='Tagged Objects' %}
50
- {% include 'inc/paginator.html' with paginator=items_table.paginator page=items_table.page %}
51
- <div class="row"></div>
52
- {% endblock content_right_page %}
1
+ {% extends 'extras/tag_retrieve.html' %}
2
+ {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}
@@ -1,15 +1,2 @@
1
- {% extends 'generic/object_create.html' %}
2
- {% load form_helpers %}
3
-
4
- {% block form %}
5
- <div class="panel panel-default">
6
- <div class="panel-heading"><strong>Tag</strong></div>
7
- <div class="panel-body">
8
- {% render_field form.name %}
9
- {% render_field form.color %}
10
- {% render_field form.description %}
11
- {% render_field form.content_types %}
12
- </div>
13
- </div>
14
- {% include 'inc/extras_features_edit_form_fields.html' %}
15
- {% endblock %}
1
+ {% extends 'extras/tag_update.html' %}
2
+ {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}
@@ -0,0 +1,2 @@
1
+ {% extends 'generic/object_retrieve.html' %}
2
+ {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}
@@ -0,0 +1,15 @@
1
+ {% extends 'generic/object_create.html' %}
2
+ {% load form_helpers %}
3
+
4
+ {% block form %}
5
+ <div class="panel panel-default">
6
+ <div class="panel-heading"><strong>Tag</strong></div>
7
+ <div class="panel-body">
8
+ {% render_field form.name %}
9
+ {% render_field form.color %}
10
+ {% render_field form.description %}
11
+ {% render_field form.content_types %}
12
+ </div>
13
+ </div>
14
+ {% include 'inc/extras_features_edit_form_fields.html' %}
15
+ {% endblock %}
@@ -1,2 +1,2 @@
1
- {% extends 'generic/object_retrieve.html' %}
2
- {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}
1
+ {% extends 'generic/object_retrieve.html' %}
2
+ {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}
@@ -1529,7 +1529,7 @@ class JobTest(
1529
1529
  mock_get_worker_count.return_value = 1
1530
1530
  obj_perm = ObjectPermission(
1531
1531
  name="Test permission",
1532
- constraints={"module_name__in": ["pass", "fail"]},
1532
+ constraints={"module_name__in": ["pass_job", "fail"]},
1533
1533
  actions=["run"],
1534
1534
  )
1535
1535
  obj_perm.save()
@@ -1543,10 +1543,10 @@ class JobTest(
1543
1543
  self.assertHttpStatus(response, status.HTTP_404_NOT_FOUND)
1544
1544
 
1545
1545
  # Try post to permitted job
1546
- job_model = Job.objects.get_for_class_path("pass.TestPassJob")
1546
+ job_model = Job.objects.get_for_class_path("pass_job.TestPassJob")
1547
1547
  job_model.enabled = True
1548
1548
  job_model.validated_save()
1549
- url = self.get_run_url("pass.TestPassJob")
1549
+ url = self.get_run_url("pass_job.TestPassJob")
1550
1550
  response = self.client.post(url, **self.header)
1551
1551
  self.assertHttpStatus(response, self.run_success_response_status)
1552
1552
 
@@ -1702,7 +1702,7 @@ class JobTest(
1702
1702
  # Assert that we have an immediate ScheduledJob and that it matches the job_model.
1703
1703
  schedule = ScheduledJob.objects.last()
1704
1704
  self.assertIsNotNone(schedule)
1705
- self.assertEqual(schedule.interval, JobExecutionType.TYPE_IMMEDIATELY)
1705
+ self.assertEqual(schedule.interval, JobExecutionType.TYPE_FUTURE)
1706
1706
  self.assertEqual(schedule.approval_required, self.job_model.approval_required)
1707
1707
  self.assertEqual(schedule.kwargs["var4"], str(device_role.pk))
1708
1708
 
@@ -2136,7 +2136,7 @@ class JobTest(
2136
2136
  @mock.patch("nautobot.extras.api.views.get_worker_count", return_value=1)
2137
2137
  def test_run_job_with_default_queue_with_empty_job_model_job_queues(self, _):
2138
2138
  self.add_permissions("extras.run_job")
2139
- job_model = Job.objects.get_for_class_path("pass.TestPassJob")
2139
+ job_model = Job.objects.get_for_class_path("pass_job.TestPassJob")
2140
2140
  data = {
2141
2141
  "task_queue": job_model.default_job_queue.name,
2142
2142
  }
@@ -2144,7 +2144,7 @@ class JobTest(
2144
2144
  job_model.job_queues.set([])
2145
2145
  job_model.enabled = True
2146
2146
  job_model.validated_save()
2147
- url = self.get_run_url("pass.TestPassJob")
2147
+ url = self.get_run_url("pass_job.TestPassJob")
2148
2148
  response = self.client.post(url, data, format="json", **self.header)
2149
2149
  self.assertHttpStatus(response, self.run_success_response_status)
2150
2150
 
@@ -2571,10 +2571,10 @@ class ScheduledJobTest(
2571
2571
  @classmethod
2572
2572
  def setUpTestData(cls):
2573
2573
  user = User.objects.create(username="user1", is_active=True)
2574
- job_model = Job.objects.get_for_class_path("pass.TestPassJob")
2574
+ job_model = Job.objects.get_for_class_path("pass_job.TestPassJob")
2575
2575
  ScheduledJob.objects.create(
2576
2576
  name="test1",
2577
- task="pass.TestPassJob",
2577
+ task="pass_job.TestPassJob",
2578
2578
  job_model=job_model,
2579
2579
  interval=JobExecutionType.TYPE_IMMEDIATELY,
2580
2580
  user=user,
@@ -2583,7 +2583,7 @@ class ScheduledJobTest(
2583
2583
  )
2584
2584
  ScheduledJob.objects.create(
2585
2585
  name="test2",
2586
- task="pass.TestPassJob",
2586
+ task="pass_job.TestPassJob",
2587
2587
  job_model=job_model,
2588
2588
  interval=JobExecutionType.TYPE_DAILY,
2589
2589
  user=user,
@@ -2593,7 +2593,7 @@ class ScheduledJobTest(
2593
2593
  )
2594
2594
  ScheduledJob.objects.create(
2595
2595
  name="test3",
2596
- task="pass.TestPassJob",
2596
+ task="pass_job.TestPassJob",
2597
2597
  job_model=job_model,
2598
2598
  interval=JobExecutionType.TYPE_CUSTOM,
2599
2599
  crontab="34 12 * * *",
@@ -2608,12 +2608,12 @@ class JobApprovalTest(APITestCase):
2608
2608
  @classmethod
2609
2609
  def setUpTestData(cls):
2610
2610
  cls.additional_user = User.objects.create(username="user1", is_active=True)
2611
- cls.job_model = Job.objects.get_for_class_path("pass.TestPassJob")
2611
+ cls.job_model = Job.objects.get_for_class_path("pass_job.TestPassJob")
2612
2612
  cls.job_model.enabled = True
2613
2613
  cls.job_model.save()
2614
2614
  cls.scheduled_job = ScheduledJob.objects.create(
2615
2615
  name="test pass",
2616
- task="pass.TestPassJob",
2616
+ task="pass_job.TestPassJob",
2617
2617
  job_model=cls.job_model,
2618
2618
  interval=JobExecutionType.TYPE_IMMEDIATELY,
2619
2619
  user=cls.additional_user,
@@ -2666,7 +2666,7 @@ class JobApprovalTest(APITestCase):
2666
2666
  self.add_permissions("extras.approve_job", "extras.view_scheduledjob", "extras.change_scheduledjob")
2667
2667
  scheduled_job = ScheduledJob.objects.create(
2668
2668
  name="test",
2669
- task="pass.TestPassJob",
2669
+ task="pass_job.TestPassJob",
2670
2670
  job_model=self.job_model,
2671
2671
  interval=JobExecutionType.TYPE_IMMEDIATELY,
2672
2672
  user=self.user,
@@ -2689,7 +2689,7 @@ class JobApprovalTest(APITestCase):
2689
2689
  self.add_permissions("extras.approve_job", "extras.view_scheduledjob", "extras.change_scheduledjob")
2690
2690
  scheduled_job = ScheduledJob.objects.create(
2691
2691
  name="test",
2692
- task="pass.TestPassJob",
2692
+ task="pass_job.TestPassJob",
2693
2693
  job_model=self.job_model,
2694
2694
  interval=JobExecutionType.TYPE_FUTURE,
2695
2695
  one_off=True,
@@ -2706,7 +2706,7 @@ class JobApprovalTest(APITestCase):
2706
2706
  self.add_permissions("extras.approve_job", "extras.view_scheduledjob", "extras.change_scheduledjob")
2707
2707
  scheduled_job = ScheduledJob.objects.create(
2708
2708
  name="test",
2709
- task="pass.TestPassJob",
2709
+ task="pass_job.TestPassJob",
2710
2710
  job_model=self.job_model,
2711
2711
  interval=JobExecutionType.TYPE_FUTURE,
2712
2712
  one_off=True,
@@ -994,11 +994,11 @@ class JobResultFilterSetTestCase(FilterTestCases.FilterTestCase):
994
994
  jobs = Job.objects.all()[:3]
995
995
  cls.jobs = jobs
996
996
  user = User.objects.create(username="user1", is_active=True)
997
- job_model = Job.objects.get_for_class_path("pass.TestPassJob")
997
+ job_model = Job.objects.get_for_class_path("pass_job.TestPassJob")
998
998
  scheduled_jobs = [
999
999
  ScheduledJob.objects.create(
1000
1000
  name="test1",
1001
- task="pass.TestPassJob",
1001
+ task="pass_job.TestPassJob",
1002
1002
  job_model=job_model,
1003
1003
  interval=JobExecutionType.TYPE_IMMEDIATELY,
1004
1004
  user=user,
@@ -1007,7 +1007,7 @@ class JobResultFilterSetTestCase(FilterTestCases.FilterTestCase):
1007
1007
  ),
1008
1008
  ScheduledJob.objects.create(
1009
1009
  name="test2",
1010
- task="pass.TestPassJob",
1010
+ task="pass_job.TestPassJob",
1011
1011
  job_model=job_model,
1012
1012
  interval=JobExecutionType.TYPE_DAILY,
1013
1013
  user=user,
@@ -1017,7 +1017,7 @@ class JobResultFilterSetTestCase(FilterTestCases.FilterTestCase):
1017
1017
  ),
1018
1018
  ScheduledJob.objects.create(
1019
1019
  name="test3",
1020
- task="pass.TestPassJob",
1020
+ task="pass_job.TestPassJob",
1021
1021
  job_model=job_model,
1022
1022
  interval=JobExecutionType.TYPE_CUSTOM,
1023
1023
  crontab="34 12 * * *",