nautobot 2.4.11__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 (354) 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/core/jobs/cleanup.py +4 -4
  6. nautobot/core/templates/components/panel/header_extra_content_table.html +12 -1
  7. nautobot/core/templates/components/panel/panel.html +4 -0
  8. nautobot/core/templates/generic/object_retrieve.html +1 -0
  9. nautobot/core/tests/test_utils.py +1 -177
  10. nautobot/core/tests/test_views.py +2 -2
  11. nautobot/core/ui/object_detail.py +1 -1
  12. nautobot/core/utils/module_loading.py +58 -63
  13. nautobot/dcim/filters/__init__.py +6 -0
  14. nautobot/dcim/filters/mixins.py +2 -1
  15. nautobot/dcim/models/devices.py +10 -0
  16. nautobot/dcim/tables/devices.py +2 -0
  17. nautobot/dcim/templates/dcim/controller/base.html +1 -9
  18. nautobot/dcim/templates/dcim/controller_retrieve.html +2 -83
  19. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +2 -25
  20. nautobot/dcim/templates/dcim/virtualchassis.html +2 -51
  21. nautobot/dcim/templates/dcim/virtualchassis_add.html +2 -22
  22. nautobot/dcim/templates/dcim/virtualchassis_create.html +22 -0
  23. nautobot/dcim/templates/dcim/virtualchassis_edit.html +2 -93
  24. nautobot/dcim/templates/dcim/virtualchassis_retrieve.html +51 -0
  25. nautobot/dcim/templates/dcim/virtualchassis_update.html +93 -0
  26. nautobot/dcim/urls.py +1 -58
  27. nautobot/dcim/views.py +145 -189
  28. nautobot/extras/datasources/git.py +2 -2
  29. nautobot/extras/jobs_ui.py +208 -0
  30. nautobot/extras/models/tags.py +4 -0
  31. nautobot/extras/tables.py +1 -1
  32. nautobot/extras/templates/extras/configcontextschema_retrieve.html +2 -2
  33. nautobot/extras/templates/extras/inc/configcontext_data.html +1 -1
  34. nautobot/extras/templates/extras/inc/configcontext_format.html +6 -0
  35. nautobot/extras/templates/extras/inc/json_data.html +1 -1
  36. nautobot/extras/templates/extras/inc/json_format.html +2 -2
  37. nautobot/extras/templates/extras/job_detail.html +1 -326
  38. nautobot/extras/templates/extras/tag_retrieve.html +1 -51
  39. nautobot/extras/views.py +80 -27
  40. nautobot/project-static/docs/404.html +2 -2
  41. nautobot/project-static/docs/apps/index.html +2 -2
  42. nautobot/project-static/docs/apps/nautobot-apps.html +2 -2
  43. nautobot/project-static/docs/assets/javascripts/{bundle.13a4f30d.min.js → bundle.56ea9cef.min.js} +2 -2
  44. nautobot/project-static/docs/assets/javascripts/{bundle.13a4f30d.min.js.map → bundle.56ea9cef.min.js.map} +2 -2
  45. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +2 -2
  46. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +2 -2
  47. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +2 -2
  48. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +2 -2
  49. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +2 -2
  50. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +2 -2
  51. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +2 -2
  52. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +2 -2
  53. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +2 -2
  54. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +2 -2
  55. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +2 -2
  56. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +2 -2
  57. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +2 -2
  58. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +2 -2
  59. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2 -2
  60. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +2 -2
  61. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +2 -2
  62. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +2 -2
  63. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +2 -2
  64. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +2 -2
  65. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +2 -2
  66. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +2 -2
  67. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +2 -2
  68. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +2 -2
  69. nautobot/project-static/docs/development/apps/api/configuration-view.html +2 -2
  70. nautobot/project-static/docs/development/apps/api/database-backend-config.html +2 -2
  71. nautobot/project-static/docs/development/apps/api/models/django-admin.html +2 -2
  72. nautobot/project-static/docs/development/apps/api/models/global-search.html +2 -2
  73. nautobot/project-static/docs/development/apps/api/models/graphql.html +2 -2
  74. nautobot/project-static/docs/development/apps/api/models/index.html +2 -2
  75. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +2 -2
  76. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +2 -2
  77. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +2 -2
  78. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +2 -2
  79. nautobot/project-static/docs/development/apps/api/platform-features/index.html +2 -2
  80. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +2 -2
  81. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +2 -2
  82. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +2 -2
  83. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +2 -2
  84. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +2 -2
  85. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +2 -2
  86. nautobot/project-static/docs/development/apps/api/prometheus.html +2 -2
  87. nautobot/project-static/docs/development/apps/api/setup.html +2 -2
  88. nautobot/project-static/docs/development/apps/api/testing.html +2 -2
  89. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +2 -2
  90. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +2 -2
  91. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +2 -2
  92. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +2 -2
  93. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +2 -2
  94. nautobot/project-static/docs/development/apps/api/views/base-template.html +2 -2
  95. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +2 -2
  96. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +2 -2
  97. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +2 -2
  98. nautobot/project-static/docs/development/apps/api/views/index.html +2 -2
  99. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +2 -2
  100. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +2 -2
  101. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +2 -2
  102. nautobot/project-static/docs/development/apps/api/views/notes.html +2 -2
  103. nautobot/project-static/docs/development/apps/api/views/rest-api.html +2 -2
  104. nautobot/project-static/docs/development/apps/api/views/urls.html +2 -2
  105. nautobot/project-static/docs/development/apps/index.html +2 -2
  106. nautobot/project-static/docs/development/apps/migration/code-updates.html +2 -2
  107. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +2 -2
  108. nautobot/project-static/docs/development/apps/migration/from-v1.html +2 -2
  109. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +2 -2
  110. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +2 -2
  111. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +2 -2
  112. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +2 -2
  113. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +2 -2
  114. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +2 -2
  115. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +2 -2
  116. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +2 -2
  117. nautobot/project-static/docs/development/apps/porting-from-netbox.html +2 -2
  118. nautobot/project-static/docs/development/core/application-registry.html +2 -2
  119. nautobot/project-static/docs/development/core/best-practices.html +2 -2
  120. nautobot/project-static/docs/development/core/bootstrap-ui.html +2 -2
  121. nautobot/project-static/docs/development/core/caching.html +2 -2
  122. nautobot/project-static/docs/development/core/controllers.html +2 -2
  123. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +2 -2
  124. nautobot/project-static/docs/development/core/generic-views.html +2 -2
  125. nautobot/project-static/docs/development/core/getting-started.html +2 -2
  126. nautobot/project-static/docs/development/core/homepage.html +2 -2
  127. nautobot/project-static/docs/development/core/index.html +2 -2
  128. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +2 -2
  129. nautobot/project-static/docs/development/core/model-checklist.html +2 -2
  130. nautobot/project-static/docs/development/core/model-features.html +2 -2
  131. nautobot/project-static/docs/development/core/natural-keys.html +2 -2
  132. nautobot/project-static/docs/development/core/navigation-menu.html +2 -2
  133. nautobot/project-static/docs/development/core/release-checklist.html +2 -2
  134. nautobot/project-static/docs/development/core/role-internals.html +2 -2
  135. nautobot/project-static/docs/development/core/settings.html +2 -2
  136. nautobot/project-static/docs/development/core/style-guide.html +2 -2
  137. nautobot/project-static/docs/development/core/templates.html +2 -2
  138. nautobot/project-static/docs/development/core/testing.html +2 -2
  139. nautobot/project-static/docs/development/core/ui-component-framework.html +2 -2
  140. nautobot/project-static/docs/development/core/user-preferences.html +2 -2
  141. nautobot/project-static/docs/development/index.html +2 -2
  142. nautobot/project-static/docs/development/jobs/getting-started.html +2 -6
  143. nautobot/project-static/docs/development/jobs/index.html +2 -2
  144. nautobot/project-static/docs/development/jobs/installation.html +2 -2
  145. nautobot/project-static/docs/development/jobs/job-extensions.html +2 -2
  146. nautobot/project-static/docs/development/jobs/job-logging.html +2 -2
  147. nautobot/project-static/docs/development/jobs/job-patterns.html +2 -2
  148. nautobot/project-static/docs/development/jobs/job-structure.html +2 -2
  149. nautobot/project-static/docs/development/jobs/migration/from-v1.html +2 -2
  150. nautobot/project-static/docs/development/jobs/testing.html +2 -2
  151. nautobot/project-static/docs/index.html +2 -2
  152. nautobot/project-static/docs/objects.inv +0 -0
  153. nautobot/project-static/docs/overview/application_stack.html +2 -2
  154. nautobot/project-static/docs/overview/design_philosophy.html +2 -2
  155. nautobot/project-static/docs/release-notes/index.html +2 -2
  156. nautobot/project-static/docs/release-notes/version-1.0.html +2 -2
  157. nautobot/project-static/docs/release-notes/version-1.1.html +2 -2
  158. nautobot/project-static/docs/release-notes/version-1.2.html +2 -2
  159. nautobot/project-static/docs/release-notes/version-1.3.html +2 -2
  160. nautobot/project-static/docs/release-notes/version-1.4.html +2 -2
  161. nautobot/project-static/docs/release-notes/version-1.5.html +2 -2
  162. nautobot/project-static/docs/release-notes/version-1.6.html +2 -2
  163. nautobot/project-static/docs/release-notes/version-2.0.html +2 -2
  164. nautobot/project-static/docs/release-notes/version-2.1.html +2 -2
  165. nautobot/project-static/docs/release-notes/version-2.2.html +2 -2
  166. nautobot/project-static/docs/release-notes/version-2.3.html +2 -2
  167. nautobot/project-static/docs/release-notes/version-2.4.html +111 -2
  168. nautobot/project-static/docs/requirements.txt +1 -1
  169. nautobot/project-static/docs/search/search_index.json +1 -1
  170. nautobot/project-static/docs/sitemap.xml +299 -299
  171. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  172. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +2 -2
  173. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +2 -2
  174. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +2 -2
  175. nautobot/project-static/docs/user-guide/administration/configuration/index.html +2 -2
  176. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +2 -2
  177. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +2 -2
  178. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +2 -2
  179. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +2 -2
  180. nautobot/project-static/docs/user-guide/administration/guides/docker.html +2 -2
  181. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +2 -2
  182. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +2 -2
  183. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +2 -2
  184. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +2 -2
  185. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +2 -2
  186. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +2 -2
  187. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +2 -2
  188. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +2 -2
  189. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +2 -2
  190. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +2 -2
  191. nautobot/project-static/docs/user-guide/administration/installation/index.html +2 -2
  192. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +2 -2
  193. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +2 -2
  194. nautobot/project-static/docs/user-guide/administration/installation/services.html +2 -2
  195. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +2 -2
  196. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +2 -2
  197. nautobot/project-static/docs/user-guide/administration/security/index.html +2 -2
  198. nautobot/project-static/docs/user-guide/administration/security/notices.html +2 -2
  199. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +2 -2
  200. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +2 -2
  201. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +2 -2
  202. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +2 -2
  203. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +2 -2
  204. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +2 -2
  205. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +2 -2
  206. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +2 -2
  207. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +2 -2
  208. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +2 -2
  209. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +2 -2
  210. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +2 -2
  211. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +2 -2
  212. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +2 -2
  213. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +2 -2
  214. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +2 -2
  215. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +2 -2
  216. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +2 -2
  217. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +2 -2
  218. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +2 -2
  219. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +2 -2
  220. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +2 -2
  221. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +2 -2
  222. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +2 -2
  223. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +2 -2
  224. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +2 -2
  225. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +2 -2
  226. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +2 -2
  227. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +2 -2
  228. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +2 -2
  229. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +2 -2
  230. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +2 -2
  231. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +2 -2
  232. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +2 -2
  233. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +2 -2
  234. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +2 -2
  235. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +2 -2
  236. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +2 -2
  237. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +2 -2
  238. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +2 -2
  239. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +2 -2
  240. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +2 -2
  241. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +2 -2
  242. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +2 -2
  243. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +2 -2
  244. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +2 -2
  245. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +2 -2
  246. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +2 -2
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +2 -2
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +2 -2
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +2 -2
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +2 -2
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +2 -2
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +2 -2
  253. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +2 -2
  254. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +2 -2
  255. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +2 -2
  256. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +2 -2
  257. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +2 -2
  258. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +2 -2
  259. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +2 -2
  260. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +2 -2
  261. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +2 -2
  262. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +2 -2
  263. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +2 -2
  264. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +2 -2
  265. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +2 -2
  266. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +2 -2
  267. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +2 -2
  268. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +2 -2
  269. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +2 -2
  270. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +2 -2
  271. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +2 -2
  272. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +2 -2
  273. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +2 -2
  274. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +2 -2
  275. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +2 -2
  276. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +2 -2
  277. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +2 -2
  278. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +2 -2
  279. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +2 -2
  280. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +2 -2
  281. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +2 -2
  282. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +2 -2
  283. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +2 -2
  284. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +2 -2
  285. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +2 -2
  286. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +2 -2
  287. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +2 -2
  288. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +2 -2
  289. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +2 -2
  290. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +2 -2
  291. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +2 -2
  292. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +2 -2
  293. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +2 -2
  294. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +2 -2
  295. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +2 -2
  296. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +2 -2
  297. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +2 -2
  298. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +2 -2
  299. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +2 -2
  300. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +2 -2
  301. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +3 -3
  302. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +2 -2
  303. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +2 -2
  304. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +2 -2
  305. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +2 -2
  306. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +2 -2
  307. nautobot/project-static/docs/user-guide/index.html +2 -2
  308. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +2 -2
  309. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +2 -2
  310. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +2 -2
  311. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +2 -2
  312. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +2 -2
  313. nautobot/project-static/docs/user-guide/platform-functionality/events.html +2 -2
  314. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +2 -2
  315. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +2 -2
  316. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +2 -2
  317. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +2 -2
  318. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +2 -2
  319. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +2 -2
  320. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +2 -2
  321. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +2 -2
  322. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +2 -2
  323. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +2 -2
  324. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +2 -2
  325. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +2 -2
  326. nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +2 -2
  327. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +2 -2
  328. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +2 -2
  329. nautobot/project-static/docs/user-guide/platform-functionality/note.html +2 -2
  330. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +2 -2
  331. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +2 -2
  332. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +2 -2
  333. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +2 -2
  334. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +2 -2
  335. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +2 -2
  336. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +2 -2
  337. nautobot/project-static/docs/user-guide/platform-functionality/role.html +2 -2
  338. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +2 -2
  339. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +2 -2
  340. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +2 -2
  341. nautobot/project-static/docs/user-guide/platform-functionality/status.html +2 -2
  342. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +2 -2
  343. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +2 -2
  344. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +2 -2
  345. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +2 -2
  346. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +2 -2
  347. nautobot/wireless/navigation.py +1 -1
  348. nautobot/wireless/tables.py +13 -5
  349. {nautobot-2.4.11.dist-info → nautobot-2.4.12.dist-info}/METADATA +1 -1
  350. {nautobot-2.4.11.dist-info → nautobot-2.4.12.dist-info}/RECORD +354 -349
  351. {nautobot-2.4.11.dist-info → nautobot-2.4.12.dist-info}/LICENSE.txt +0 -0
  352. {nautobot-2.4.11.dist-info → nautobot-2.4.12.dist-info}/NOTICE +0 -0
  353. {nautobot-2.4.11.dist-info → nautobot-2.4.12.dist-info}/WHEEL +0 -0
  354. {nautobot-2.4.11.dist-info → nautobot-2.4.12.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,208 @@
1
+ from django.template import Context
2
+ from django.template.loader import render_to_string
3
+ from django.utils.html import format_html, format_html_join
4
+ from django.utils.safestring import mark_safe
5
+
6
+ from nautobot.core.templatetags import helpers
7
+ from nautobot.core.ui.object_detail import Button, KeyValueTablePanel, ObjectFieldsPanel
8
+ from nautobot.core.views.utils import get_obj_from_context
9
+
10
+
11
+ class JobRunScheduleButton(Button):
12
+ """
13
+ A custom button for running or scheduling a job.
14
+
15
+ This button is rendered only if the user has the 'extras.run_job' permission.
16
+ It also disables itself (via HTML 'disabled' attribute) if the related object is not
17
+ installed or not enabled.
18
+ """
19
+
20
+ def get_extra_context(self, context):
21
+ """Inject dynamic attributes (e.g. 'disabled') based on object state into the rendering context."""
22
+ extra_context = super().get_extra_context(context)
23
+ obj = context.get("object")
24
+ if not obj.installed or not obj.enabled:
25
+ if extra_context["attributes"] is None:
26
+ extra_context["attributes"] = {}
27
+ extra_context["attributes"]["disabled"] = "disabled"
28
+ return extra_context
29
+
30
+
31
+ class JobKeyValueOverrideValueTablePanel(KeyValueTablePanel):
32
+ """A table panel for displaying key-value pairs of job-related attributes, along with any override values defined on the job object."""
33
+
34
+ def _render_overridden_text(self, text):
35
+ """
36
+ Render a simple overridden value inside a muted <span>, with a customizable prefix.
37
+
38
+ Args:
39
+ value (str): The content to display.
40
+ prefix (str): The label shown before the value (default: 'default is').
41
+ """
42
+ return format_html('<span class="text-muted">overridden; default is {}</span>', mark_safe(text)) # noqa: S308
43
+
44
+ def _render_overridden_block(self, content):
45
+ """
46
+ Render a more complex block of HTML content (like rendered markdown or JSON)
47
+ in a div with a muted label indicating it's an overridden value.
48
+ """
49
+ return format_html('<div class="text-muted">overridden; default is:<br>{}</div>', content)
50
+
51
+ def render_description_default(self, default_value):
52
+ """
53
+ Render a description field's default value as markdown.
54
+
55
+ If the default value is a string, it is rendered as markdown;
56
+ otherwise, a placeholder is shown.
57
+ """
58
+ rendered = (
59
+ helpers.render_markdown(default_value)
60
+ if isinstance(default_value, str)
61
+ else helpers.placeholder(default_value)
62
+ )
63
+ return self._render_overridden_block(rendered)
64
+
65
+ def render_time_limit_default(self, default_value, system_default_value, override=True):
66
+ """
67
+ Render a time limit value, falling back to the system default if needed.
68
+ """
69
+ message = "{} seconds" if default_value > 0 else "{} seconds (system default)"
70
+ value = default_value if default_value > 0 else system_default_value
71
+ if not override:
72
+ return message.format(value)
73
+ return self._render_overridden_text(message.format(value))
74
+
75
+ def render_job_queues_default(self, obj):
76
+ """
77
+ Render the job's default task queues as JSON.
78
+
79
+ Attempts to retrieve the `task_queues` from the job's class and render
80
+ it using a JSON template. Falls back to a placeholder on error.
81
+ """
82
+ try:
83
+ data = obj.job_class.task_queues
84
+ rendered = render_to_string("extras/inc/json_data.html", {"data": data, "format": "json"})
85
+ except Exception:
86
+ rendered = helpers.placeholder(None)
87
+ return self._render_overridden_block(rendered)
88
+
89
+ def render_default_job_queue_default(self, obj):
90
+ """
91
+ Render the default job queue name from the job class.
92
+
93
+ Retrieves the first queue from `task_queues` if available.
94
+ Falls back to a placeholder if no queues are present.
95
+ """
96
+ try:
97
+ queue = obj.job_class.task_queues[0]
98
+ except (AttributeError, IndexError, TypeError):
99
+ queue = helpers.placeholder("not specified")
100
+ return self._render_overridden_text(queue)
101
+
102
+ def render_boolean_default(self, default_value):
103
+ """Render a boolean default value using a standardized visual format."""
104
+ return self._render_overridden_text(helpers.render_boolean(default_value))
105
+
106
+ def render_override_value(self, key, obj):
107
+ """Render the override value for a given key on a job object."""
108
+ override_attr = f"{key}_override"
109
+
110
+ if not getattr(obj, override_attr, None):
111
+ return ""
112
+
113
+ if not obj.installed:
114
+ return self._render_overridden_text("default is unknown (not currently installed)")
115
+
116
+ try:
117
+ default_value = getattr(obj.job_class, key)
118
+ except Exception:
119
+ default_value = "unknown"
120
+
121
+ renderers = {
122
+ "description": self.render_description_default,
123
+ "soft_time_limit": lambda v: self.render_time_limit_default(
124
+ v, helpers.settings_or_config("CELERY_TASK_SOFT_TIME_LIMIT")
125
+ ),
126
+ "time_limit": lambda v: self.render_time_limit_default(
127
+ v, helpers.settings_or_config("CELERY_TASK_TIME_LIMIT")
128
+ ),
129
+ "job_queues": lambda _: self.render_job_queues_default(obj),
130
+ "default_job_queue": lambda _: self.render_default_job_queue_default(obj),
131
+ }
132
+
133
+ if key in renderers:
134
+ return renderers[key](default_value)
135
+
136
+ if isinstance(default_value, bool):
137
+ return self.render_boolean_default(default_value)
138
+
139
+ return self._render_overridden_text(f'"{default_value}"')
140
+
141
+ def render_job_queues_list(self, value):
142
+ """Renders a <ul> HTML list of job queues with hyperlinks, or a placeholder if none exist."""
143
+ if not value or not value.exists():
144
+ return helpers.placeholder(None)
145
+
146
+ items = format_html_join("\n", "<li>{}</li>", ((helpers.hyperlinked_object(q),) for q in value.all()))
147
+ return format_html("<ul>{}</ul>", items)
148
+
149
+ def render_body_content(self, context: Context):
150
+ """Render the body content of the panel as a table of key-value rows, including any override information."""
151
+ data = self.get_data(context)
152
+ obj = get_obj_from_context(context)
153
+
154
+ if not data:
155
+ return format_html('<tr><td colspan="2">{}</td></tr>', helpers.placeholder(data))
156
+
157
+ result = format_html("")
158
+ panel_label = helpers.slugify(self.label or "")
159
+ for key, value in data.items():
160
+ key_display = self.render_key(key, value, context)
161
+ override_value_display = self.render_override_value(key, obj)
162
+ if value_display := self.render_value(key, value, context):
163
+ if value_display is helpers.HTML_NONE:
164
+ value_tag = value_display
165
+ else:
166
+ value_tag = format_html(
167
+ """
168
+ <span class="hover_copy">
169
+ <span id="{unique_id}_value_{key}">{value}</span>
170
+ <button class="btn btn-inline btn-default hover_copy_button" data-clipboard-target="#{unique_id}_value_{key}">
171
+ <span class="mdi mdi-content-copy"></span>
172
+ </button>
173
+ </span>
174
+ """,
175
+ # key might not be globally unique in a page, but is unique to a panel;
176
+ # Hence we add the panel label to make it globally unique to the page
177
+ unique_id=panel_label,
178
+ key=helpers.slugify(key),
179
+ value=value_display,
180
+ )
181
+ result += format_html(
182
+ "<tr><td>{}</td><td>{}</td><td>{}</td></tr>",
183
+ key_display,
184
+ value_tag,
185
+ override_value_display,
186
+ )
187
+
188
+ return result
189
+
190
+
191
+ class JobObjectFieldsPanel(ObjectFieldsPanel, JobKeyValueOverrideValueTablePanel):
192
+ """
193
+ ObjectFieldsPanel that renders its fields in a 3-column layout.
194
+ Inherits behavior from ObjectFieldsPanel but overrides rendering with JobKeyValueOverrideValueTablePanel.
195
+ """
196
+
197
+ def render_value(self, key, value, context: Context):
198
+ if key == "job_queues":
199
+ return self.render_job_queues_list(value)
200
+ if key == "soft_time_limit":
201
+ value = self.render_time_limit_default(
202
+ value, helpers.settings_or_config("CELERY_TASK_SOFT_TIME_LIMIT"), override=False
203
+ )
204
+ if key == "time_limit":
205
+ value = self.render_time_limit_default(
206
+ value, helpers.settings_or_config("CELERY_TASK_TIME_LIMIT"), override=False
207
+ )
208
+ return super().render_value(key, value, context)
@@ -1,5 +1,6 @@
1
1
  from django.contrib.contenttypes.models import ContentType
2
2
  from django.db import models
3
+ from django.utils.html import format_html
3
4
  from taggit.models import GenericUUIDTaggedItemBase
4
5
 
5
6
  from nautobot.core.choices import ColorChoices
@@ -65,6 +66,9 @@ class Tag(
65
66
  class Meta:
66
67
  ordering = ["name"]
67
68
 
69
+ def get_color_display(self):
70
+ return format_html('<span class="label color-block" style="background-color: #{}">&nbsp;</span>', self.color)
71
+
68
72
  def validate_content_types_removal(self, content_types_id):
69
73
  """Validate content_types to be removed are not tagged to a model"""
70
74
  errors = {}
nautobot/extras/tables.py CHANGED
@@ -908,7 +908,7 @@ class JobResultTable(BaseTable):
908
908
  def __init__(self, *args, **kwargs):
909
909
  super().__init__(*args, **kwargs)
910
910
  # Only calculate log counts for "summary" column if it's actually visible.
911
- if self.columns["summary"].visible and isinstance(self.data.data, QuerySet):
911
+ if "summary" in self.columns and self.columns["summary"].visible and isinstance(self.data.data, QuerySet):
912
912
  self.data = TableData.from_data(
913
913
  self.data.data.annotate(
914
914
  debug_log_count=count_related(
@@ -39,10 +39,10 @@
39
39
  <div class="panel panel-default">
40
40
  <div class="panel-heading">
41
41
  <strong>Data Schema</strong>
42
- {% include 'extras/inc/json_format.html' %}
42
+ {% include 'extras/inc/configcontext_format.html' %}
43
43
  </div>
44
44
  <div class="panel-body">
45
- {% include 'extras/inc/json_data.html' with data=object.data_schema format=format %}
45
+ {% include 'extras/inc/json_data.html' with data=object.data_schema format=data_format %}
46
46
  </div>
47
47
  </div>
48
48
  {% endblock content_right_page %}
@@ -1 +1 @@
1
- {% include 'extras/inc/json_data.html' with data=object.data format=format %}
1
+ {% include 'extras/inc/json_data.html' with data=object.data format=data_format %}
@@ -0,0 +1,6 @@
1
+ <div class="pull-right">
2
+ <div class="btn-group btn-group-xs" role="group">
3
+ <a href="?data_format=json" class="btn btn-default{% if data_format == 'json' %} active{% endif %}">JSON</a>
4
+ <a href="?data_format=yaml" class="btn btn-default{% if data_format == 'yaml' %} active{% endif %}">YAML</a>
5
+ </div>
6
+ </div>
@@ -1,5 +1,5 @@
1
1
  {% load helpers %}
2
2
 
3
3
  <div class="rendered-json-data">
4
- <pre>{% if data_format == 'json' %}{{ data|render_json }}{% elif data_format == 'yaml' %}{{ data|render_yaml }}{% else %}{{ data }}{% endif %}</pre>
4
+ <pre>{% if format == 'json' %}{{ data|render_json }}{% elif format == 'yaml' %}{{ data|render_yaml }}{% else %}{{ data }}{% endif %}</pre>
5
5
  </div>
@@ -1,6 +1,6 @@
1
1
  <div class="pull-right">
2
2
  <div class="btn-group btn-group-xs" role="group">
3
- <a href="?data_format=json" class="btn btn-default{% if data_format == 'json' %} active{% endif %}">JSON</a>
4
- <a href="?data_format=yaml" class="btn btn-default{% if data_format == 'yaml' %} active{% endif %}">YAML</a>
3
+ <a href="?format=json" class="btn btn-default{% if format == 'json' %} active{% endif %}">JSON</a>
4
+ <a href="?format=yaml" class="btn btn-default{% if format == 'yaml' %} active{% endif %}">YAML</a>
5
5
  </div>
6
6
  </div>
@@ -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 %}
@@ -1,52 +1,2 @@
1
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 %}
2
+ {% comment %}3.0 TODO: remove this template, which only exists for backward compatibility with 2.4 and earlier{% endcomment %}