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.
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/workflows/release.yml +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.pre-commit-config.yaml +14 -24
- django_debug_toolbar-5.2.0/CONTRIBUTING.md +11 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/Makefile +14 -9
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/PKG-INFO +7 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/README.rst +1 -1
- django_debug_toolbar-5.2.0/biome.json +22 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/__init__.py +1 -1
- django_debug_toolbar-5.2.0/debug_toolbar/decorators.py +48 -0
- django_debug_toolbar-5.2.0/debug_toolbar/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ru/LC_MESSAGES/django.po +28 -27
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/middleware.py +34 -5
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/cache.py +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/redirects.py +21 -14
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/request.py +6 -14
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/staticfiles.py +18 -43
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/views.py +9 -6
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/settings.py +0 -1
- django_debug_toolbar-5.2.0/debug_toolbar/static/debug_toolbar/css/toolbar.css +1181 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/history.js +22 -26
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/timer.js +18 -24
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/toolbar.js +105 -96
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/utils.js +38 -36
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/base.html +10 -11
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/includes/panel_button.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/includes/panel_content.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/alerts.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/cache.html +12 -12
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/headers.html +10 -10
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/history.html +7 -7
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/history_tr.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/profiling.html +6 -6
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/request.html +13 -13
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/request_variables.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/settings.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/signals.html +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql.html +16 -16
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html +4 -4
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html +5 -5
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_select.html +5 -5
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html +10 -10
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/template_source.html +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/templates.html +8 -8
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/timer.html +7 -7
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/panels/versions.html +3 -3
- django_debug_toolbar-5.2.0/debug_toolbar/templates/debug_toolbar/redirect.html +15 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/toolbar.py +10 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/utils.py +39 -7
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/changes.rst +39 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/conf.py +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/configuration.rst +0 -7
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/index.rst +1 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/panels.rst +6 -1
- django_debug_toolbar-5.2.0/docs/resources.rst +78 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/spelling_wordlist.txt +4 -0
- django_debug_toolbar-5.2.0/example/django-debug-toolbar.png +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/htmx/boost.html +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/turbo/index.html +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/pyproject.toml +6 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/requirements_dev.txt +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_redirects.py +13 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_request.py +73 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_sql.py +2 -2
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_staticfiles.py +44 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_template.py +18 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/settings.py +5 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/ajax/ajax.html +2 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/basic.html +1 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/jinja2/basic.jinja +2 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/sql/flat.html +2 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/sql/nested.html +2 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/staticfiles/async_static.html +1 -1
- django_debug_toolbar-5.2.0/tests/test_csp_rendering.py +176 -0
- django_debug_toolbar-5.2.0/tests/test_decorators.py +66 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_integration.py +21 -9
- django_debug_toolbar-5.2.0/tests/test_middleware.py +93 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_utils.py +62 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/urls.py +1 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/views.py +5 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tox.ini +8 -6
- django_debug_toolbar-5.0.1/CONTRIBUTING.md +0 -5
- django_debug_toolbar-5.0.1/debug_toolbar/decorators.py +0 -32
- django_debug_toolbar-5.0.1/debug_toolbar/locale/ru/LC_MESSAGES/django.mo +0 -0
- django_debug_toolbar-5.0.1/debug_toolbar/static/debug_toolbar/css/toolbar.css +0 -772
- django_debug_toolbar-5.0.1/debug_toolbar/templates/debug_toolbar/redirect.html +0 -15
- django_debug_toolbar-5.0.1/eslint.config.js +0 -28
- django_debug_toolbar-5.0.1/example/django-debug-toolbar.png +0 -0
- django_debug_toolbar-5.0.1/tests/test_csp_rendering.py +0 -142
- django_debug_toolbar-5.0.1/tests/test_decorators.py +0 -26
- django_debug_toolbar-5.0.1/tests/test_middleware_compatibility.py +0 -46
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.editorconfig +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/dependabot.yml +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/workflows/coverage.yml +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.github/workflows/test.yml +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.gitignore +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.readthedocs.yaml +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/.tx/config +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/CODE_OF_CONDUCT.md +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/LICENSE +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/SECURITY.md +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/_compat.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/_stubs.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/apps.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/forms.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/bg/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/bg/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ca/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ca/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/cs/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/cs/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/de/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/de/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/en/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/en/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/es/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/es/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fa/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fa/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fi/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fi/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/he/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/he/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/id/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/id/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/it/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/it/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ja/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ko/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/ko/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/nl/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/nl/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pl/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pl/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sk/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sk/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/uk/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/uk/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/management/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/management/commands/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/management/commands/debugsqlshell.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/alerts.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/headers.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/forms.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/panel.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/history/views.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/profiling.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/settings.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/signals.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/forms.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/panel.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/tracking.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/utils.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/sql/views.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/jinja2.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/templates/panel.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/timer.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/panels/versions.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/css/print.css +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/static/debug_toolbar/js/redirect.js +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templates/debug_toolbar/includes/theme_selector.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/templatetags/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/urls.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/debug_toolbar/views.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/Makefile +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/architecture.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/checks.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/commands.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/contributing.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/installation.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/make.bat +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/docs/tips.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/README.rst +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/asgi.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/example.db +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/manage.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/screenshot.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/settings.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/static/test.css +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/async_db.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/bad_form.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/index.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/jinja2/index.jinja +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/jquery/index.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/mootools/index.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/templates/prototype/index.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/test_views.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/urls.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/views.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/example/wsgi.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/setup.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/additional_static/base.css +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/base.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/commands/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/commands/test_debugsqlshell.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/context_processors.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/forms.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/loaders.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/middleware.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/models.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/__init__.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_alerts.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_async_panel_compatibility.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_cache.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_custom.py +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_history.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_profiling.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_settings.py +1 -1
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/panels/test_versions.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/sync.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/base.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/jinja2/base.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/registration/login.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/sql/included.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/templates/staticfiles/path.html +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_checks.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_forms.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_integration_async.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_login_not_required.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/test_toolbar.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/urls_invalid.py +0 -0
- {django_debug_toolbar-5.0.1 → django_debug_toolbar-5.2.0}/tests/urls_use_package_urls.py +0 -0
|
@@ -14,46 +14,36 @@ repos:
|
|
|
14
14
|
hooks:
|
|
15
15
|
- id: doc8
|
|
16
16
|
- repo: https://github.com/adamchainz/django-upgrade
|
|
17
|
-
rev: 1.
|
|
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
|
|
27
|
-
rev:
|
|
28
|
-
hooks:
|
|
29
|
-
|
|
30
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
Binary file
|
|
@@ -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:
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
|
@@ -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
|
|
26
|
-
|
|
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,
|
|
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":
|
|
30
|
-
"post":
|
|
31
|
-
"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
|
-
|
|
63
|
-
|
|
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)})
|