django-debug-toolbar 5.0.1__tar.gz → 5.2.0__tar.gz

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.
Files changed (239) hide show
  1. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/workflows/release.yml +1 -1
  2. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.pre-commit-config.yaml +14 -24
  3. django_debug_toolbar-5.2.0/CONTRIBUTING.md +11 -0
  4. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/Makefile +14 -9
  5. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/PKG-INFO +7 -2
  6. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/README.rst +1 -1
  7. django_debug_toolbar-5.2.0/biome.json +22 -0
  8. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/__init__.py +1 -1
  9. django_debug_toolbar-5.2.0/debug_toolbar/decorators.py +48 -0
  10. django_debug_toolbar-5.2.0/debug_toolbar/locale/ru/LC_MESSAGES/django.mo +0 -0
  11. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ru/LC_MESSAGES/django.po +28 -27
  12. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/middleware.py +34 -5
  13. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/cache.py +1 -1
  14. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/redirects.py +21 -14
  15. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/request.py +6 -14
  16. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/staticfiles.py +18 -43
  17. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/views.py +9 -6
  18. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/settings.py +0 -1
  19. django_debug_toolbar-5.2.0/debug_toolbar/static/debug_toolbar/css/toolbar.css +1181 -0
  20. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/history.js +22 -26
  21. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/timer.js +18 -24
  22. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/toolbar.js +105 -96
  23. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/utils.js +38 -36
  24. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/base.html +10 -11
  25. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/includes/panel_button.html +2 -2
  26. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/includes/panel_content.html +2 -2
  27. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/alerts.html +2 -2
  28. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/cache.html +12 -12
  29. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/headers.html +10 -10
  30. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/history.html +7 -7
  31. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/history_tr.html +2 -2
  32. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/profiling.html +6 -6
  33. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/request.html +13 -13
  34. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/request_variables.html +2 -2
  35. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/settings.html +2 -2
  36. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/signals.html +2 -2
  37. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql.html +16 -16
  38. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html +4 -4
  39. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html +5 -5
  40. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_select.html +5 -5
  41. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html +10 -10
  42. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/template_source.html +1 -1
  43. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/templates.html +8 -8
  44. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/timer.html +7 -7
  45. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/versions.html +3 -3
  46. django_debug_toolbar-5.2.0/debug_toolbar/templates/debug_toolbar/redirect.html +15 -0
  47. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/toolbar.py +10 -0
  48. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/utils.py +39 -7
  49. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/changes.rst +39 -0
  50. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/conf.py +1 -1
  51. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/configuration.rst +0 -7
  52. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/index.rst +1 -0
  53. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/panels.rst +6 -1
  54. django_debug_toolbar-5.2.0/docs/resources.rst +78 -0
  55. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/spelling_wordlist.txt +4 -0
  56. django_debug_toolbar-5.2.0/example/django-debug-toolbar.png +0 -0
  57. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/htmx/boost.html +1 -1
  58. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/turbo/index.html +1 -1
  59. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/pyproject.toml +6 -0
  60. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/requirements_dev.txt +1 -1
  61. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_redirects.py +13 -0
  62. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_request.py +73 -0
  63. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_sql.py +2 -2
  64. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_staticfiles.py +44 -1
  65. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_template.py +18 -0
  66. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/settings.py +5 -0
  67. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/ajax/ajax.html +2 -1
  68. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/basic.html +1 -0
  69. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/jinja2/basic.jinja +2 -1
  70. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/sql/flat.html +2 -1
  71. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/sql/nested.html +2 -1
  72. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/staticfiles/async_static.html +1 -1
  73. django_debug_toolbar-5.2.0/tests/test_csp_rendering.py +176 -0
  74. django_debug_toolbar-5.2.0/tests/test_decorators.py +66 -0
  75. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_integration.py +21 -9
  76. django_debug_toolbar-5.2.0/tests/test_middleware.py +93 -0
  77. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_utils.py +62 -0
  78. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/urls.py +1 -0
  79. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/views.py +5 -0
  80. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tox.ini +8 -6
  81. django_debug_toolbar-5.0.1/CONTRIBUTING.md +0 -5
  82. django_debug_toolbar-5.0.1/debug_toolbar/decorators.py +0 -32
  83. django_debug_toolbar-5.0.1/debug_toolbar/locale/ru/LC_MESSAGES/django.mo +0 -0
  84. django_debug_toolbar-5.0.1/debug_toolbar/static/debug_toolbar/css/toolbar.css +0 -772
  85. django_debug_toolbar-5.0.1/debug_toolbar/templates/debug_toolbar/redirect.html +0 -15
  86. django_debug_toolbar-5.0.1/eslint.config.js +0 -28
  87. django_debug_toolbar-5.0.1/example/django-debug-toolbar.png +0 -0
  88. django_debug_toolbar-5.0.1/tests/test_csp_rendering.py +0 -142
  89. django_debug_toolbar-5.0.1/tests/test_decorators.py +0 -26
  90. django_debug_toolbar-5.0.1/tests/test_middleware_compatibility.py +0 -46
  91. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.editorconfig +0 -0
  92. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  93. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/dependabot.yml +0 -0
  94. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/workflows/coverage.yml +0 -0
  95. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/workflows/test.yml +0 -0
  96. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.gitignore +0 -0
  97. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.readthedocs.yaml +0 -0
  98. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.tx/config +0 -0
  99. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/CODE_OF_CONDUCT.md +0 -0
  100. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/LICENSE +0 -0
  101. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/SECURITY.md +0 -0
  102. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/_compat.py +0 -0
  103. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/_stubs.py +0 -0
  104. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/apps.py +0 -0
  105. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/forms.py +0 -0
  106. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/bg/LC_MESSAGES/django.mo +0 -0
  107. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/bg/LC_MESSAGES/django.po +0 -0
  108. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ca/LC_MESSAGES/django.mo +0 -0
  109. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ca/LC_MESSAGES/django.po +0 -0
  110. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/cs/LC_MESSAGES/django.mo +0 -0
  111. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/cs/LC_MESSAGES/django.po +0 -0
  112. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/de/LC_MESSAGES/django.mo +0 -0
  113. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/de/LC_MESSAGES/django.po +0 -0
  114. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/en/LC_MESSAGES/django.mo +0 -0
  115. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/en/LC_MESSAGES/django.po +0 -0
  116. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/es/LC_MESSAGES/django.mo +0 -0
  117. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/es/LC_MESSAGES/django.po +0 -0
  118. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fa/LC_MESSAGES/django.mo +0 -0
  119. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fa/LC_MESSAGES/django.po +0 -0
  120. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fi/LC_MESSAGES/django.mo +0 -0
  121. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fi/LC_MESSAGES/django.po +0 -0
  122. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fr/LC_MESSAGES/django.mo +0 -0
  123. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fr/LC_MESSAGES/django.po +0 -0
  124. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/he/LC_MESSAGES/django.mo +0 -0
  125. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/he/LC_MESSAGES/django.po +0 -0
  126. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/id/LC_MESSAGES/django.mo +0 -0
  127. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/id/LC_MESSAGES/django.po +0 -0
  128. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/it/LC_MESSAGES/django.mo +0 -0
  129. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/it/LC_MESSAGES/django.po +0 -0
  130. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ja/LC_MESSAGES/django.mo +0 -0
  131. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ja/LC_MESSAGES/django.po +0 -0
  132. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ko/LC_MESSAGES/django.mo +0 -0
  133. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ko/LC_MESSAGES/django.po +0 -0
  134. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/nl/LC_MESSAGES/django.mo +0 -0
  135. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/nl/LC_MESSAGES/django.po +0 -0
  136. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pl/LC_MESSAGES/django.mo +0 -0
  137. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pl/LC_MESSAGES/django.po +0 -0
  138. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt/LC_MESSAGES/django.mo +0 -0
  139. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt/LC_MESSAGES/django.po +0 -0
  140. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  141. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po +0 -0
  142. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sk/LC_MESSAGES/django.mo +0 -0
  143. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sk/LC_MESSAGES/django.po +0 -0
  144. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo +0 -0
  145. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po +0 -0
  146. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/uk/LC_MESSAGES/django.mo +0 -0
  147. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/uk/LC_MESSAGES/django.po +0 -0
  148. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo +0 -0
  149. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po +0 -0
  150. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/management/__init__.py +0 -0
  151. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/management/commands/__init__.py +0 -0
  152. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/management/commands/debugsqlshell.py +0 -0
  153. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/__init__.py +0 -0
  154. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/alerts.py +0 -0
  155. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/headers.py +0 -0
  156. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/__init__.py +0 -0
  157. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/forms.py +0 -0
  158. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/panel.py +0 -0
  159. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/views.py +0 -0
  160. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/profiling.py +0 -0
  161. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/settings.py +0 -0
  162. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/signals.py +0 -0
  163. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/__init__.py +0 -0
  164. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/forms.py +0 -0
  165. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/panel.py +0 -0
  166. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/tracking.py +0 -0
  167. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/utils.py +0 -0
  168. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/views.py +0 -0
  169. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/__init__.py +0 -0
  170. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/jinja2.py +0 -0
  171. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/panel.py +0 -0
  172. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/timer.py +0 -0
  173. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/versions.py +0 -0
  174. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/css/print.css +0 -0
  175. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/redirect.js +0 -0
  176. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/includes/theme_selector.html +0 -0
  177. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templatetags/__init__.py +0 -0
  178. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/urls.py +0 -0
  179. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/views.py +0 -0
  180. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/Makefile +0 -0
  181. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/architecture.rst +0 -0
  182. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/checks.rst +0 -0
  183. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/commands.rst +0 -0
  184. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/contributing.rst +0 -0
  185. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/installation.rst +0 -0
  186. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/make.bat +0 -0
  187. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/tips.rst +0 -0
  188. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/README.rst +0 -0
  189. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/__init__.py +0 -0
  190. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/asgi.py +0 -0
  191. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/example.db +0 -0
  192. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/manage.py +0 -0
  193. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/screenshot.py +0 -0
  194. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/settings.py +0 -0
  195. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/static/test.css +0 -0
  196. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/async_db.html +0 -0
  197. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/bad_form.html +0 -0
  198. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/index.html +0 -0
  199. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/jinja2/index.jinja +0 -0
  200. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/jquery/index.html +0 -0
  201. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/mootools/index.html +0 -0
  202. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/prototype/index.html +0 -0
  203. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/test_views.py +0 -0
  204. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/urls.py +0 -0
  205. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/views.py +0 -0
  206. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/wsgi.py +0 -0
  207. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/setup.py +0 -0
  208. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/__init__.py +0 -0
  209. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/additional_static/base.css +0 -0
  210. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/base.py +0 -0
  211. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/commands/__init__.py +0 -0
  212. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/commands/test_debugsqlshell.py +0 -0
  213. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/context_processors.py +0 -0
  214. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/forms.py +0 -0
  215. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/loaders.py +0 -0
  216. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/middleware.py +0 -0
  217. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/models.py +0 -0
  218. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/__init__.py +0 -0
  219. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_alerts.py +0 -0
  220. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_async_panel_compatibility.py +0 -0
  221. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_cache.py +0 -0
  222. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_custom.py +1 -1
  223. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_history.py +0 -0
  224. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_profiling.py +0 -0
  225. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_settings.py +1 -1
  226. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_versions.py +0 -0
  227. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/sync.py +0 -0
  228. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/base.html +0 -0
  229. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/jinja2/base.html +0 -0
  230. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/registration/login.html +0 -0
  231. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/sql/included.html +0 -0
  232. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/staticfiles/path.html +0 -0
  233. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_checks.py +0 -0
  234. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_forms.py +0 -0
  235. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_integration_async.py +0 -0
  236. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_login_not_required.py +0 -0
  237. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_toolbar.py +0 -0
  238. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/urls_invalid.py +0 -0
  239. {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/urls_use_package_urls.py +0 -0
@@ -69,7 +69,7 @@ jobs:
69
69
  name: python-package-distributions
70
70
  path: dist/
71
71
  - name: Sign the dists with Sigstore
72
- uses: sigstore/gh-action-sigstore-python@v3
72
+ uses: sigstore/gh-action-sigstore-python@v3.0.0
73
73
  with:
74
74
  inputs: >-
75
75
  ./dist/*.tar.gz
@@ -14,46 +14,36 @@ repos:
14
14
  hooks:
15
15
  - id: doc8
16
16
  - repo: https://github.com/adamchainz/django-upgrade
17
- rev: 1.22.2
17
+ rev: 1.24.0
18
18
  hooks:
19
19
  - id: django-upgrade
20
20
  args: [--target-version, "4.2"]
21
+ - repo: https://github.com/adamchainz/djade-pre-commit
22
+ rev: "1.4.0"
23
+ hooks:
24
+ - id: djade
25
+ args: [--target-version, "4.2"]
21
26
  - repo: https://github.com/pre-commit/pygrep-hooks
22
27
  rev: v1.10.0
23
28
  hooks:
24
29
  - id: rst-backticks
25
30
  - id: rst-directive-colons
26
- - repo: https://github.com/pre-commit/mirrors-prettier
27
- rev: v4.0.0-alpha.8
28
- hooks:
29
- - id: prettier
30
- entry: env PRETTIER_LEGACY_CLI=1 prettier
31
- types_or: [javascript, css]
32
- args:
33
- - --trailing-comma=es5
34
- - repo: https://github.com/pre-commit/mirrors-eslint
35
- rev: v9.17.0
36
- hooks:
37
- - id: eslint
38
- additional_dependencies:
39
- - "eslint@v9.17.0"
40
- - "@eslint/js@v9.17.0"
41
- - "globals"
42
- files: \.js?$
43
- types: [file]
44
- args:
45
- - --fix
31
+ - repo: https://github.com/biomejs/pre-commit
32
+ rev: v1.9.4
33
+ hooks:
34
+ - id: biome-check
35
+ verbose: true
46
36
  - repo: https://github.com/astral-sh/ruff-pre-commit
47
- rev: 'v0.8.6'
37
+ rev: 'v0.11.7'
48
38
  hooks:
49
39
  - id: ruff
50
40
  args: [--fix, --exit-non-zero-on-fix]
51
41
  - id: ruff-format
52
42
  - repo: https://github.com/tox-dev/pyproject-fmt
53
- rev: v2.5.0
43
+ rev: v2.5.1
54
44
  hooks:
55
45
  - id: pyproject-fmt
56
46
  - repo: https://github.com/abravalheri/validate-pyproject
57
- rev: v0.23
47
+ rev: v0.24.1
58
48
  hooks:
59
49
  - id: validate-pyproject
@@ -0,0 +1,11 @@
1
+ # Contributing to Django Debug Toolbar
2
+
3
+ This is a [Django Commons](https://github.com/django-commons/) project. By contributing you agree to abide by the [Contributor Code of Conduct](https://github.com/django-commons/membership/blob/main/CODE_OF_CONDUCT.md).
4
+
5
+ ## Documentation
6
+
7
+ For detailed contributing guidelines, please see our [Documentation](https://django-debug-toolbar.readthedocs.io/en/latest/contributing.html).
8
+
9
+ ## Additional Resources
10
+
11
+ Please see the [README](https://github.com/django-commons/membership/blob/main/README.md) for more help.
@@ -1,23 +1,24 @@
1
- .PHONY: example test coverage translatable_strings update_translations
1
+ .PHONY: example test coverage translatable_strings update_translations help
2
+ .DEFAULT_GOAL := help
2
3
 
3
- example:
4
+ example: ## Run the example application
4
5
  python example/manage.py migrate --noinput
5
6
  -DJANGO_SUPERUSER_PASSWORD=p python example/manage.py createsuperuser \
6
7
  --noinput --username="$(USER)" --email="$(USER)@mailinator.com"
7
8
  python example/manage.py runserver
8
9
 
9
- example_test:
10
+ example_test: ## Run the test suite for the example application
10
11
  python example/manage.py test example
11
12
 
12
- test:
13
+ test: ## Run the test suite
13
14
  DJANGO_SETTINGS_MODULE=tests.settings \
14
15
  python -m django test $${TEST_ARGS:-tests}
15
16
 
16
- test_selenium:
17
+ test_selenium: ## Run frontend tests written with Selenium
17
18
  DJANGO_SELENIUM_TESTS=true DJANGO_SETTINGS_MODULE=tests.settings \
18
19
  python -m django test $${TEST_ARGS:-tests}
19
20
 
20
- coverage:
21
+ coverage: ## Run the test suite with coverage enabled
21
22
  python --version
22
23
  DJANGO_SETTINGS_MODULE=tests.settings \
23
24
  python -b -W always -m coverage run -m django test -v2 $${TEST_ARGS:-tests}
@@ -25,15 +26,19 @@ coverage:
25
26
  coverage html
26
27
  coverage xml
27
28
 
28
- translatable_strings:
29
+ translatable_strings: ## Update the English '.po' file
29
30
  cd debug_toolbar && python -m django makemessages -l en --no-obsolete
30
31
  @echo "Please commit changes and run 'tx push -s' (or wait for Transifex to pick them)"
31
32
 
32
- update_translations:
33
+ update_translations: ## Download updated '.po' files from Transifex
33
34
  tx pull -a --minimum-perc=10
34
35
  cd debug_toolbar && python -m django compilemessages
35
36
 
36
37
  .PHONY: example/django-debug-toolbar.png
37
- example/django-debug-toolbar.png: example/screenshot.py
38
+ example/django-debug-toolbar.png: example/screenshot.py ## Update the screenshot in 'README.rst'
38
39
  python $< --browser firefox --headless -o $@
39
40
  optipng $@
41
+
42
+ help: ## Help message for targets
43
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
44
+ | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
@@ -1,9 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-debug-toolbar
3
- Version: 5.0.1
3
+ Version: 5.2.0
4
4
  Summary: A configurable set of panels that display various debug information about the current request/response.
5
+ Project-URL: Changelog, https://django-debug-toolbar.readthedocs.io/en/latest/changes.html
6
+ Project-URL: Documentation, https://django-debug-toolbar.readthedocs.io/
5
7
  Project-URL: Download, https://pypi.org/project/django-debug-toolbar/
6
8
  Project-URL: Homepage, https://github.com/django-commons/django-debug-toolbar
9
+ Project-URL: Issues, https://github.com/django-commons/django-debug-toolbar/issues
10
+ Project-URL: Source, https://github.com/django-commons/django-debug-toolbar
7
11
  Author: Rob Hudson
8
12
  License: BSD-3-Clause
9
13
  License-File: LICENSE
@@ -13,6 +17,7 @@ Classifier: Framework :: Django
13
17
  Classifier: Framework :: Django :: 4.2
14
18
  Classifier: Framework :: Django :: 5.0
15
19
  Classifier: Framework :: Django :: 5.1
20
+ Classifier: Framework :: Django :: 5.2
16
21
  Classifier: Intended Audience :: Developers
17
22
  Classifier: License :: OSI Approved :: BSD License
18
23
  Classifier: Operating System :: OS Independent
@@ -71,7 +76,7 @@ Here's a screenshot of the toolbar in action:
71
76
  In addition to the built-in panels, a number of third-party panels are
72
77
  contributed by the community.
73
78
 
74
- The current stable version of the Debug Toolbar is 5.0.1. It works on
79
+ The current stable version of the Debug Toolbar is 5.2.0. It works on
75
80
  Django ≥ 4.2.0.
76
81
 
77
82
  The Debug Toolbar has experimental support for `Django's asynchronous views
@@ -40,7 +40,7 @@ Here's a screenshot of the toolbar in action:
40
40
  In addition to the built-in panels, a number of third-party panels are
41
41
  contributed by the community.
42
42
 
43
- The current stable version of the Debug Toolbar is 5.0.1. It works on
43
+ The current stable version of the Debug Toolbar is 5.2.0. It works on
44
44
  Django ≥ 4.2.0.
45
45
 
46
46
  The Debug Toolbar has experimental support for `Django's asynchronous views
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3
+ "formatter": {
4
+ "enabled": true,
5
+ "useEditorconfig": true
6
+ },
7
+ "organizeImports": {
8
+ "enabled": true
9
+ },
10
+ "linter": {
11
+ "enabled": true,
12
+ "rules": {
13
+ "recommended": true
14
+ }
15
+ },
16
+ "javascript": {
17
+ "formatter": {
18
+ "trailingCommas": "es5",
19
+ "quoteStyle": "double"
20
+ }
21
+ }
22
+ }
@@ -4,7 +4,7 @@ APP_NAME = "djdt"
4
4
 
5
5
  # Do not use pkg_resources to find the version but set it here directly!
6
6
  # see issue #1446
7
- VERSION = "5.0.1"
7
+ VERSION = "5.2.0"
8
8
 
9
9
  # Code that discovers files or modules in INSTALLED_APPS imports this module.
10
10
  urls = "debug_toolbar.urls", APP_NAME
@@ -0,0 +1,48 @@
1
+ import functools
2
+
3
+ from asgiref.sync import iscoroutinefunction
4
+ from django.http import Http404
5
+ from django.utils.translation import get_language, override as language_override
6
+
7
+ from debug_toolbar import settings as dt_settings
8
+
9
+
10
+ def require_show_toolbar(view):
11
+ """
12
+ Async compatible decorator to restrict access to a view
13
+ based on the Debug Toolbar's visibility settings.
14
+ """
15
+ from debug_toolbar.middleware import get_show_toolbar
16
+
17
+ if iscoroutinefunction(view):
18
+
19
+ @functools.wraps(view)
20
+ async def inner(request, *args, **kwargs):
21
+ show_toolbar = get_show_toolbar(async_mode=True)
22
+ if not await show_toolbar(request):
23
+ raise Http404
24
+
25
+ return await view(request, *args, **kwargs)
26
+ else:
27
+
28
+ @functools.wraps(view)
29
+ def inner(request, *args, **kwargs):
30
+ show_toolbar = get_show_toolbar(async_mode=False)
31
+ if not show_toolbar(request):
32
+ raise Http404
33
+
34
+ return view(request, *args, **kwargs)
35
+
36
+ return inner
37
+
38
+
39
+ def render_with_toolbar_language(view):
40
+ """Force any rendering within the view to use the toolbar's language."""
41
+
42
+ @functools.wraps(view)
43
+ def inner(request, *args, **kwargs):
44
+ lang = dt_settings.get_config()["TOOLBAR_LANGUAGE"] or get_language()
45
+ with language_override(lang):
46
+ return view(request, *args, **kwargs)
47
+
48
+ return inner
@@ -3,17 +3,18 @@
3
3
  #
4
4
  #
5
5
  # Translators:
6
+ # Andrei Satsevich, 2025
6
7
  # Dmitri Bogomolov <4glitch@gmail.com>, 2014
7
8
  # Ilya Baryshev <baryshev@gmail.com>, 2013
8
9
  # Mikhail Korobov, 2009
9
- # Алексей Борискин <sun.void@gmail.com>, 2013,2015
10
+ # Алексей Борискин <sun.void@gmail.com>, 2013,2015,2024
10
11
  msgid ""
11
12
  msgstr ""
12
13
  "Project-Id-Version: Django Debug Toolbar\n"
13
14
  "Report-Msgid-Bugs-To: \n"
14
15
  "POT-Creation-Date: 2024-08-06 07:12-0500\n"
15
16
  "PO-Revision-Date: 2010-11-30 00:00+0000\n"
16
- "Last-Translator: Алексей Борискин <sun.void@gmail.com>, 2013,2015\n"
17
+ "Last-Translator: Andrei Satsevich, 2025\n"
17
18
  "Language-Team: Russian (http://app.transifex.com/django-debug-toolbar/django-debug-toolbar/language/ru/)\n"
18
19
  "MIME-Version: 1.0\n"
19
20
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -30,24 +31,24 @@ msgstr "Панель отладки"
30
31
  msgid ""
31
32
  "Form with id \"{form_id}\" contains file input, but does not have the "
32
33
  "attribute enctype=\"multipart/form-data\"."
33
- msgstr ""
34
+ msgstr "Форма с идентификатором \"{form_id}\" содержит файл, но не имеет атрибута enctype=\"multipart/form-data\"."
34
35
 
35
36
  #: panels/alerts.py:70
36
37
  msgid ""
37
38
  "Form contains file input, but does not have the attribute "
38
39
  "enctype=\"multipart/form-data\"."
39
- msgstr ""
40
+ msgstr "Форма содержит файл, но не имеет атрибута enctype=\"multipart/form-data\"."
40
41
 
41
42
  #: panels/alerts.py:73
42
43
  #, python-brace-format
43
44
  msgid ""
44
45
  "Input element references form with id \"{form_id}\", but the form does not "
45
46
  "have the attribute enctype=\"multipart/form-data\"."
46
- msgstr ""
47
+ msgstr "Элемент ввода ссылается на форму с id \"{form_id}\", но форма не имеет атрибута enctype=\"multipart/form-data\"."
47
48
 
48
49
  #: panels/alerts.py:77
49
50
  msgid "Alerts"
50
- msgstr ""
51
+ msgstr "Оповещения"
51
52
 
52
53
  #: panels/cache.py:168
53
54
  msgid "Cache"
@@ -77,7 +78,7 @@ msgstr "Заголовки"
77
78
 
78
79
  #: panels/history/panel.py:19 panels/history/panel.py:20
79
80
  msgid "History"
80
- msgstr ""
81
+ msgstr "История"
81
82
 
82
83
  #: panels/profiling.py:140
83
84
  msgid "Profiling"
@@ -106,7 +107,7 @@ msgstr "Настройки"
106
107
  #: panels/settings.py:20
107
108
  #, python-format
108
109
  msgid "Settings from %s"
109
- msgstr ""
110
+ msgstr "Настройки из %s"
110
111
 
111
112
  #: panels/signals.py:57
112
113
  #, python-format
@@ -178,19 +179,19 @@ msgstr "SQL"
178
179
  #, python-format
179
180
  msgid "%(query_count)d query in %(sql_time).2fms"
180
181
  msgid_plural "%(query_count)d queries in %(sql_time).2fms"
181
- msgstr[0] ""
182
- msgstr[1] ""
183
- msgstr[2] ""
184
- msgstr[3] ""
182
+ msgstr[0] "%(query_count)d запрос за %(sql_time).2f мс "
183
+ msgstr[1] "%(query_count)d запросов за %(sql_time).2f мс"
184
+ msgstr[2] "%(query_count)d запросов за %(sql_time).2f мс"
185
+ msgstr[3] "%(query_count)d запросов за %(sql_time).2f мс"
185
186
 
186
187
  #: panels/sql/panel.py:180
187
188
  #, python-format
188
189
  msgid "SQL queries from %(count)d connection"
189
190
  msgid_plural "SQL queries from %(count)d connections"
190
- msgstr[0] ""
191
- msgstr[1] ""
192
- msgstr[2] ""
193
- msgstr[3] ""
191
+ msgstr[0] "SQL-запросы из %(count)d соединения"
192
+ msgstr[1] "SQL-запросы из %(count)d соединений"
193
+ msgstr[2] "SQL-запросы из %(count)d соединений"
194
+ msgstr[3] "SQL-запросы из %(count)d соединений"
194
195
 
195
196
  #: panels/staticfiles.py:82
196
197
  #, python-format
@@ -221,7 +222,7 @@ msgstr "Шаблоны (обработано %(num_templates)s)"
221
222
 
222
223
  #: panels/templates/panel.py:195
223
224
  msgid "No origin"
224
- msgstr ""
225
+ msgstr "Без происхождения"
225
226
 
226
227
  #: panels/timer.py:27
227
228
  #, python-format
@@ -299,7 +300,7 @@ msgstr "Скрыть"
299
300
 
300
301
  #: templates/debug_toolbar/base.html:25 templates/debug_toolbar/base.html:26
301
302
  msgid "Toggle Theme"
302
- msgstr ""
303
+ msgstr "Переключатель темы"
303
304
 
304
305
  #: templates/debug_toolbar/base.html:35
305
306
  msgid "Show toolbar"
@@ -315,11 +316,11 @@ msgstr "Включить для последующих запросов"
315
316
 
316
317
  #: templates/debug_toolbar/panels/alerts.html:4
317
318
  msgid "Alerts found"
318
- msgstr ""
319
+ msgstr "Найдены оповещения"
319
320
 
320
321
  #: templates/debug_toolbar/panels/alerts.html:11
321
322
  msgid "No alerts found"
322
- msgstr ""
323
+ msgstr "Оповещения не найдены"
323
324
 
324
325
  #: templates/debug_toolbar/panels/cache.html:2
325
326
  msgid "Summary"
@@ -417,11 +418,11 @@ msgstr "Путь"
417
418
 
418
419
  #: templates/debug_toolbar/panels/history.html:12
419
420
  msgid "Request Variables"
420
- msgstr ""
421
+ msgstr "Запрос переменных"
421
422
 
422
423
  #: templates/debug_toolbar/panels/history.html:13
423
424
  msgid "Status"
424
- msgstr ""
425
+ msgstr "Статус"
425
426
 
426
427
  #: templates/debug_toolbar/panels/history.html:14
427
428
  #: templates/debug_toolbar/panels/sql.html:37
@@ -524,14 +525,14 @@ msgstr[3] "%(num)s запросов"
524
525
  msgid ""
525
526
  "including <abbr title=\"Similar queries are queries with the same SQL, but "
526
527
  "potentially different parameters.\">%(count)s similar</abbr>"
527
- msgstr ""
528
+ msgstr "включая <abbr title=\"Similar queries are queries with the same SQL, but potentially different parameters.\">%(count)s похожий</abbr>"
528
529
 
529
530
  #: templates/debug_toolbar/panels/sql.html:12
530
531
  #, python-format
531
532
  msgid ""
532
533
  "and <abbr title=\"Duplicate queries are identical to each other: they "
533
534
  "execute exactly the same SQL and parameters.\">%(dupes)s duplicates</abbr>"
534
- msgstr ""
535
+ msgstr "и <abbr title=\"Duplicate queries are identical to each other: they execute exactly the same SQL and parameters.\">%(dupes)s дубликаты</abbr>"
535
536
 
536
537
  #: templates/debug_toolbar/panels/sql.html:34
537
538
  msgid "Query"
@@ -545,12 +546,12 @@ msgstr "Временная диаграмма"
545
546
  #: templates/debug_toolbar/panels/sql.html:52
546
547
  #, python-format
547
548
  msgid "%(count)s similar queries."
548
- msgstr ""
549
+ msgstr "%(count)s похожих запросов."
549
550
 
550
551
  #: templates/debug_toolbar/panels/sql.html:58
551
552
  #, python-format
552
553
  msgid "Duplicated %(dupes)s times."
553
- msgstr ""
554
+ msgstr "Дублируется %(dupes)s раз."
554
555
 
555
556
  #: templates/debug_toolbar/panels/sql.html:95
556
557
  msgid "Connection:"
@@ -710,7 +711,7 @@ msgstr "С начала навигации в мс (+продолжительн
710
711
 
711
712
  #: templates/debug_toolbar/panels/versions.html:10
712
713
  msgid "Package"
713
- msgstr ""
714
+ msgstr "Пакет"
714
715
 
715
716
  #: templates/debug_toolbar/panels/versions.html:11
716
717
  msgid "Name"
@@ -6,7 +6,12 @@ import re
6
6
  import socket
7
7
  from functools import cache
8
8
 
9
- from asgiref.sync import iscoroutinefunction, markcoroutinefunction
9
+ from asgiref.sync import (
10
+ async_to_sync,
11
+ iscoroutinefunction,
12
+ markcoroutinefunction,
13
+ sync_to_async,
14
+ )
10
15
  from django.conf import settings
11
16
  from django.utils.module_loading import import_string
12
17
 
@@ -47,7 +52,12 @@ def show_toolbar(request):
47
52
 
48
53
 
49
54
  @cache
50
- def get_show_toolbar():
55
+ def show_toolbar_func_or_path():
56
+ """
57
+ Fetch the show toolbar callback from settings
58
+
59
+ Cached to avoid importing multiple times.
60
+ """
51
61
  # If SHOW_TOOLBAR_CALLBACK is a string, which is the recommended
52
62
  # setup, resolve it to the corresponding callable.
53
63
  func_or_path = dt_settings.get_config()["SHOW_TOOLBAR_CALLBACK"]
@@ -57,6 +67,23 @@ def get_show_toolbar():
57
67
  return func_or_path
58
68
 
59
69
 
70
+ def get_show_toolbar(async_mode):
71
+ """
72
+ Get the callback function to show the toolbar.
73
+
74
+ Will wrap the function with sync_to_async or
75
+ async_to_sync depending on the status of async_mode
76
+ and whether the underlying function is a coroutine.
77
+ """
78
+ show_toolbar = show_toolbar_func_or_path()
79
+ is_coroutine = iscoroutinefunction(show_toolbar)
80
+ if is_coroutine and not async_mode:
81
+ show_toolbar = async_to_sync(show_toolbar)
82
+ elif not is_coroutine and async_mode:
83
+ show_toolbar = sync_to_async(show_toolbar)
84
+ return show_toolbar
85
+
86
+
60
87
  class DebugToolbarMiddleware:
61
88
  """
62
89
  Middleware to set up Debug Toolbar on incoming request and render toolbar
@@ -82,7 +109,8 @@ class DebugToolbarMiddleware:
82
109
  if self.async_mode:
83
110
  return self.__acall__(request)
84
111
  # Decide whether the toolbar is active for this request.
85
- show_toolbar = get_show_toolbar()
112
+ show_toolbar = get_show_toolbar(async_mode=self.async_mode)
113
+
86
114
  if not show_toolbar(request) or DebugToolbar.is_toolbar_request(request):
87
115
  return self.get_response(request)
88
116
  toolbar = DebugToolbar(request, self.get_response)
@@ -103,8 +131,9 @@ class DebugToolbarMiddleware:
103
131
 
104
132
  async def __acall__(self, request):
105
133
  # Decide whether the toolbar is active for this request.
106
- show_toolbar = get_show_toolbar()
107
- if not show_toolbar(request) or DebugToolbar.is_toolbar_request(request):
134
+ show_toolbar = get_show_toolbar(async_mode=self.async_mode)
135
+
136
+ if not await show_toolbar(request) or DebugToolbar.is_toolbar_request(request):
108
137
  response = await self.get_response(request)
109
138
  return response
110
139
 
@@ -68,7 +68,7 @@ class CachePanel(Panel):
68
68
  self.hits = 0
69
69
  self.misses = 0
70
70
  self.calls = []
71
- self.counts = {name: 0 for name in WRAPPED_CACHE_METHODS}
71
+ self.counts = dict.fromkeys(WRAPPED_CACHE_METHODS, 0)
72
72
 
73
73
  @classmethod
74
74
  def current_instance(cls):
@@ -22,20 +22,8 @@ class RedirectsPanel(Panel):
22
22
  Common response processing logic.
23
23
  """
24
24
  if 300 <= response.status_code < 400:
25
- redirect_to = response.get("Location")
26
- if redirect_to:
27
- status_line = f"{response.status_code} {response.reason_phrase}"
28
- cookies = response.cookies
29
- context = {
30
- "redirect_to": redirect_to,
31
- "status_line": status_line,
32
- "toolbar": self.toolbar,
33
- }
34
- # Using SimpleTemplateResponse avoids running global context processors.
35
- response = SimpleTemplateResponse(
36
- "debug_toolbar/redirect.html", context
37
- )
38
- response.cookies = cookies
25
+ if redirect_to := response.get("Location"):
26
+ response = self.get_interception_response(response, redirect_to)
39
27
  response.render()
40
28
  return response
41
29
 
@@ -53,3 +41,22 @@ class RedirectsPanel(Panel):
53
41
  if iscoroutine(response):
54
42
  return self.aprocess_request(request, response)
55
43
  return self._process_response(response)
44
+
45
+ def get_interception_response(self, response, redirect_to):
46
+ """
47
+ Hook method to allow subclasses to customize the interception response.
48
+ """
49
+ status_line = f"{response.status_code} {response.reason_phrase}"
50
+ cookies = response.cookies
51
+ original_response = response
52
+ context = {
53
+ "redirect_to": redirect_to,
54
+ "status_line": status_line,
55
+ "toolbar": self.toolbar,
56
+ "original_response": original_response,
57
+ }
58
+ # Using SimpleTemplateResponse avoids running global context processors.
59
+ response = SimpleTemplateResponse("debug_toolbar/redirect.html", context)
60
+ response.cookies = cookies
61
+ response.original_response = original_response
62
+ return response
@@ -3,7 +3,7 @@ from django.urls import resolve
3
3
  from django.utils.translation import gettext_lazy as _
4
4
 
5
5
  from debug_toolbar.panels import Panel
6
- from debug_toolbar.utils import get_name_from_obj, get_sorted_request_variable
6
+ from debug_toolbar.utils import get_name_from_obj, sanitize_and_sort_request_vars
7
7
 
8
8
 
9
9
  class RequestPanel(Panel):
@@ -26,9 +26,9 @@ class RequestPanel(Panel):
26
26
  def generate_stats(self, request, response):
27
27
  self.record_stats(
28
28
  {
29
- "get": get_sorted_request_variable(request.GET),
30
- "post": get_sorted_request_variable(request.POST),
31
- "cookies": get_sorted_request_variable(request.COOKIES),
29
+ "get": sanitize_and_sort_request_vars(request.GET),
30
+ "post": sanitize_and_sort_request_vars(request.POST),
31
+ "cookies": sanitize_and_sort_request_vars(request.COOKIES),
32
32
  }
33
33
  )
34
34
 
@@ -59,13 +59,5 @@ class RequestPanel(Panel):
59
59
  self.record_stats(view_info)
60
60
 
61
61
  if hasattr(request, "session"):
62
- try:
63
- session_list = [
64
- (k, request.session.get(k)) for k in sorted(request.session.keys())
65
- ]
66
- except TypeError:
67
- session_list = [
68
- (k, request.session.get(k))
69
- for k in request.session.keys() # (it's not a dict)
70
- ]
71
- self.record_stats({"session": {"list": session_list}})
62
+ session_data = dict(request.session)
63
+ self.record_stats({"session": sanitize_and_sort_request_vars(session_data)})