From 4cadf088d8b4c48fc056222d46d4d9e7e25bcae9 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Fri, 22 Jan 2021 12:09:18 -0600 Subject: [PATCH 01/28] Correct RENDER_PANELS functionality and when enabled disable HistoryPanel. The render panels setting used to control whether the toolbar would keep the contents of the panels in the background or render the toolbar on every page. The history panel relies on loading panels in the background. If panels should be rendered on the request, then the history panel is can't/shouldn't work. --- debug_toolbar/panels/history/panel.py | 6 ++++ .../templates/debug_toolbar/base.html | 5 ++- .../debug_toolbar/includes/panel_content.html | 6 ++-- debug_toolbar/toolbar.py | 4 +++ docs/changes.rst | 4 +++ docs/configuration.rst | 2 ++ docs/installation.rst | 8 +++++ docs/panels.rst | 9 +++-- tests/test_integration.py | 35 ++++++++++++++++++- 9 files changed, 72 insertions(+), 7 deletions(-) diff --git a/debug_toolbar/panels/history/panel.py b/debug_toolbar/panels/history/panel.py index e80d8c93a..393d91d4f 100644 --- a/debug_toolbar/panels/history/panel.py +++ b/debug_toolbar/panels/history/panel.py @@ -20,6 +20,12 @@ class HistoryPanel(Panel): nav_title = _("History") template = "debug_toolbar/panels/history.html" + @property + def enabled(self): + # Do not show the history panel if the panels are rendered on request + # rather than loaded via ajax. + return super().enabled and not self.toolbar.should_render_panels() + @property def is_historical(self): """The HistoryPanel should not be included in the historical panels.""" diff --git a/debug_toolbar/templates/debug_toolbar/base.html b/debug_toolbar/templates/debug_toolbar/base.html index 78b9b7fe2..7abc5476f 100644 --- a/debug_toolbar/templates/debug_toolbar/base.html +++ b/debug_toolbar/templates/debug_toolbar/base.html @@ -7,7 +7,10 @@ {% endblock %}
diff --git a/debug_toolbar/templates/debug_toolbar/includes/panel_content.html b/debug_toolbar/templates/debug_toolbar/includes/panel_content.html index 2c1a1b195..8c2e446b1 100644 --- a/debug_toolbar/templates/debug_toolbar/includes/panel_content.html +++ b/debug_toolbar/templates/debug_toolbar/includes/panel_content.html @@ -7,11 +7,11 @@

{{ panel.title }}

- {% if toolbar.store_id %} + {% if toolbar.should_render_panels %} +
{{ panel.content }}
+ {% else %}
- {% else %} -
{{ panel.content }}
{% endif %}
diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index 9638ba1f8..3d8937126 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -78,6 +78,10 @@ def render_toolbar(self): raise def should_render_panels(self): + """Determine whether the panels should be rendered during the request + + If False, the panels will be loaded via Ajax. + """ render_panels = self.config["RENDER_PANELS"] if render_panels is None: render_panels = self.request.META["wsgi.multiprocess"] diff --git a/docs/changes.rst b/docs/changes.rst index 6207b6797..04c7cf2dc 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -9,6 +9,10 @@ Next version * Added ``PRETTIFY_SQL`` configuration option to support controlling SQL token grouping. By default it's set to True. When set to False, a performance improvement can be seen by the SQL panel. +* ``HistoryPanel`` will be disabled when ``RENDER_PANELS`` is ``True`` + or if it's not set, but the server is running with multiple processes. +* Fixes ``RENDER_PANELS`` functionality so that when ``True`` panels are + rendered during the request and not loaded asynchronously. 3.2 (2020-12-03) diff --git a/docs/configuration.rst b/docs/configuration.rst index 92b493000..01d5b8436 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -66,6 +66,8 @@ Toolbar options The toolbar searches for this string in the HTML and inserts itself just before. +.. _RENDER_PANELS: + * ``RENDER_PANELS`` Default: ``None`` diff --git a/docs/installation.rst b/docs/installation.rst index 87b964e12..eb60c1277 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -147,3 +147,11 @@ And for Apache: .. _JavaScript module: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules .. _CORS errors: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin .. _Access-Control-Allow-Origin header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin + +Django Channels & Async +^^^^^^^^^^^^^^^^^^^^^^^ + +The Debug Toolbar currently doesn't support Django Channels or async projects. +If you are using Django channels are having issues getting panels to load, +please review the documentation for the configuration option +:ref:`RENDER_PANELS `. diff --git a/docs/panels.rst b/docs/panels.rst index c21e90801..f83c0770d 100644 --- a/docs/panels.rst +++ b/docs/panels.rst @@ -17,6 +17,11 @@ History This panel shows the history of requests made and allows switching to a past snapshot of the toolbar to view that request's stats. +.. caution:: + If :ref:`RENDER_PANELS ` configuration option is set to + ``True`` or if the server runs with multiple processes, the History Panel + will be disabled. + Version ~~~~~~~ @@ -184,9 +189,9 @@ URL: https://github.com/danyi1212/django-windowsauth Path: ``windows_auth.panels.LDAPPanel`` -LDAP Operations performed during the request, including timing, request and response messages, +LDAP Operations performed during the request, including timing, request and response messages, the entries received, write changes list, stack-tracing and error debugging. -This panel also shows connection usage metrics when it is collected. +This panel also shows connection usage metrics when it is collected. `Check out the docs `_. Line Profiler diff --git a/tests/test_integration.py b/tests/test_integration.py index 8c28f6c6e..f1f1cb1bb 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -289,11 +289,44 @@ def test_sql_profile_checks_show_toolbar(self): self.assertEqual(response.status_code, 404) @override_settings(DEBUG_TOOLBAR_CONFIG={"RENDER_PANELS": True}) - def test_data_store_id_not_rendered_when_none(self): + def test_render_panels_in_request(self): + """ + Test that panels are are rendered during the request with + RENDER_PANELS=TRUE + """ url = "/regular/basic/" response = self.client.get(url) self.assertIn(b'id="djDebug"', response.content) + # Verify the store id is not included. self.assertNotIn(b"data-store-id", response.content) + # Verify the history panel was disabled + self.assertIn( + b'', + response.content, + ) + # Verify the a panel was rendered + self.assertIn(b"Response headers", response.content) + + @override_settings(DEBUG_TOOLBAR_CONFIG={"RENDER_PANELS": False}) + def test_load_panels(self): + """ + Test that panels are not rendered during the request with + RENDER_PANELS=False + """ + url = "/execute_sql/" + response = self.client.get(url) + self.assertIn(b'id="djDebug"', response.content) + # Verify the store id is included. + self.assertIn(b"data-store-id", response.content) + # Verify the history panel was not disabled + self.assertNotIn( + b'', + response.content, + ) + # Verify the a panel was not rendered + self.assertNotIn(b"Response headers", response.content) def test_view_returns_template_response(self): response = self.client.get("/template_response/basic/") From 765fbd14523390e859b77c3fb1c093544c7a39ce Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Fri, 12 Feb 2021 08:05:47 -0600 Subject: [PATCH 02/28] Improved RENDER_PANELS documentation and change log. --- docs/changes.rst | 7 ++++--- docs/configuration.rst | 9 ++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/changes.rst b/docs/changes.rst index 04c7cf2dc..c59a59fd2 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -9,9 +9,10 @@ Next version * Added ``PRETTIFY_SQL`` configuration option to support controlling SQL token grouping. By default it's set to True. When set to False, a performance improvement can be seen by the SQL panel. -* ``HistoryPanel`` will be disabled when ``RENDER_PANELS`` is ``True`` - or if it's not set, but the server is running with multiple processes. -* Fixes ``RENDER_PANELS`` functionality so that when ``True`` panels are +* Disabled ``HistoryPanel`` when ``RENDER_PANELS`` is ``True`` + or if ``RENDER_PANELS`` is ``None`` and the WSGI container is + running with multiple processes. +* Fixed ``RENDER_PANELS`` functionality so that when ``True`` panels are rendered during the request and not loaded asynchronously. diff --git a/docs/configuration.rst b/docs/configuration.rst index 01d5b8436..0d7cd87c4 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -73,14 +73,17 @@ Toolbar options Default: ``None`` If set to ``False``, the debug toolbar will keep the contents of panels in - memory on the server and load them on demand. If set to ``True``, it will - render panels inside every page. This may slow down page rendering but it's + memory on the server and load them on demand. + + If set to ``True``, it will disable ``HistoryPanel`` and render panels + inside every page. This may slow down page rendering but it's required on multi-process servers, for example if you deploy the toolbar in production (which isn't recommended). The default value of ``None`` tells the toolbar to automatically do the right thing depending on whether the WSGI container runs multiple processes. - This setting allows you to force a different behavior if needed. + This setting allows you to force a different behavior if needed. If the + WSGI container runs multiple processes, it will disable ``HistoryPanel``. * ``RESULTS_CACHE_SIZE`` From dc3f80be5cacfa469f8817caeacd9175c7f94b80 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Fri, 12 Feb 2021 09:04:45 -0600 Subject: [PATCH 03/28] Add async to the allowed spellings. --- docs/spelling_wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index ede7915a1..7250ed750 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -37,3 +37,4 @@ unhashable uWSGI validator Werkzeug +async From 43f4304789a0c62ee1437e7e7b8b601be8e2001b Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Wed, 7 Apr 2021 14:19:42 +0200 Subject: [PATCH 04/28] Drop support for Django 3.0. --- setup.cfg | 1 - tox.ini | 13 ++++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/setup.cfg b/setup.cfg index 93a297b31..6a52c962b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -14,7 +14,6 @@ classifiers = Environment :: Web Environment Framework :: Django Framework :: Django :: 2.2 - Framework :: Django :: 3.0 Framework :: Django :: 3.1 Intended Audience :: Developers License :: OSI Approved :: BSD License diff --git a/tox.ini b/tox.ini index 192e51f67..882e19eb4 100644 --- a/tox.ini +++ b/tox.ini @@ -3,14 +3,13 @@ envlist = docs style readme - py{36,37}-dj{22,30,31,32}-sqlite - py{38,39}-dj{22,30,31,32,main}-sqlite - py{36,37,38,39}-dj{22,30,31,32}-{postgresql,mysql} + py{36,37}-dj{22,31,32}-sqlite + py{38,39}-dj{22,31,32,main}-sqlite + py{36,37,38,39}-dj{22,31,32}-{postgresql,mysql} [testenv] deps = dj22: Django==2.2.* - dj30: Django==3.0.* dj31: Django==3.1.* dj32: Django>=3.2a1,<4.0 sqlite: mock @@ -43,19 +42,19 @@ whitelist_externals = make pip_pre = True commands = make coverage TEST_ARGS='{posargs:tests}' -[testenv:py{36,37,38,39}-dj{22,30,31,32}-postgresql] +[testenv:py{36,37,38,39}-dj{22,31,32}-postgresql] setenv = {[testenv]setenv} DB_BACKEND = postgresql DB_PORT = {env:DB_PORT:5432} -[testenv:py{36,37,38,39}-dj{22,30,31,32}-mysql] +[testenv:py{36,37,38,39}-dj{22,31,32}-mysql] setenv = {[testenv]setenv} DB_BACKEND = mysql DB_PORT = {env:DB_PORT:3306} -[testenv:py{36,37,38,39}-dj{22,30,31,32,main}-sqlite] +[testenv:py{36,37,38,39}-dj{22,31,32,main}-sqlite] setenv = {[testenv]setenv} DB_BACKEND = sqlite3 From e0b13324b131e594b5d4216f4b972f5ffce91fea Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Wed, 7 Apr 2021 17:20:49 +0200 Subject: [PATCH 05/28] Add Django 3.2 to setup classifiers. --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 6a52c962b..bb037466c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -15,6 +15,7 @@ classifiers = Framework :: Django Framework :: Django :: 2.2 Framework :: Django :: 3.1 + Framework :: Django :: 3.2 Intended Audience :: Developers License :: OSI Approved :: BSD License Operating System :: OS Independent From 8f4bc8677df635c68ad792bc7ecc21c369ff2a5d Mon Sep 17 00:00:00 2001 From: Karthikeyan Singaravelan Date: Sun, 18 Apr 2021 05:45:39 +0000 Subject: [PATCH 06/28] Use current_thread instead of currentThread method that was deprecated in Python 3.10 --- debug_toolbar/panels/logging.py | 2 +- debug_toolbar/panels/staticfiles.py | 2 +- debug_toolbar/utils.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debug_toolbar/panels/logging.py b/debug_toolbar/panels/logging.py index f296fc882..a7252c2bb 100644 --- a/debug_toolbar/panels/logging.py +++ b/debug_toolbar/panels/logging.py @@ -78,6 +78,6 @@ def process_request(self, request): def generate_stats(self, request, response): records = collector.get_collection() - self._records[threading.currentThread()] = records + self._records[threading.current_thread()] = records collector.clear_collection() self.record_stats({"records": records}) diff --git a/debug_toolbar/panels/staticfiles.py b/debug_toolbar/panels/staticfiles.py index 9a15c0f28..ef6af5d3e 100644 --- a/debug_toolbar/panels/staticfiles.py +++ b/debug_toolbar/panels/staticfiles.py @@ -118,7 +118,7 @@ def process_request(self, request): def generate_stats(self, request, response): used_paths = collector.get_collection() - self._paths[threading.currentThread()] = used_paths + self._paths[threading.current_thread()] = used_paths self.record_stats( { diff --git a/debug_toolbar/utils.py b/debug_toolbar/utils.py index cc5d74477..41889872a 100644 --- a/debug_toolbar/utils.py +++ b/debug_toolbar/utils.py @@ -252,14 +252,14 @@ def get_collection(self, thread=None): is provided, returns a list for the current thread. """ if thread is None: - thread = threading.currentThread() + thread = threading.current_thread() if thread not in self.collections: self.collections[thread] = [] return self.collections[thread] def clear_collection(self, thread=None): if thread is None: - thread = threading.currentThread() + thread = threading.current_thread() if thread in self.collections: del self.collections[thread] From 7f2ad72898cfeb92bbd6702c80faebc7d63288f1 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Mon, 19 Apr 2021 08:34:58 -0500 Subject: [PATCH 07/28] Support JS events when loading a panel. (#1441) * Support panel rendered JS event. This fixes the problem of the Timer Panel not inserting the browser timings section after being loaded via the HistoryPanel. These events could be wired into to better render panels or support a more dynamic toolbar and/or panel. Co-authored-by: Matthias Kestenholz --- debug_toolbar/panels/__init__.py | 4 + .../static/debug_toolbar/js/timer.js | 128 ++++++++++-------- .../static/debug_toolbar/js/toolbar.js | 16 ++- .../static/debug_toolbar/js/utils.js | 15 ++ docs/changes.rst | 9 +- docs/panels.rst | 33 ++++- 6 files changed, 143 insertions(+), 62 deletions(-) diff --git a/debug_toolbar/panels/__init__.py b/debug_toolbar/panels/__init__.py index ec3445c1e..8fd433c63 100644 --- a/debug_toolbar/panels/__init__.py +++ b/debug_toolbar/panels/__init__.py @@ -107,6 +107,10 @@ def content(self): def scripts(self): """ Scripts used by the HTML content of the panel when it's displayed. + + When a panel is rendered on the frontend, the ``djdt.panel.render`` + JavaScript event will be dispatched. The scripts can listen for + this event to support dynamic functionality. """ return [] diff --git a/debug_toolbar/static/debug_toolbar/js/timer.js b/debug_toolbar/static/debug_toolbar/js/timer.js index 1d4ac19d8..70d3fe5a2 100644 --- a/debug_toolbar/static/debug_toolbar/js/timer.js +++ b/debug_toolbar/static/debug_toolbar/js/timer.js @@ -1,59 +1,75 @@ -const timingOffset = performance.timing.navigationStart, - timingEnd = performance.timing.loadEventEnd, - totalTime = timingEnd - timingOffset; -function getLeft(stat) { - return ((performance.timing[stat] - timingOffset) / totalTime) * 100.0; -} -function getCSSWidth(stat, endStat) { - let width = - ((performance.timing[endStat] - performance.timing[stat]) / totalTime) * - 100.0; - // Calculate relative percent (same as sql panel logic) - width = (100.0 * width) / (100.0 - getLeft(stat)); - return width < 1 ? "2px" : width + "%"; -} -function addRow(tbody, stat, endStat) { - const row = document.createElement("tr"); - if (endStat) { - // Render a start through end bar - row.innerHTML = - "" + - stat.replace("Start", "") + - "" + - '' + - "" + - (performance.timing[stat] - timingOffset) + - " (+" + - (performance.timing[endStat] - performance.timing[stat]) + - ")"; - row.querySelector("rect").setAttribute( - "width", - getCSSWidth(stat, endStat) - ); - } else { - // Render a point in time - row.innerHTML = - "" + - stat + - "" + - '' + - "" + - (performance.timing[stat] - timingOffset) + - ""; - row.querySelector("rect").setAttribute("width", 2); +import { $$ } from "./utils.js"; + +function insertBrowserTiming() { + console.log(["inserted"]); + const timingOffset = performance.timing.navigationStart, + timingEnd = performance.timing.loadEventEnd, + totalTime = timingEnd - timingOffset; + function getLeft(stat) { + return ((performance.timing[stat] - timingOffset) / totalTime) * 100.0; + } + function getCSSWidth(stat, endStat) { + let width = + ((performance.timing[endStat] - performance.timing[stat]) / + totalTime) * + 100.0; + // Calculate relative percent (same as sql panel logic) + width = (100.0 * width) / (100.0 - getLeft(stat)); + return width < 1 ? "2px" : width + "%"; + } + function addRow(tbody, stat, endStat) { + const row = document.createElement("tr"); + if (endStat) { + // Render a start through end bar + row.innerHTML = + "" + + stat.replace("Start", "") + + "" + + '' + + "" + + (performance.timing[stat] - timingOffset) + + " (+" + + (performance.timing[endStat] - performance.timing[stat]) + + ")"; + row.querySelector("rect").setAttribute( + "width", + getCSSWidth(stat, endStat) + ); + } else { + // Render a point in time + row.innerHTML = + "" + + stat + + "" + + '' + + "" + + (performance.timing[stat] - timingOffset) + + ""; + row.querySelector("rect").setAttribute("width", 2); + } + row.querySelector("rect").setAttribute("x", getLeft(stat)); + tbody.appendChild(row); + } + + const browserTiming = document.getElementById("djDebugBrowserTiming"); + // Determine if the browser timing section has already been rendered. + if (browserTiming.classList.contains("djdt-hidden")) { + const tbody = document.getElementById("djDebugBrowserTimingTableBody"); + // This is a reasonably complete and ordered set of timing periods (2 params) and events (1 param) + addRow(tbody, "domainLookupStart", "domainLookupEnd"); + addRow(tbody, "connectStart", "connectEnd"); + addRow(tbody, "requestStart", "responseEnd"); // There is no requestEnd + addRow(tbody, "responseStart", "responseEnd"); + addRow(tbody, "domLoading", "domComplete"); // Spans the events below + addRow(tbody, "domInteractive"); + addRow(tbody, "domContentLoadedEventStart", "domContentLoadedEventEnd"); + addRow(tbody, "loadEventStart", "loadEventEnd"); + browserTiming.classList.remove("djdt-hidden"); } - row.querySelector("rect").setAttribute("x", getLeft(stat)); - tbody.appendChild(row); } -const tbody = document.getElementById("djDebugBrowserTimingTableBody"); -// This is a reasonably complete and ordered set of timing periods (2 params) and events (1 param) -addRow(tbody, "domainLookupStart", "domainLookupEnd"); -addRow(tbody, "connectStart", "connectEnd"); -addRow(tbody, "requestStart", "responseEnd"); // There is no requestEnd -addRow(tbody, "responseStart", "responseEnd"); -addRow(tbody, "domLoading", "domComplete"); // Spans the events below -addRow(tbody, "domInteractive"); -addRow(tbody, "domContentLoadedEventStart", "domContentLoadedEventEnd"); -addRow(tbody, "loadEventStart", "loadEventEnd"); -document.getElementById("djDebugBrowserTiming").classList.remove("djdt-hidden"); +const djDebug = document.getElementById("djDebug"); +// Insert the browser timing now since it's possible for this +// script to miss the initial panel load event. +insertBrowserTiming(); +$$.onPanelRender(djDebug, "TimerPanel", insertBrowserTiming); diff --git a/debug_toolbar/static/debug_toolbar/js/toolbar.js b/debug_toolbar/static/debug_toolbar/js/toolbar.js index d739cbdb3..579548d4e 100644 --- a/debug_toolbar/static/debug_toolbar/js/toolbar.js +++ b/debug_toolbar/static/debug_toolbar/js/toolbar.js @@ -20,7 +20,8 @@ const djdt = { if (!this.className) { return; } - const current = document.getElementById(this.className); + const panelId = this.className; + const current = document.getElementById(panelId); if ($$.visible(current)) { djdt.hide_panels(); } else { @@ -39,13 +40,24 @@ const djdt = { window.location ); url.searchParams.append("store_id", store_id); - url.searchParams.append("panel_id", this.className); + url.searchParams.append("panel_id", panelId); ajax(url).then(function (data) { inner.previousElementSibling.remove(); // Remove AJAX loader inner.innerHTML = data.content; $$.executeScripts(data.scripts); $$.applyStyles(inner); + djDebug.dispatchEvent( + new CustomEvent("djdt.panel.render", { + detail: { panelId: panelId }, + }) + ); }); + } else { + djDebug.dispatchEvent( + new CustomEvent("djdt.panel.render", { + detail: { panelId: panelId }, + }) + ); } } } diff --git a/debug_toolbar/static/debug_toolbar/js/utils.js b/debug_toolbar/static/debug_toolbar/js/utils.js index 4683b319f..da810aad0 100644 --- a/debug_toolbar/static/debug_toolbar/js/utils.js +++ b/debug_toolbar/static/debug_toolbar/js/utils.js @@ -7,6 +7,21 @@ const $$ = { } }); }, + onPanelRender(root, panelId, fn) { + /* + This is a helper function to attach a handler for a `djdt.panel.render` + event of a specific panel. + + root: The container element that the listener should be attached to. + panelId: The Id of the panel. + fn: A function to execute when the event is triggered. + */ + root.addEventListener("djdt.panel.render", function (event) { + if (event.detail.panelId === panelId) { + fn.call(event); + } + }); + }, show(element) { element.classList.remove("djdt-hidden"); }, diff --git a/docs/changes.rst b/docs/changes.rst index 19aaab12d..435574265 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -16,8 +16,13 @@ Next version * Added ``PRETTIFY_SQL`` configuration option to support controlling SQL token grouping. By default it's set to True. When set to False, a performance improvement can be seen by the SQL panel. -* Fixed issue with toolbar expecting URL paths to start with `/__debug__/` - while the documentation indicates it's not required. +* Added a JavaScript event when a panel loads of the format + ``djdt.panel.[PanelId]`` where PanelId is the ``panel_id`` property + of the panel's Python class. Listening for this event corrects the bug + in the Timer Panel in which it didn't insert the browser timings + after switching requests in the History Panel. +* Fixed issue with the toolbar expecting URL paths to start with + ``/__debug__/`` while the documentation indicates it's not required. 3.2 (2020-12-03) ---------------- diff --git a/docs/panels.rst b/docs/panels.rst index c21e90801..dfa5ec92a 100644 --- a/docs/panels.rst +++ b/docs/panels.rst @@ -184,9 +184,9 @@ URL: https://github.com/danyi1212/django-windowsauth Path: ``windows_auth.panels.LDAPPanel`` -LDAP Operations performed during the request, including timing, request and response messages, +LDAP Operations performed during the request, including timing, request and response messages, the entries received, write changes list, stack-tracing and error debugging. -This panel also shows connection usage metrics when it is collected. +This panel also shows connection usage metrics when it is collected. `Check out the docs `_. Line Profiler @@ -402,3 +402,32 @@ common methods available. .. js:function:: djdt.show_toolbar Shows the toolbar. + +Events +^^^^^^ + +.. js:attribute:: djdt.panel.render + + This is an event raised when a panel is rendered. It has the property + ``detail.panelId`` which identifies which panel has been loaded. This + event can be useful when creating custom scripts to process the HTML + further. + + An example of this for the ``CustomPanel`` would be: + +.. code-block:: javascript + + import { $$ } from "./utils.js"; + function addCustomMetrics() { + // Logic to process/add custom metrics here. + + // Be sure to cover the case of this function being called twice + // due to file being loaded asynchronously. + } + const djDebug = document.getElementById("djDebug"); + $$.onPanelRender(djDebug, "CustomPanel", addCustomMetrics); + // Since a panel's scripts are loaded asynchronously, it's possible that + // the above statement would occur after the djdt.panel.render event has + // been raised. To account for that, the rendering function should be + // called here as well. + addCustomMetrics(); From 73c24d62b5f0043ff6cb650b0be82451f5fcbbcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Freitag?= Date: Fri, 23 Apr 2021 12:08:18 +0200 Subject: [PATCH 08/28] Use default app config discovery Django 3.2 deprecated default_app_config. https://docs.djangoproject.com/en/3.2/releases/3.2/#automatic-appconfig-discovery --- debug_toolbar/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debug_toolbar/__init__.py b/debug_toolbar/__init__.py index 84eea7d7a..05d62a515 100644 --- a/debug_toolbar/__init__.py +++ b/debug_toolbar/__init__.py @@ -1,3 +1,5 @@ +import django + __all__ = ["VERSION"] @@ -9,4 +11,5 @@ urls = "debug_toolbar.toolbar", "djdt" -default_app_config = "debug_toolbar.apps.DebugToolbarConfig" +if django.VERSION < (3, 2): + default_app_config = "debug_toolbar.apps.DebugToolbarConfig" From 29605f84d18dcc969226c50ddcafb475a445eb6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Freitag?= Date: Fri, 23 Apr 2021 12:20:54 +0200 Subject: [PATCH 09/28] Use twine to check generated package and readme The setup.py check command is deprecated. Use twine check instead. Rename the tox environment to packaging, it now checks the package. --- .github/workflows/test.yml | 2 +- setup.cfg | 1 + tox.ini | 13 +++++++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b7cd30c3..667846cdc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -216,4 +216,4 @@ jobs: python -m pip install --upgrade tox - name: Test with tox - run: tox -e docs,style,readme + run: tox -e docs,style,packaging diff --git a/setup.cfg b/setup.cfg index 82ca17b97..b65f3a887 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,6 +3,7 @@ name = django-debug-toolbar version = 3.2.1 description = A configurable set of panels that display various debug information about the current request/response. long_description = file: README.rst +long_description_content_type = text/x-rst author = Rob Hudson author_email = rob@cogit8.org url = https://github.com/jazzband/django-debug-toolbar diff --git a/tox.ini b/tox.ini index 882e19eb4..c3bb0bac2 100644 --- a/tox.ini +++ b/tox.ini @@ -2,7 +2,7 @@ envlist = docs style - readme + packaging py{36,37}-dj{22,31,32}-sqlite py{38,39}-dj{22,31,32,main}-sqlite py{36,37,38,39}-dj{22,31,32}-{postgresql,mysql} @@ -74,9 +74,14 @@ deps = isort>=5.0.2 skip_install = true -[testenv:readme] -commands = python setup.py check -r -s -deps = readme_renderer +[testenv:packaging] +commands = + python setup.py sdist bdist_wheel + twine check --strict dist/* +deps = + readme_renderer + twine + wheel skip_install = true [gh-actions] From f5279478d3795f0adeacac3b1f7c990b1470b2ef Mon Sep 17 00:00:00 2001 From: Gildardo Adrian Maravilla Jacome Date: Wed, 20 Jan 2021 06:36:22 -0600 Subject: [PATCH 10/28] Show template context on included templates --- debug_toolbar/utils.py | 9 ++++++- tests/panels/test_sql.py | 45 +++++++++++++++++++++++++++++++ tests/templates/sql/flat.html | 4 +++ tests/templates/sql/included.html | 1 + tests/templates/sql/nested.html | 4 +++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 tests/templates/sql/flat.html create mode 100644 tests/templates/sql/included.html create mode 100644 tests/templates/sql/nested.html diff --git a/debug_toolbar/utils.py b/debug_toolbar/utils.py index 41889872a..f8fb68538 100644 --- a/debug_toolbar/utils.py +++ b/debug_toolbar/utils.py @@ -135,7 +135,14 @@ def get_template_context(node, context, context_lines=3): def get_template_source_from_exception_info(node, context): - exception_info = context.template.get_exception_info(Exception("DDT"), node.token) + if context.template.origin == node.origin: + exception_info = context.template.get_exception_info( + Exception("DDT"), node.token + ) + else: + exception_info = context.render_context.template.get_exception_info( + Exception("DDT"), node.token + ) line = exception_info["line"] source_lines = exception_info["source_lines"] name = exception_info["name"] diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py index 9ed2b1a6e..84b789868 100644 --- a/tests/panels/test_sql.py +++ b/tests/panels/test_sql.py @@ -1,4 +1,5 @@ import datetime +import os import unittest import django @@ -396,3 +397,47 @@ def test_prettify_sql(self): self.panel.generate_stats(self.request, response) self.assertEqual(len(self.panel._queries), 1) self.assertEqual(pretty_sql, self.panel._queries[-1][1]["sql"]) + + @override_settings( + DEBUG=True, + ) + def test_flat_template_information(self): + """ + Test case for when the query is used in a flat template hierarchy + (without included templates). + """ + self.assertEqual(len(self.panel._queries), 0) + + users = User.objects.all() + render(self.request, "sql/flat.html", {"users": users}) + + self.assertEqual(len(self.panel._queries), 1) + + query = self.panel._queries[0] + template_info = query[1]["template_info"] + template_name = os.path.basename(template_info["name"]) + self.assertEqual(template_name, "flat.html") + self.assertEqual(template_info["context"][2]["content"].strip(), "{{ users }}") + self.assertEqual(template_info["context"][2]["highlight"], True) + + @override_settings( + DEBUG=True, + ) + def test_nested_template_information(self): + """ + Test case for when the query is used in a nested template + hierarchy (with included templates). + """ + self.assertEqual(len(self.panel._queries), 0) + + users = User.objects.all() + render(self.request, "sql/nested.html", {"users": users}) + + self.assertEqual(len(self.panel._queries), 1) + + query = self.panel._queries[0] + template_info = query[1]["template_info"] + template_name = os.path.basename(template_info["name"]) + self.assertEqual(template_name, "included.html") + self.assertEqual(template_info["context"][0]["content"].strip(), "{{ users }}") + self.assertEqual(template_info["context"][0]["highlight"], True) diff --git a/tests/templates/sql/flat.html b/tests/templates/sql/flat.html new file mode 100644 index 000000000..058dbe043 --- /dev/null +++ b/tests/templates/sql/flat.html @@ -0,0 +1,4 @@ +{% extends "base.html" %} +{% block content %} + {{ users }} +{% endblock %} diff --git a/tests/templates/sql/included.html b/tests/templates/sql/included.html new file mode 100644 index 000000000..87d2e1f70 --- /dev/null +++ b/tests/templates/sql/included.html @@ -0,0 +1 @@ +{{ users }} diff --git a/tests/templates/sql/nested.html b/tests/templates/sql/nested.html new file mode 100644 index 000000000..8558e2d45 --- /dev/null +++ b/tests/templates/sql/nested.html @@ -0,0 +1,4 @@ +{% extends "base.html" %} +{% block content %} + {% include "sql/included.html" %} +{% endblock %} From 3b5f91006d2be85d4c763491e7aca31b8036327f Mon Sep 17 00:00:00 2001 From: Gildardo Adrian Maravilla Jacome Date: Sun, 9 May 2021 02:21:59 -0500 Subject: [PATCH 11/28] Fix lint error --- debug_toolbar/panels/history/panel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug_toolbar/panels/history/panel.py b/debug_toolbar/panels/history/panel.py index 4494bbfcd..0382cad62 100644 --- a/debug_toolbar/panels/history/panel.py +++ b/debug_toolbar/panels/history/panel.py @@ -15,7 +15,7 @@ class HistoryPanel(Panel): - """ A panel to display History """ + """A panel to display History""" title = _("History") nav_title = _("History") From d36b7d6b768600212c89c26cfd8355842e78eec1 Mon Sep 17 00:00:00 2001 From: Matthias Kestenholz Date: Fri, 14 May 2021 17:48:52 +0200 Subject: [PATCH 12/28] Fix the Y positioning of the handle - The additional translateY makes djdt.top=0 move the handle to the top of the browser window. - Because the handle is rotated we have to subtract its offsetWidth, not its offsetHeight to keep it in bounds at the bottom of the window. --- debug_toolbar/static/debug_toolbar/css/toolbar.css | 2 +- debug_toolbar/static/debug_toolbar/js/toolbar.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debug_toolbar/static/debug_toolbar/css/toolbar.css b/debug_toolbar/static/debug_toolbar/css/toolbar.css index 6bbfd3d73..13fbbed0a 100644 --- a/debug_toolbar/static/debug_toolbar/css/toolbar.css +++ b/debug_toolbar/static/debug_toolbar/css/toolbar.css @@ -198,7 +198,7 @@ #djDebug #djDebugToolbarHandle { position: fixed; - transform: rotate(-90deg); + transform: translateY(-100%) rotate(-90deg); transform-origin: right bottom; background-color: #fff; border: 1px solid #111; diff --git a/debug_toolbar/static/debug_toolbar/js/toolbar.js b/debug_toolbar/static/debug_toolbar/js/toolbar.js index 579548d4e..becf39818 100644 --- a/debug_toolbar/static/debug_toolbar/js/toolbar.js +++ b/debug_toolbar/static/debug_toolbar/js/toolbar.js @@ -222,7 +222,7 @@ const djdt = { if (handleTop) { handleTop = Math.min( handleTop, - window.innerHeight - handle.offsetHeight + window.innerHeight - handle.offsetWidth ); handle.style.top = handleTop + "px"; } From ebd4ae3544d2a1aa230df63826e600b6469d3eb6 Mon Sep 17 00:00:00 2001 From: Matthias Kestenholz Date: Fri, 14 May 2021 17:55:56 +0200 Subject: [PATCH 13/28] Fix #1471: Make the handle stay in bounds when resizing --- .../static/debug_toolbar/js/toolbar.js | 23 +++++++++++-------- docs/changes.rst | 2 ++ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/debug_toolbar/static/debug_toolbar/js/toolbar.js b/debug_toolbar/static/debug_toolbar/js/toolbar.js index becf39818..c17ee3ea2 100644 --- a/debug_toolbar/static/debug_toolbar/js/toolbar.js +++ b/debug_toolbar/static/debug_toolbar/js/toolbar.js @@ -190,6 +190,7 @@ const djdt = { requestAnimationFrame(function () { djdt.handleDragged = false; }); + djdt.ensure_handle_visibility(); } }); const show = @@ -210,6 +211,15 @@ const djdt = { e.classList.remove("djdt-active"); }); }, + ensure_handle_visibility() { + const handle = document.getElementById("djDebugToolbarHandle"); + // set handle position + const handleTop = Math.min( + localStorage.getItem("djdt.top") || 0, + window.innerHeight - handle.offsetWidth + ); + handle.style.top = handleTop + "px"; + }, hide_toolbar() { djdt.hide_panels(); @@ -217,16 +227,8 @@ const djdt = { const handle = document.getElementById("djDebugToolbarHandle"); $$.show(handle); - // set handle position - let handleTop = localStorage.getItem("djdt.top"); - if (handleTop) { - handleTop = Math.min( - handleTop, - window.innerHeight - handle.offsetWidth - ); - handle.style.top = handleTop + "px"; - } - + djdt.ensure_handle_visibility(); + window.addEventListener("resize", djdt.ensure_handle_visibility); document.removeEventListener("keydown", onKeyDown); localStorage.setItem("djdt.show", "false"); @@ -249,6 +251,7 @@ const djdt = { $$.hide(document.getElementById("djDebugToolbarHandle")); $$.show(document.getElementById("djDebugToolbar")); localStorage.setItem("djdt.show", "true"); + window.removeEventListener("resize", djdt.ensure_handle_visibility); }, cookie: { get(key) { diff --git a/docs/changes.rst b/docs/changes.rst index 435574265..e66c5fd52 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,6 +4,8 @@ Change log Next version ------------ +* Ensured that the handle stays within bounds when resizing the window. + 3.2.1 (2021-04-14) ------------------ From 7d4c5300a58c0afd81e6be947122e72a0c1a6ab0 Mon Sep 17 00:00:00 2001 From: Sam <3115209+saemideluxe@users.noreply.github.com> Date: Fri, 4 Jun 2021 16:37:36 +0700 Subject: [PATCH 14/28] Fixes #1239 This is just PoC. I wouldn't know how to test this properly. --- debug_toolbar/panels/sql/tracking.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index 75366802c..3dcaa9863 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -55,6 +55,10 @@ def cursor(*args, **kwargs): ) def chunked_cursor(*args, **kwargs): + # prevent double wrapping + # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 + if hasattr(connection._djdt_cursor, "__wrapped__"): + return connection._djdt_cursor(*args, **kwargs) return state.Wrapper( connection._djdt_chunked_cursor(*args, **kwargs), connection, panel ) From d0f7cfab5e0077c0eba81944f00a7c13dd452f33 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 7 Jun 2021 11:57:50 +0700 Subject: [PATCH 15/28] fix: failing postgresql tests --- debug_toolbar/panels/sql/tracking.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index 3dcaa9863..3be525118 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -57,11 +57,10 @@ def cursor(*args, **kwargs): def chunked_cursor(*args, **kwargs): # prevent double wrapping # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 - if hasattr(connection._djdt_cursor, "__wrapped__"): - return connection._djdt_cursor(*args, **kwargs) - return state.Wrapper( - connection._djdt_chunked_cursor(*args, **kwargs), connection, panel - ) + cursor = connection._djdt_chunked_cursor(*args, **kwargs) + if not isinstance(cursor, NormalCursorWrapper): + return state.Wrapper(cursor, connection, panel) + return cursor connection.cursor = cursor connection.chunked_cursor = chunked_cursor From 7e2c161badf2b2c34ae2991aeaca977231e8e75c Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 10 Jun 2021 15:44:40 +0700 Subject: [PATCH 16/28] fix: make sure to check against correct wrapper class --- debug_toolbar/panels/sql/tracking.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index 3be525118..e7da994d9 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -58,7 +58,7 @@ def chunked_cursor(*args, **kwargs): # prevent double wrapping # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 cursor = connection._djdt_chunked_cursor(*args, **kwargs) - if not isinstance(cursor, NormalCursorWrapper): + if not isinstance(cursor, state.Wrapper): return state.Wrapper(cursor, connection, panel) return cursor From eee102e0319a87d7d0c527f0224d62f34fae66ef Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 21 Jun 2021 19:06:37 +0100 Subject: [PATCH 17/28] Extract common base cursor wrapper class --- debug_toolbar/panels/sql/tracking.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/debug_toolbar/panels/sql/tracking.py b/debug_toolbar/panels/sql/tracking.py index e7da994d9..2ed691344 100644 --- a/debug_toolbar/panels/sql/tracking.py +++ b/debug_toolbar/panels/sql/tracking.py @@ -58,7 +58,7 @@ def chunked_cursor(*args, **kwargs): # prevent double wrapping # solves https://github.com/jazzband/django-debug-toolbar/issues/1239 cursor = connection._djdt_chunked_cursor(*args, **kwargs) - if not isinstance(cursor, state.Wrapper): + if not isinstance(cursor, BaseCursorWrapper): return state.Wrapper(cursor, connection, panel) return cursor @@ -74,7 +74,11 @@ def unwrap_cursor(connection): del connection.chunked_cursor -class ExceptionCursorWrapper: +class BaseCursorWrapper: + pass + + +class ExceptionCursorWrapper(BaseCursorWrapper): """ Wraps a cursor and raises an exception on any operation. Used in Templates panel. @@ -87,7 +91,7 @@ def __getattr__(self, attr): raise SQLQueryTriggered() -class NormalCursorWrapper: +class NormalCursorWrapper(BaseCursorWrapper): """ Wraps a cursor and logs queries. """ From b6b0b4261b41c52b8a6b11f0bb2ca9a77fd686fa Mon Sep 17 00:00:00 2001 From: eriktelepovsky Date: Thu, 24 Jun 2021 11:19:53 +0200 Subject: [PATCH 18/28] updated Slovak translation --- .gitignore | 1 + debug_toolbar/locale/sk/LC_MESSAGES/django.mo | Bin 9378 -> 9981 bytes debug_toolbar/locale/sk/LC_MESSAGES/django.po | 149 ++++++++---------- 3 files changed, 66 insertions(+), 84 deletions(-) diff --git a/.gitignore b/.gitignore index 564e7b8cc..df5a2d10c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.pyc *.DS_Store *~ +.idea build .coverage dist diff --git a/debug_toolbar/locale/sk/LC_MESSAGES/django.mo b/debug_toolbar/locale/sk/LC_MESSAGES/django.mo index a26e3cc7b87414440c05389a4ee5fc54829deb76..4867b2a7ad1778a59fd7c6d105340ac599022fc6 100644 GIT binary patch delta 3639 zcmajhe{5Cd9mnzK_J{JLtk42&p|$5)DDB+sdM_2EwM9mOVXc5ger#AcZ7=28a&LEk zbX+D}5M&O+0v?$$K?OvOn$69+L=22lbIBZD!iArLyz?d_5Y8<~vZ%j1iZaj&zu%O78Dy+vr zT!#1J>)3$#lX8Y|3T4-t!0D79vE?IJZ%oE~hfFCKeu?ApiuGgU$C%F;bCa-6L)}-2 z6R;K;vkBtOI1l+TZTz|wJFyUla48O>o;!_2^lyGlMh%=p-S}%%Ll$0GVS7szNvAK)DP8>*oyT4z;F z4XS}g%yxtt@FIJCsV#S*?pue9(YUCU9YTK0UVi1{Vbs<24J=8$nM0I=? z)!}>AUtxgq?@4eDPY-0T#>_i>LD5{@Bcso9mA)^O>ftty0 zkY~*m)a&>uYUGtub4wP$TFUeB1?)zxVBxgf^$DnfPDMReg<63IR6nh@yacs%nbl;p zSDWmG0i;i}9o6tRQ4M;i29BVX?gVOUUbENVu-AWR%RfQg_jA-hE}~}s7yO6Mn1AE5 zdjGGM<=)GuSg#h{i084g!kDA@5$?jnGmPoS=`(Yucc=9r>ceu}mQUhb%I}~i@+oS9 zr7Wk)x1a_R!a}|O3$qzxmY_~$2kL?QQG2@yHS>Pte3=+(FL$F>-~=APmr*mmg9D-& zFGW4K*18eZUO%dzD2~(nzm1IcVmE#n51`J#WmE(ILOob;ORhW-`zV*98rp{H_+bp< zLDZiA2sP99un{ky23%a7yMG#H)Ibdx89;S3AK4YtX6x6W9^8a#aI?LhKrQKGsDVC< zY^!+@b!JYZ+I!nxe;0Mg&)ND*)vUiByh23-euO%7HBN4+>rgAvjP2NoYT$9K!Q-gC ze;d`#Z&6!!2{qt9V;+8t8qihLMDzT)>qY)dZmCMB(4P4*dpJ<z%^S=3gXLv{QITmBF=&`&ZpGmaC*`7x!)K{t)48FipW-i4cS z19spj?!{u3A%;(&4rjqE{v_jc)N|d)C&Kh&Ek0zgKZm?nCi4LqjjV9CF}Gncp1>9? zz>BEsmryJ5CsarOv`(T`4YV3nKL@n}3s8r0Icg==TDPE9Dvb;t&=TRO05q-FmSWVoR7E#bPD1C|O&gS$F2>Z_tWIM2R+0h1U zVGcGE8qhG2M+^{m5p~41w9IC-b-b-6MC>A>gwp4T1kt7fX-^K*LI2rf^4~2ODL@;zE0>6tss;(5q-+ov>d}WAHhMJUw|8kJ8l2AI``dPOljj- zP43UB&PNOJC~*(5gQzC<5}zfO5=uI7O7{~@gbpk(%2=93ZfLB;>#g}WQnBrZ%9Z4U z#Mf+H%6dC;#<*ARNW^(x*?=m39#_`GJ*N$BMF z5RVW`2z^%5L?O{jDBVHK&*rYL+h)pJ377cl$kvH}%`Xb~r23uJvDjdb8z1Q|ek|Yf zmsX5iE_pw%CU9SPIFg9OqJefd8E$q$jiF$mab6(QbsC-8S|_Sp&{;^SnZkcxYHM{uxts26b(**-IChg?&o6XB&CcBV zmI>>M zf5}OVzS$Ftr@f~uW_w2~R{7H2nTiUZtKTCe#S1xAM73?KdvJcdqh$(HbWiccTe+pf?g3IaRePzoRSZCL_HA zqo?g?%(aTK;a#uU60E>h=tdjzq8L%wq0f4$fQ0a+ku{n)LsxQNts9ZmrJy4;3lL-T(jq delta 3278 zcmZ|Rd2EzL7{~Ex3qmQ-QjT7>tn1ESBr9U^CFdUCtPayxy2mCyOpII-Wp8FbmVLLKsa~pf$9qfzua42@C z(H+xq5@w;^Yrx)&Z?;iU2QQ%>+=uGuRogy-N=7rXSaTAUi8C05*HF)Qpx*z}wjbh5 z+C3tJ?=Qe~+AERdnB5r8_~rnWG<+S^!RPjYi>QIWLk;i)YNEf``@h-t1JrY&%!V;d z1S+HPs0n8A6NckZTT+A?XFdk>;!-L~>1x!>s!#)Nw(dYT?H5rK_z;zev#964#2owv zmD+GdiN*oQ+)Ntky^*MK#@P0xe&k;>n`Up!vMxr=umrWDGNf;_$==_C>exX|^q6hG zjatwd)O)R{_r5}n^CNOB%q`T!@AV`9s)R9J8D&jGbvzu^p%-=P3+(;Hs6)91^;{*c z!v=I=JL>Q~MD;tA{qSKn>iJUC0xAPkc*bl+eSS@-8NZ84)mco%FR&T!qEh+FfZ+W@ zs0qG_dhY~k<)5Gix@6mJs4e>mwM8BFdf+}4`ZN&(gB>TMI!r-z;6|m)huV@Ndw+_( zKi9UGpq?v1O=JUV<=gSw5My4(jkL>RjLF68$e9Y5fwAl#7mBbEZ=xSp#05W}Pm%31 zk?}!?p#G5L+V)gbhs#h4X+o{=xNV<1p&QX4Hz_ zLEZltmD($)3EoDw({!L#)FUa_VHE0q4C-_z+w0l(`UuS8`dHKu|q1)DTvH_RCH;S%J-F-@omy@i>0 z3XkJ8)D{GGkzYNq7nOnisDX}H-$PBX)wVC7R^E;}Tz60zxNq%~63kE%YJx*i8OTIs zdIYM!S;)8nvyh5Tqu;s?wKvtMt=NJZa36-ChZspbPs}B{3b#8mp|ma{!ib%ON*VD2 zp)FKdN@!a*>HFVJWh^nDAS<0|AB|l_tI(clTU2HRF}tjSV_=@P?Lu5mloC(cYq`i! zou93}WU5rr#pmpm8q6b<9+fS`1Va0&LWYe?70QSpW*R<2tRSWm+X-#wbYc!MlTa2{ z5-J;s3PM|~Z3(RAN8h-L4oo?r?NE6(h$%uHDwS<+XW5i~nt29!XL8KD;p1aCqDmo)i5IU6g zgqzTT4kapyg~S-5t9Yq2DF4~^$|QV>(C1c1sMH4O{N2EBF_A^+fa(vA%3`7$v49vt zbQOIS%ZQ1@R$@JoMl2yz9@URt+|hD6;`gwY_apa&wJhp?D|C9XyQsF*Utd;T<(}xT zFU@y(Jvn)9PoCTBb9r;}ecnuu*W>9mdzO1{X=7R4e?FHpI^UO@>G8Cb3>qAgom=3l zsc5M6R}`jK6&B`XxW>6Wu6$Q|)!0I>D>c~iN) ztUI*2(TRwg=<8kjjsAye^s5oyrir&zoj;LPM8xpti;(rtk~(6ve)M~ j=a2YTRh(<7@|&X4x_ZB>+;#qq;FZ$, 2012 # Juraj Bubniak , 2013 @@ -11,23 +11,22 @@ msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" -"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"PO-Revision-Date: 2021-06-24 11:19+0200\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" +"X-Generator: Poedit 2.4.2\n" #: apps.py:11 msgid "Debug Toolbar" -msgstr "" +msgstr "Debug Toolbar" #: views.py:14 -msgid "" -"Data for this panel isn't available anymore. Please reload the page and " -"retry." +msgid "Data for this panel isn't available anymore. Please reload the page and retry." msgstr "Dáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova." #: panels/cache.py:191 @@ -39,8 +38,9 @@ msgstr "Cache" msgid "%(cache_calls)d call in %(time).2fms" msgid_plural "%(cache_calls)d calls in %(time).2fms" msgstr[0] "%(cache_calls)d volanie za %(time).2fms" -msgstr[1] "%(cache_calls)d volaní za %(time).2fms" +msgstr[1] "%(cache_calls)d volania za %(time).2fms" msgstr[2] "%(cache_calls)d volaní za %(time).2fms" +msgstr[3] "%(cache_calls)d volaní za %(time).2fms" #: panels/cache.py:204 #, python-format @@ -48,7 +48,8 @@ msgid "Cache calls from %(count)d backend" msgid_plural "Cache calls from %(count)d backends" msgstr[0] "Cache volania z %(count)d backendu" msgstr[1] "Cache volania z %(count)d backendov" -msgstr[2] "Cache volania z %(count)d backendov" +msgstr[2] "Cache volania z %(count)d backendu" +msgstr[3] "Cache volania z %(count)d backendov" #: panels/headers.py:35 msgid "Headers" @@ -63,8 +64,9 @@ msgstr "Zápis" msgid "%(count)s message" msgid_plural "%(count)s messages" msgstr[0] "%(count)s správa" -msgstr[1] "%(count)s správ" -msgstr[2] "%(count)s správ" +msgstr[1] "%(count)s správy" +msgstr[2] "%(count)s správy" +msgstr[3] "%(count)s správ" #: panels/logging.py:73 msgid "Log messages" @@ -104,16 +106,18 @@ msgstr "Nastavenia z %s" msgid "%(num_receivers)d receiver of 1 signal" msgid_plural "%(num_receivers)d receivers of 1 signal" msgstr[0] "%(num_receivers)d príjemca 1 signálu" -msgstr[1] "%(num_receivers)d príjemcov 1 signálu" +msgstr[1] "%(num_receivers)d príjemcovia 1 signálu" msgstr[2] "%(num_receivers)d príjemcov 1 signálu" +msgstr[3] "%(num_receivers)d príjemcov 1 signálu" #: panels/signals.py:48 #, python-format msgid "%(num_receivers)d receiver of %(num_signals)d signals" msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" -msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálov" +msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálu" msgstr[1] "%(num_receivers)d príjemcov %(num_signals)d signálov" -msgstr[2] "%(num_receivers)d príjemcov %(num_signals)d signálov" +msgstr[2] "%(num_receivers)d príjemcu %(num_signals)d signálu" +msgstr[3] "%(num_receivers)d príjemcov %(num_signals)d signálov" #: panels/signals.py:53 msgid "Signals" @@ -133,8 +137,9 @@ msgstr "Statické súbory" msgid "%(num_used)s file used" msgid_plural "%(num_used)s files used" msgstr[0] "%(num_used)s použitý súbor" -msgstr[1] "%(num_used)s použitých súborov" +msgstr[1] "%(num_used)s použité súbory" msgstr[2] "%(num_used)s použitých súborov" +msgstr[3] "%(num_used)s použitých súborov" #: panels/timer.py:23 #, python-format @@ -146,10 +151,8 @@ msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" msgid "Total: %0.2fms" msgstr "Celkovo: %0.2fms" -#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 -#: templates/debug_toolbar/panels/sql_explain.html:11 -#: templates/debug_toolbar/panels/sql_profile.html:12 -#: templates/debug_toolbar/panels/sql_select.html:11 +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 templates/debug_toolbar/panels/sql_select.html:11 msgid "Time" msgstr "Čas" @@ -232,7 +235,7 @@ msgstr "Akcia" #: panels/sql/panel.py:39 msgid "In transaction" -msgstr "Stav transakcie:" +msgstr "V transakcii" #: panels/sql/panel.py:40 msgid "In error" @@ -285,9 +288,8 @@ msgstr "Poloha:" #: templates/debug_toolbar/redirect.html:10 msgid "" -"The Django Debug Toolbar has intercepted a redirect to the above URL for " -"debug viewing purposes. You can click the above link to continue with the " -"redirect as normal." +"The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect " +"as normal." msgstr "Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." #: templates/debug_toolbar/panels/cache.html:2 @@ -318,8 +320,7 @@ msgstr "Príkazy" msgid "Calls" msgstr "Volania" -#: templates/debug_toolbar/panels/cache.html:43 -#: templates/debug_toolbar/panels/sql.html:20 +#: templates/debug_toolbar/panels/cache.html:43 templates/debug_toolbar/panels/sql.html:20 msgid "Time (ms)" msgstr "Čas (ms)" @@ -327,13 +328,11 @@ msgstr "Čas (ms)" msgid "Type" msgstr "Typ" -#: templates/debug_toolbar/panels/cache.html:45 -#: templates/debug_toolbar/panels/request.html:8 +#: templates/debug_toolbar/panels/cache.html:45 templates/debug_toolbar/panels/request.html:8 msgid "Arguments" msgstr "Argumenty" -#: templates/debug_toolbar/panels/cache.html:46 -#: templates/debug_toolbar/panels/request.html:9 +#: templates/debug_toolbar/panels/cache.html:46 templates/debug_toolbar/panels/request.html:9 msgid "Keyword arguments" msgstr "Kľúčové argumenty" @@ -345,21 +344,13 @@ msgstr "Backend" msgid "Request headers" msgstr "Hlavičky požiadavky" -#: templates/debug_toolbar/panels/headers.html:8 -#: templates/debug_toolbar/panels/headers.html:27 -#: templates/debug_toolbar/panels/headers.html:48 +#: templates/debug_toolbar/panels/headers.html:8 templates/debug_toolbar/panels/headers.html:27 templates/debug_toolbar/panels/headers.html:48 msgid "Key" msgstr "Kľúč" -#: templates/debug_toolbar/panels/headers.html:9 -#: templates/debug_toolbar/panels/headers.html:28 -#: templates/debug_toolbar/panels/headers.html:49 -#: templates/debug_toolbar/panels/request.html:33 -#: templates/debug_toolbar/panels/request.html:59 -#: templates/debug_toolbar/panels/request.html:85 -#: templates/debug_toolbar/panels/request.html:110 -#: templates/debug_toolbar/panels/settings.html:6 -#: templates/debug_toolbar/panels/timer.html:11 +#: templates/debug_toolbar/panels/headers.html:9 templates/debug_toolbar/panels/headers.html:28 templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 templates/debug_toolbar/panels/request.html:59 templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 templates/debug_toolbar/panels/settings.html:6 templates/debug_toolbar/panels/timer.html:11 msgid "Value" msgstr "Hodnota" @@ -372,9 +363,7 @@ msgid "WSGI environ" msgstr "WSGI prostredie" #: templates/debug_toolbar/panels/headers.html:43 -msgid "" -"Since the WSGI environ inherits the environment of the server, only a " -"significant subset is shown below." +msgid "Since the WSGI environ inherits the environment of the server, only a significant subset is shown below." msgstr "Keďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina." #: templates/debug_toolbar/panels/logging.html:6 @@ -389,8 +378,7 @@ msgstr "Kanál" msgid "Message" msgstr "Správa" -#: templates/debug_toolbar/panels/logging.html:10 -#: templates/debug_toolbar/panels/staticfiles.html:45 +#: templates/debug_toolbar/panels/logging.html:10 templates/debug_toolbar/panels/staticfiles.html:45 msgid "Location" msgstr "Poloha" @@ -406,8 +394,7 @@ msgstr "Volanie" msgid "CumTime" msgstr "CumTime" -#: templates/debug_toolbar/panels/profiling.html:7 -#: templates/debug_toolbar/panels/profiling.html:9 +#: templates/debug_toolbar/panels/profiling.html:7 templates/debug_toolbar/panels/profiling.html:9 msgid "Per" msgstr "Za" @@ -435,9 +422,7 @@ msgstr "URL meno" msgid "Cookies" msgstr "Cookies" -#: templates/debug_toolbar/panels/request.html:32 -#: templates/debug_toolbar/panels/request.html:58 -#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:32 templates/debug_toolbar/panels/request.html:58 templates/debug_toolbar/panels/request.html:84 #: templates/debug_toolbar/panels/request.html:109 msgid "Variable" msgstr "Premenná" @@ -491,15 +476,15 @@ msgstr "Príjemcovia" msgid "%(num)s query" msgid_plural "%(num)s queries" msgstr[0] "%(num)s dopyt" -msgstr[1] "%(num)s dopytov" -msgstr[2] "%(num)s dopytov" +msgstr[1] "%(num)s dopyty" +msgstr[2] "%(num)s dopytu" +msgstr[3] "%(num)s dopytov" #: templates/debug_toolbar/panels/sql.html:18 msgid "Query" msgstr "Dopyt" -#: templates/debug_toolbar/panels/sql.html:19 -#: templates/debug_toolbar/panels/timer.html:36 +#: templates/debug_toolbar/panels/sql.html:19 templates/debug_toolbar/panels/timer.html:36 msgid "Timeline" msgstr "Časová os" @@ -527,9 +512,7 @@ msgstr "(neznámy)" msgid "No SQL queries were recorded during this request." msgstr "V priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty." -#: templates/debug_toolbar/panels/sql_explain.html:3 -#: templates/debug_toolbar/panels/sql_profile.html:3 -#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/sql_explain.html:3 templates/debug_toolbar/panels/sql_profile.html:3 templates/debug_toolbar/panels/sql_select.html:3 #: templates/debug_toolbar/panels/template_source.html:3 msgid "Back" msgstr "Späť" @@ -538,15 +521,11 @@ msgstr "Späť" msgid "SQL explained" msgstr "SQL vysvetlené" -#: templates/debug_toolbar/panels/sql_explain.html:9 -#: templates/debug_toolbar/panels/sql_profile.html:10 -#: templates/debug_toolbar/panels/sql_select.html:9 +#: templates/debug_toolbar/panels/sql_explain.html:9 templates/debug_toolbar/panels/sql_profile.html:10 templates/debug_toolbar/panels/sql_select.html:9 msgid "Executed SQL" msgstr "Vykonané SQL" -#: templates/debug_toolbar/panels/sql_explain.html:13 -#: templates/debug_toolbar/panels/sql_profile.html:14 -#: templates/debug_toolbar/panels/sql_select.html:13 +#: templates/debug_toolbar/panels/sql_explain.html:13 templates/debug_toolbar/panels/sql_profile.html:14 templates/debug_toolbar/panels/sql_select.html:13 msgid "Database" msgstr "Databáza" @@ -572,18 +551,15 @@ msgid_plural "Static file paths" msgstr[0] "Cesta k statickému súboru" msgstr[1] "Cesty k statickým súborom" msgstr[2] "Cesty k statickým súborom" +msgstr[3] "Ciest k statickým súborom" #: templates/debug_toolbar/panels/staticfiles.html:8 #, python-format msgid "(prefix %(prefix)s)" msgstr "(prefix %(prefix)s)" -#: templates/debug_toolbar/panels/staticfiles.html:12 -#: templates/debug_toolbar/panels/staticfiles.html:23 -#: templates/debug_toolbar/panels/staticfiles.html:35 -#: templates/debug_toolbar/panels/templates.html:10 -#: templates/debug_toolbar/panels/templates.html:28 -#: templates/debug_toolbar/panels/templates.html:43 +#: templates/debug_toolbar/panels/staticfiles.html:12 templates/debug_toolbar/panels/staticfiles.html:23 templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 templates/debug_toolbar/panels/templates.html:28 templates/debug_toolbar/panels/templates.html:43 msgid "None" msgstr "Žiadny" @@ -593,21 +569,24 @@ msgid_plural "Static file apps" msgstr[0] "Aplikácia pre statické súbory" msgstr[1] "Aplikácie pre statické súbory" msgstr[2] "Aplikácie pre statické súbory" +msgstr[3] "Aplikácií pre statické súbory" #: templates/debug_toolbar/panels/staticfiles.html:26 msgid "Static file" msgid_plural "Static files" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "Statické súbory" +msgstr[0] "Statický súbor" +msgstr[1] "Statické súbory" +msgstr[2] "Statického súbora" +msgstr[3] "Statických súborov" #: templates/debug_toolbar/panels/staticfiles.html:40 #, python-format msgid "%(payload_count)s file" msgid_plural "%(payload_count)s files" msgstr[0] "%(payload_count)s súbor" -msgstr[1] "%(payload_count)s súborov" -msgstr[2] "%(payload_count)s súborov" +msgstr[1] "%(payload_count)s súbory" +msgstr[2] "%(payload_count)s súbora" +msgstr[3] "%(payload_count)s súborov" #: templates/debug_toolbar/panels/staticfiles.html:44 msgid "Path" @@ -621,18 +600,19 @@ msgstr "Zdrojový kód šablóny:" msgid "Template path" msgid_plural "Template paths" msgstr[0] "Cesta k šablóne" -msgstr[1] "Cesta k šablóne" -msgstr[2] "Cesta k šablóne" +msgstr[1] "Cesty k šablóne" +msgstr[2] "Cesty k šablóne" +msgstr[3] "Ciest k šablóne" #: templates/debug_toolbar/panels/templates.html:13 msgid "Template" msgid_plural "Templates" msgstr[0] "Šablóna" -msgstr[1] "Šablóna" -msgstr[2] "Šablóna" +msgstr[1] "Šablóny" +msgstr[2] "Šablóny" +msgstr[3] "Šablón" -#: templates/debug_toolbar/panels/templates.html:21 -#: templates/debug_toolbar/panels/templates.html:37 +#: templates/debug_toolbar/panels/templates.html:21 templates/debug_toolbar/panels/templates.html:37 msgid "Toggle context" msgstr "Prepnúť kontext" @@ -640,8 +620,9 @@ msgstr "Prepnúť kontext" msgid "Context processor" msgid_plural "Context processors" msgstr[0] "Spracovateľ kontextu" -msgstr[1] "Spracovateľ kontextu" -msgstr[2] "Spracovateľ kontextu" +msgstr[1] "Spracovatelia kontextu" +msgstr[2] "Spracovateľa kontextu" +msgstr[3] "Spracovateľov kontextu" #: templates/debug_toolbar/panels/timer.html:2 msgid "Resource usage" From 0e1954ff56bffc7cecb55e6087fef665b63917fc Mon Sep 17 00:00:00 2001 From: eriktelepovsky Date: Thu, 24 Jun 2021 13:38:09 +0200 Subject: [PATCH 19/28] updated Slovak translation --- debug_toolbar/locale/sk/LC_MESSAGES/django.mo | Bin 9981 -> 9984 bytes debug_toolbar/locale/sk/LC_MESSAGES/django.po | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debug_toolbar/locale/sk/LC_MESSAGES/django.mo b/debug_toolbar/locale/sk/LC_MESSAGES/django.mo index 4867b2a7ad1778a59fd7c6d105340ac599022fc6..e6af7c505db1c78cd74bdc52f0d032c66dda9ff9 100644 GIT binary patch delta 999 zcmXZaOGs2v9LMoP&C4ktO*(1#NV8cegfWPq6(~yh8eB!`qK7?j0woDID%ZuhaG?Yh zZKHfZFd$qaTq%f#3&Dj8ah0@i7NVvL5$y5(anI^=9{2qJ|MNfhPv=--{>_6 z#$;gv!}tIL*o#3-;w2o!3QVCN=Wr6!n2il3#^hlu>Rh+=DJotPmFG1o?{JB6%moH1 z7JBe4MsN=m;2-K>u+*F9;4|h?RG?v0;&Hr%?=S~f@FH$v4ep={j+A-d7oyI`${cS{ z!-5jk;}vYQA3Q`I>_r9av-?AMnfVl|(9c+aUr{$(Ld9FN`x}_ce9Nw9?D~Pj;3gX< z=)>4GuhrG4PTav}>_P?jfY)&bqqv4D;3w+oGN^)&@f@C_3OYmG*kA7L=b}306fn@6 zRibWKi-p*PdYT^8&0gC1C@S#;s=!Zp9$i#{-%;^?pb~7M67SmiZ&acBk&yRi!2e^S zcopNQ8zoSc-^UmD2-|TLQy8HQ1Nag3a|SDoxrarlb5AfIlNdwC?$2To^L@-BzX{zi zrkaHaPUBtl;V)F>8B`~ZP>KFp^N6ZKD^TlIs1Dpl{gfT3PIOyep*l5!DsT+L%?u_O zsO9fb0n@0&-!OoS)>YIKt)re~82_QmVtb?)Qnu0QZ*IX%?>+-)m%!~X%U C*=8C5 delta 996 zcmXZaPe@cz6vy$4zR_`X9CLE|gEs0^3XwQ%{0Fr$BZg@s{sBct5+^shXrrP$jc^l! zhFb|#2wX|yMyO4Oi@=2oaaFW%5J{~?2$F)|AMdU{_s_fMoO|w@esP&xzi?ciG3IHx zF$I{w0Cr#=rZ6AVcnwFf8fQ@FR&fs3Fo=y6#*|Rgw#9~Cc+$}@s~9IG&{DP%Ci zLJ!ViDITE$T%Zm*cf5Ha4l)m;0*#>(zri@pV=;ckBHYD#{D~?!6!pF@L!FOBU2pJ^ z1tn_08~E6M(1|*jLIoVM`>!#~{2i*$4_JmDQ8)X7innd|cQC|!&#q_f`mxKPj*Wll zV64(>buFqB&De@bRDkyw!)1)%HmZOhsHe-K3jT{Zc!nzI9ChQIDsR6C)hV}>f!?eN zb;Cz^6Q7`-rWS z)ba&Xz%^9jPnd_Fty`!k`i^>%eN@7e%%*=O=){}jO_@~W(3ksicp#H3&jhXj6P#nO diff --git a/debug_toolbar/locale/sk/LC_MESSAGES/django.po b/debug_toolbar/locale/sk/LC_MESSAGES/django.po index f3706ae05..ef6657953 100644 --- a/debug_toolbar/locale/sk/LC_MESSAGES/django.po +++ b/debug_toolbar/locale/sk/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Django Debug Toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-04-25 21:52+0200\n" -"PO-Revision-Date: 2021-06-24 11:19+0200\n" +"PO-Revision-Date: 2021-06-24 13:37+0200\n" "Last-Translator: Aymeric Augustin \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/)\n" "MIME-Version: 1.0\n" @@ -231,7 +231,7 @@ msgstr "Nečinný" #: panels/sql/panel.py:38 msgid "Active" -msgstr "Akcia" +msgstr "Aktívne" #: panels/sql/panel.py:39 msgid "In transaction" From 538c4f68136b3bafa2dca562a1f02649ce07e35b Mon Sep 17 00:00:00 2001 From: Ashwini Chaudhary Date: Sun, 11 Jul 2021 18:45:22 +0530 Subject: [PATCH 20/28] Fixes and improvements to history views - Allow refreshing while requests are still happening by using a list of dict.items() - Fixed issue with `history_refresh`, it now returns SignedDataForm to allow Switch requests to work after refresh. - Clean up old rows in FE from that have now expired when refresh happens. - Fixed `history_sidebar` view to not raise 500 error when no toolbar is found for an expired `store_id`. - Old rows that have now expired, display [EXPIRED] next to the Switch text. --- debug_toolbar/panels/history/views.py | 10 ++- .../static/debug_toolbar/js/history.js | 46 +++++++----- tests/panels/test_history.py | 73 +++++++++++++++---- 3 files changed, 94 insertions(+), 35 deletions(-) diff --git a/debug_toolbar/panels/history/views.py b/debug_toolbar/panels/history/views.py index b4cf8c835..20f4572fe 100644 --- a/debug_toolbar/panels/history/views.py +++ b/debug_toolbar/panels/history/views.py @@ -2,6 +2,7 @@ from django.template.loader import render_to_string from debug_toolbar.decorators import require_show_toolbar, signed_data_view +from debug_toolbar.forms import SignedDataForm from debug_toolbar.panels.history.forms import HistoryStoreForm from debug_toolbar.toolbar import DebugToolbar @@ -16,6 +17,10 @@ def history_sidebar(request, verified_data): store_id = form.cleaned_data["store_id"] toolbar = DebugToolbar.fetch(store_id) context = {} + if toolbar is None: + # When the store_id has been popped already due to + # RESULTS_CACHE_SIZE + return JsonResponse(context) for panel in toolbar.panels: if not panel.is_historical: continue @@ -40,7 +45,8 @@ def history_refresh(request, verified_data): if form.is_valid(): requests = [] - for id, toolbar in reversed(DebugToolbar._store.items()): + # Convert to list to handle mutations happenening in parallel + for id, toolbar in list(DebugToolbar._store.items())[::-1]: requests.append( { "id": id, @@ -50,7 +56,7 @@ def history_refresh(request, verified_data): "id": id, "store_context": { "toolbar": toolbar, - "form": HistoryStoreForm(initial={"store_id": id}), + "form": SignedDataForm(initial={"store_id": id}), }, }, ), diff --git a/debug_toolbar/static/debug_toolbar/js/history.js b/debug_toolbar/static/debug_toolbar/js/history.js index e20c85438..4f0c20b80 100644 --- a/debug_toolbar/static/debug_toolbar/js/history.js +++ b/debug_toolbar/static/debug_toolbar/js/history.js @@ -7,21 +7,31 @@ $$.on(djDebug, "click", ".switchHistory", function (event) { const newStoreId = this.dataset.storeId; const tbody = this.closest("tbody"); - tbody - .querySelector(".djdt-highlighted") - .classList.remove("djdt-highlighted"); - this.closest("tr").classList.add("djdt-highlighted"); + const highlighted = tbody.querySelector(".djdt-highlighted"); + if (highlighted) { + highlighted.classList.remove("djdt-highlighted"); + this.closest("tr").classList.add("djdt-highlighted"); + } ajaxForm(this).then(function (data) { djDebug.setAttribute("data-store-id", newStoreId); - Object.keys(data).forEach(function (panelId) { - const panel = document.getElementById(panelId); - if (panel) { - panel.outerHTML = data[panelId].content; - document.getElementById("djdt-" + panelId).outerHTML = - data[panelId].button; - } - }); + console.log("New id is" + newStoreId); + // Check if response is empty, it could be due to an expired store_id. + if (Object.keys(data).length === 0) { + const container = document.getElementById("djdtHistoryRequests"); + container.querySelector( + 'button[data-store-id="' + newStoreId + '"]' + ).innerHTML = "Switch [EXPIRED]"; + } else { + Object.keys(data).forEach(function (panelId) { + const panel = document.getElementById(panelId); + if (panel) { + panel.outerHTML = data[panelId].content; + document.getElementById("djdt-" + panelId).outerHTML = + data[panelId].button; + } + }); + } }); }); @@ -29,12 +39,14 @@ $$.on(djDebug, "click", ".refreshHistory", function (event) { event.preventDefault(); const container = document.getElementById("djdtHistoryRequests"); ajaxForm(this).then(function (data) { + // Remove existing rows first then re-populate with new data + container + .querySelectorAll("tr[data-store-id]") + .forEach(function (node) { + node.remove(); + }); data.requests.forEach(function (request) { - if ( - !container.querySelector('[data-store-id="' + request.id + '"]') - ) { - container.innerHTML = request.content + container.innerHTML; - } + container.innerHTML = request.content + container.innerHTML; }); }); }); diff --git a/tests/panels/test_history.py b/tests/panels/test_history.py index 03657a374..49e3bd0fa 100644 --- a/tests/panels/test_history.py +++ b/tests/panels/test_history.py @@ -1,3 +1,5 @@ +import html + from django.test import RequestFactory, override_settings from django.urls import resolve, reverse @@ -64,6 +66,21 @@ def test_urls(self): @override_settings(DEBUG=True) class HistoryViewsTestCase(IntegrationTestCase): + PANEL_KEYS = { + "VersionsPanel", + "TimerPanel", + "SettingsPanel", + "HeadersPanel", + "RequestPanel", + "SQLPanel", + "StaticFilesPanel", + "TemplatesPanel", + "CachePanel", + "SignalsPanel", + "LoggingPanel", + "ProfilingPanel", + } + def test_history_panel_integration_content(self): """Verify the history panel's content renders properly..""" self.assertEqual(len(DebugToolbar._store), 0) @@ -88,26 +105,45 @@ def test_history_sidebar_invalid(self): def test_history_sidebar(self): """Validate the history sidebar view.""" self.client.get("/json_view/") - store_id = list(DebugToolbar._store.keys())[0] + store_id = list(DebugToolbar._store)[0] + data = {"signed": SignedDataForm.sign({"store_id": store_id})} + response = self.client.get(reverse("djdt:history_sidebar"), data=data) + self.assertEqual(response.status_code, 200) + self.assertEqual( + set(response.json()), + self.PANEL_KEYS, + ) + + @override_settings( + DEBUG_TOOLBAR_CONFIG={"RESULTS_CACHE_SIZE": 1, "RENDER_PANELS": False} + ) + def test_history_sidebar_expired_store_id(self): + """Validate the history sidebar view.""" + self.client.get("/json_view/") + store_id = list(DebugToolbar._store)[0] + data = {"signed": SignedDataForm.sign({"store_id": store_id})} + response = self.client.get(reverse("djdt:history_sidebar"), data=data) + self.assertEqual(response.status_code, 200) + self.assertEqual( + set(response.json()), + self.PANEL_KEYS, + ) + self.client.get("/json_view/") + + # Querying old store_id should return in empty response data = {"signed": SignedDataForm.sign({"store_id": store_id})} response = self.client.get(reverse("djdt:history_sidebar"), data=data) self.assertEqual(response.status_code, 200) + self.assertEqual(response.json(), {}) + + # Querying with latest store_id + latest_store_id = list(DebugToolbar._store)[0] + data = {"signed": SignedDataForm.sign({"store_id": latest_store_id})} + response = self.client.get(reverse("djdt:history_sidebar"), data=data) + self.assertEqual(response.status_code, 200) self.assertEqual( - set(response.json().keys()), - { - "VersionsPanel", - "TimerPanel", - "SettingsPanel", - "HeadersPanel", - "RequestPanel", - "SQLPanel", - "StaticFilesPanel", - "TemplatesPanel", - "CachePanel", - "SignalsPanel", - "LoggingPanel", - "ProfilingPanel", - }, + set(response.json()), + self.PANEL_KEYS, ) def test_history_refresh_invalid_signature(self): @@ -128,5 +164,10 @@ def test_history_refresh(self): self.assertEqual(response.status_code, 200) data = response.json() self.assertEqual(len(data["requests"]), 1) + + store_id = list(DebugToolbar._store)[0] + signature = SignedDataForm.sign({"store_id": store_id}) + self.assertIn(html.escape(signature), data["requests"][0]["content"]) + for val in ["foo", "bar"]: self.assertIn(val, data["requests"][0]["content"]) From 96b23eb155c1cd58c0e04ecea9e1aafc5bbac613 Mon Sep 17 00:00:00 2001 From: Ashwini Chaudhary Date: Sat, 17 Jul 2021 08:17:04 +0530 Subject: [PATCH 21/28] Remove console.log --- debug_toolbar/static/debug_toolbar/js/history.js | 1 - 1 file changed, 1 deletion(-) diff --git a/debug_toolbar/static/debug_toolbar/js/history.js b/debug_toolbar/static/debug_toolbar/js/history.js index 4f0c20b80..c53072093 100644 --- a/debug_toolbar/static/debug_toolbar/js/history.js +++ b/debug_toolbar/static/debug_toolbar/js/history.js @@ -15,7 +15,6 @@ $$.on(djDebug, "click", ".switchHistory", function (event) { ajaxForm(this).then(function (data) { djDebug.setAttribute("data-store-id", newStoreId); - console.log("New id is" + newStoreId); // Check if response is empty, it could be due to an expired store_id. if (Object.keys(data).length === 0) { const container = document.getElementById("djdtHistoryRequests"); From 78425e392d8344ff5d408e49b4c75e2bb21d292e Mon Sep 17 00:00:00 2001 From: Ashwini Chaudhary Date: Sat, 17 Jul 2021 19:29:32 +0530 Subject: [PATCH 22/28] Move the highlight class addition outside to allow it to be set in the first place --- debug_toolbar/static/debug_toolbar/js/history.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug_toolbar/static/debug_toolbar/js/history.js b/debug_toolbar/static/debug_toolbar/js/history.js index c53072093..cc14b2e4f 100644 --- a/debug_toolbar/static/debug_toolbar/js/history.js +++ b/debug_toolbar/static/debug_toolbar/js/history.js @@ -10,8 +10,8 @@ $$.on(djDebug, "click", ".switchHistory", function (event) { const highlighted = tbody.querySelector(".djdt-highlighted"); if (highlighted) { highlighted.classList.remove("djdt-highlighted"); - this.closest("tr").classList.add("djdt-highlighted"); } + this.closest("tr").classList.add("djdt-highlighted"); ajaxForm(this).then(function (data) { djDebug.setAttribute("data-store-id", newStoreId); From 8049478bf6b84a7b9c07d23152f13332c197ff57 Mon Sep 17 00:00:00 2001 From: Tim Schilling Date: Tue, 20 Jul 2021 11:34:18 -0500 Subject: [PATCH 23/28] Use both SignedDataForm and HistoryStoreForm in history_refresh. --- debug_toolbar/panels/history/views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/debug_toolbar/panels/history/views.py b/debug_toolbar/panels/history/views.py index 20f4572fe..10b4dcc1a 100644 --- a/debug_toolbar/panels/history/views.py +++ b/debug_toolbar/panels/history/views.py @@ -56,7 +56,11 @@ def history_refresh(request, verified_data): "id": id, "store_context": { "toolbar": toolbar, - "form": SignedDataForm(initial={"store_id": id}), + "form": SignedDataForm( + initial=HistoryStoreForm( + initial={"store_id": id} + ).initial + ), }, }, ), From 085f8dd12660036da2ecbb1217de48509e7bd3da Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 20 Jul 2021 21:42:53 +0100 Subject: [PATCH 24/28] Add test coverage to ensure that SQL tracker wrappers are applied only once to database cursors (#1478) --- tests/panels/test_sql.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py index 84b789868..08535a79e 100644 --- a/tests/panels/test_sql.py +++ b/tests/panels/test_sql.py @@ -1,6 +1,7 @@ import datetime import os import unittest +from unittest.mock import patch import django from django.contrib.auth.models import User @@ -10,6 +11,7 @@ from django.shortcuts import render from django.test.utils import override_settings +import debug_toolbar.panels.sql.tracking as sql_tracking from debug_toolbar import settings as dt_settings from ..base import BaseTestCase @@ -61,6 +63,20 @@ def test_recording_chunked_cursor(self): # ensure query was logged self.assertEqual(len(self.panel._queries), 1) + @patch("debug_toolbar.panels.sql.tracking.state", wraps=sql_tracking.state) + def test_cursor_wrapper_singleton(self, mock_state): + list(User.objects.all()) + + # ensure that cursor wrapping is applied only once + self.assertEqual(mock_state.Wrapper.call_count, 1) + + @patch("debug_toolbar.panels.sql.tracking.state", wraps=sql_tracking.state) + def test_chunked_cursor_wrapper_singleton(self, mock_state): + list(User.objects.all().iterator()) + + # ensure that cursor wrapping is applied only once + self.assertEqual(mock_state.Wrapper.call_count, 1) + def test_generate_server_timing(self): self.assertEqual(len(self.panel._queries), 0) From 15a581d5d0abbf82d9f62a3bfdc8ce39d45f0f1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Sacawa?= Date: Mon, 9 Aug 2021 21:06:46 -0400 Subject: [PATCH 25/28] Add: response status to HistoryPanel (#1490) * Add: response status to HistoryPanel * Doc: update docs/changes.rst --- debug_toolbar/panels/history/panel.py | 1 + debug_toolbar/templates/debug_toolbar/panels/history.html | 1 + debug_toolbar/templates/debug_toolbar/panels/history_tr.html | 3 +++ docs/changes.rst | 1 + 4 files changed, 6 insertions(+) diff --git a/debug_toolbar/panels/history/panel.py b/debug_toolbar/panels/history/panel.py index 0cc352e8b..541c59136 100644 --- a/debug_toolbar/panels/history/panel.py +++ b/debug_toolbar/panels/history/panel.py @@ -68,6 +68,7 @@ def generate_stats(self, request, response): { "request_url": request.get_full_path(), "request_method": request.method, + "status_code": response.status_code, "data": data, "time": timezone.now(), } diff --git a/debug_toolbar/templates/debug_toolbar/panels/history.html b/debug_toolbar/templates/debug_toolbar/panels/history.html index f5e967a17..84c6cb5bd 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/history.html +++ b/debug_toolbar/templates/debug_toolbar/panels/history.html @@ -10,6 +10,7 @@ {% trans "Method" %} {% trans "Path" %} {% trans "Request Variables" %} + {% trans "Status" %} {% trans "Action" %} diff --git a/debug_toolbar/templates/debug_toolbar/panels/history_tr.html b/debug_toolbar/templates/debug_toolbar/panels/history_tr.html index 9ce984396..31793472a 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/history_tr.html +++ b/debug_toolbar/templates/debug_toolbar/panels/history_tr.html @@ -38,6 +38,9 @@ + +

{{ store_context.toolbar.stats.HistoryPanel.status_code|escape }}

+
{{ store_context.form }} diff --git a/docs/changes.rst b/docs/changes.rst index e8c7f35cf..6ffe838c4 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -10,6 +10,7 @@ Next version running with multiple processes. * Fixed ``RENDER_PANELS`` functionality so that when ``True`` panels are rendered during the request and not loaded asynchronously. +* HistoryPanel now shows status codes of responses. 3.2.1 (2021-04-14) From f4c263af2b5dbcad95447f039453da4734ad416a Mon Sep 17 00:00:00 2001 From: NielkS Date: Tue, 10 Aug 2021 03:32:29 +0200 Subject: [PATCH 26/28] Support for request-level urlconf overrides (#1488) * Support for request-level urlconf overrides Middlewares can override the default urlconf per request by setting a "urlconf" attribute to the inbound HttpRequest instance (doc: https://docs.djangoproject.com/en/3.2/ref/request-response/#django.http.HttpRequest.urlconf ) This change adds support for this kind of override * Add test confirming urlconf override functionality. Update docs for urlconf override per request. Co-authored-by: tschilling --- debug_toolbar/toolbar.py | 4 +++- docs/changes.rst | 1 + tests/test_integration.py | 11 +++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/debug_toolbar/toolbar.py b/debug_toolbar/toolbar.py index 2813f2e75..cb886c407 100644 --- a/debug_toolbar/toolbar.py +++ b/debug_toolbar/toolbar.py @@ -146,7 +146,9 @@ def is_toolbar_request(cls, request): # The primary caller of this function is in the middleware which may # not have resolver_match set. try: - resolver_match = request.resolver_match or resolve(request.path) + resolver_match = request.resolver_match or resolve( + request.path, getattr(request, "urlconf", None) + ) except Resolver404: return False return resolver_match.namespaces and resolver_match.namespaces[-1] == app_name diff --git a/docs/changes.rst b/docs/changes.rst index 6ffe838c4..663ade63b 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -11,6 +11,7 @@ Next version * Fixed ``RENDER_PANELS`` functionality so that when ``True`` panels are rendered during the request and not loaded asynchronously. * HistoryPanel now shows status codes of responses. +* Support ``request.urlconf`` override when checking for toolbar requests. 3.2.1 (2021-04-14) diff --git a/tests/test_integration.py b/tests/test_integration.py index b1e66ea7e..6d3208fff 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -121,6 +121,17 @@ def test_is_toolbar_request_without_djdt_urls(self): self.request.path = "/render_panel/" self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + @override_settings(ROOT_URLCONF="tests.urls_invalid") + def test_is_toolbar_request_override_request_urlconf(self): + """Test cases when the toolbar URL is configured on the request.""" + self.request.path = "/__debug__/render_panel/" + self.assertFalse(self.toolbar.is_toolbar_request(self.request)) + + # Verify overriding the urlconf on the request is valid. + self.request.urlconf = "tests.urls" + self.request.path = "/__debug__/render_panel/" + self.assertTrue(self.toolbar.is_toolbar_request(self.request)) + @override_settings(DEBUG=True) class DebugToolbarIntegrationTestCase(IntegrationTestCase): From 5d709b494f17da4aef3ad51f4dc08503a55fd3d6 Mon Sep 17 00:00:00 2001 From: tschilling Date: Sat, 14 Aug 2021 09:29:27 -0500 Subject: [PATCH 27/28] Update screenshot script for changes to make example. It now waits for make example to process the db migrations before selenium browses out. It also handles toolbar already being open in the case of existing cookies. --- example/screenshot.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/example/screenshot.py b/example/screenshot.py index 0d0ae8dc5..8c1135eb2 100644 --- a/example/screenshot.py +++ b/example/screenshot.py @@ -3,6 +3,7 @@ import os import signal import subprocess +from time import sleep from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC @@ -33,7 +34,10 @@ def create_webdriver(browser, headless): def example_server(): - return subprocess.Popen(["make", "example"]) + proc = subprocess.Popen(["make", "example"]) + # `make example` runs a few things before runserver. + sleep(2) + return proc def set_viewport_size(selenium, width, height): @@ -67,12 +71,15 @@ def main(): submit_form(selenium, {"username": os.environ["USER"], "password": "p"}) selenium.get("http://localhost:8000/admin/auth/user/") - # Close the admin sidebar. - el = selenium.find_element_by_id("toggle-nav-sidebar") - el.click() + # Check if SQL Panel is already visible: + sql_panel = selenium.find_element_by_id("djdt-SQLPanel") + if not sql_panel: + # Open the admin sidebar. + el = selenium.find_element_by_id("djDebugToolbarHandle") + el.click() + sql_panel = selenium.find_element_by_id("djdt-SQLPanel") # Open the SQL panel. - el = selenium.find_element_by_id("djdt-SQLPanel") - el.click() + sql_panel.click() selenium.save_screenshot(args.outfile) finally: From f65d86ba7b99457ecb88dea3eaca3fd964c10bf1 Mon Sep 17 00:00:00 2001 From: tschilling Date: Sat, 14 Aug 2021 09:28:15 -0500 Subject: [PATCH 28/28] Version 3.2.2 --- README.rst | 2 +- debug_toolbar/__init__.py | 2 +- docs/changes.rst | 4 ++++ docs/conf.py | 2 +- example/django-debug-toolbar.png | Bin 79791 -> 83077 bytes setup.cfg | 2 +- 6 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 3a3304780..8bea757ad 100644 --- a/README.rst +++ b/README.rst @@ -34,7 +34,7 @@ Here's a screenshot of the toolbar in action: In addition to the built-in panels, a number of third-party panels are contributed by the community. -The current stable version of the Debug Toolbar is 3.2.1. It works on +The current stable version of the Debug Toolbar is 3.2.2. It works on Django ≥ 2.2. Documentation, including installation and configuration instructions, is diff --git a/debug_toolbar/__init__.py b/debug_toolbar/__init__.py index 05d62a515..93c78c7f0 100644 --- a/debug_toolbar/__init__.py +++ b/debug_toolbar/__init__.py @@ -5,7 +5,7 @@ # Do not use pkg_resources to find the version but set it here directly! # see issue #1446 -VERSION = "3.2.1" +VERSION = "3.2.2" # Code that discovers files or modules in INSTALLED_APPS imports this module. diff --git a/docs/changes.rst b/docs/changes.rst index 663ade63b..1a322752e 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,6 +4,10 @@ Change log Next version ------------ + +3.2.2 (2021-08-14) +------------------ + * Ensured that the handle stays within bounds when resizing the window. * Disabled ``HistoryPanel`` when ``RENDER_PANELS`` is ``True`` or if ``RENDER_PANELS`` is ``None`` and the WSGI container is diff --git a/docs/conf.py b/docs/conf.py index f3afd1888..1fdad323e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,7 +25,7 @@ copyright = copyright.format(datetime.date.today().year) # The full version, including alpha/beta/rc tags -release = "3.2.1" +release = "3.2.2" # -- General configuration --------------------------------------------------- diff --git a/example/django-debug-toolbar.png b/example/django-debug-toolbar.png index 762411772fb4c5ac395b5ce877593ce875f3f294..3ad4a4af1a79f7f4e7183d2f56cf9a3b1dc32759 100644 GIT binary patch literal 83077 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
owo9vhcK$ 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

$~P}evL zuRg&YDm-}m>)o}_s5SNQL0QD@hQh{EvON_Zw$cOanQdy1P*zUzY}MS28Rz0wh|B&< zE}|qYnaD<=GY%Gl1P1WD=TvP8LEaQ1Pp`3KaeCZuBTE{(gy*?E((v4xm z*lU~iO3&zjYX~}c@cvQ}wr`L6VO%bI355=5L4pt%Nl>bX(L5^Bi0uMg*x=^pgjICBw}JrQ*d(#0}0%}A5uPX7-Nlt zd(U^Cz0Aw1($?I3HS)rx`_*hRYnJXkT~7@{!}1~_9!$GIz#gOmUmgYPK@CeymE5h_ zoG^#X$Z?c zYj$(@4A%mT{3(s6j=Ewo@gQ?JIy-lJzc=mqjp-g=;JCQ*&eIFMVt+Ak%Z$V%A_YsS zH{4bSlU9>aQuH|h2KJJr>a8cq;YVNra(1%flgD~#}{h8?wPAwe_vghaPx_{DgPmpCH+{pa_H_n08?yC5e6hTX{@Kk$ofpHum5jp-Fc z62pc&>l8wqjoq?5Di$Eury5`X-OfVI1Lyy4WQ37Bfq55a4c1FyNhVa9SYwGL7DxJ= z-uIuy^I!kIxY7wb_IT|tbqTF%EKIZEZJ`{tN0?7y=$ z(dLeos0>4AlA+*yl(zFoe4EhUXkx;~Bl-`4@w~zYQvc)-uDgajDn6KwAwP{8OB!cv6&oT}&1I~cV5&qV35HkE8EA18kPcw+5A60<+RRA44w0xF7fbG-;* z&CUK6bIxaL2iH1cv)5Gv$^mVGQ*5u`w0w@U3o$QPh5_MRb&p{Orgw~PI4OV` z{JApyY&C6#va*E~Q<_2{B2a#;g!IP=k0l}^lG*_12!l*m>6HJwVF;?WJekhyId55z zDbaB<5+s;?Fq~h&K+*LG;le1Mj@<12;k>c$)L=p=@#0uk{vAXZK z+{D6l0o^O!xw;xJ0uk<*P%a{eM2l#Rf9aEahmv9vn>CO(*ax`UI&j~kv}GywSwGpR z!p)FZ@@q>dpVjIGOp!c}zk0fddD z>*HU3VB|Ln9_OJ4Bp{|oFYYco0$S(K=i#~cZ!6%3O{*G{@8hRQ}Lp0J}T8lU*rp(Iry1H&l-orhjKq zRuS~|*pcxe1q~e7O8Uq>s7mHx=nIS1Bi3__=Db<=%^$pC4eU!qj)W&TKjmDph=b+p z>q`>ZxmZP|NL!0fKW7UD{@Ou+iwS>F`gn3CU>jb1WU?fw*X!71CMR>Ax`S!kb!$*i zg%-tLPm3>^GxAOK5y@|=-iNoKQtirj0)g3JXGboCLG<;Bqat*++H8_Zn4V|EcMJ@6 zwLZX7U}_ejcj7tL@rz;Frb4-jlgz;-a6o8#Qy}fTY?*W@}-E8pkX* z9~K<7&Q7gW|VtGsJjh0PKFyu{Qpfyx==EAjCA#JUGTa-VWKDq~TQU(-P8 zOjrJm8_P9FudOZo>Ao>*Z*5QB-qm!P1P>YKIC)uLo6oumkbrz94%d+{ZR3+?$UMD} zZ~lDlIMsCra3nxECE~N&#|I8eOWyo>cO<9Kf|X+ZyonsW1oUm>S@k{_-NLipq`~LOalR2;z29GFi%S5_&JPAs)n| zTWcL$e6i7O^#3f2V5Jix=%7&(CsLIu^?xoyLI8A>$ErtGym)(*`aKXPP~j3+uc5#Ix!!81O;D9(f?$T z6m@#=&Dta^H>+6BIKhJqDN}Q+ZHGMVeQ@Xayw8G-31X>s$JHWC2Sb1)`nQ+EZftC(vbpXMaY=Al|;zUB~5SuW{@1r-?iVg}eIfv6>(% z-+({}R#==!Xwu{mQbSyg>^2~KG`u@?IBLL!`XFe!aWK^_ly^CyXhL|IZajRTGXMmU z^!zK^fK~_2NnB_{TpdF%#`-}aVPOn~{{TX;!XE8akPjWEL`4UKTJ~V$hx1N!l`vOJ)E59V8l5-j<`1(a*Lr%z zjo8}hdQ^%Yz)Sap0ma}quVf%Ar&Eatm(n~A8Mbm&}bU-nK81e}y zmlwaEqaU!fN=t-Il2Wq+?4%Utk<6!|_$Ozcx$09>{60CZ5E28uM@V z6#NeX>|I>QPgZ<=H%{ZNJOzi}E^IBrwIMdO68f@J0?CUFgjZOm_jA{Pzp!wZiBeb; zza>a-W5b}N{ptE82V%`*{!m34FQx?*C#P8WT0~H&O!xWvhU1rZx*c{g%so{A9_Gy&EO*W$Aq8}qq-?O$Ua7l!fMzBKvl*#nzz zqA+5~zT?N0;iJmU<^3kIB&(NED|f+8#jfJ_o?Fx0|PXe zcKVHyMM8-hf&ndys3lw;?++5S$Qb)v+w1kbSTp&P?4YcquPoI-a{UHLT z17%HeK(yk()^&E7BTnARd+*o*F0muE{}VMhee3L0Gm)Cv|NcHM(La`oi1*30DpQtU zw<;aEOJY>d#As1cu4=VipcJQ^8WUwx=P(&gk9=Z(I_pxZ zqJ}8>TOO$pNvUZW;JYfqKSEtO_%wcTCwyx|%8Lna44ELPJ*!J160Fy)(`W2} zqYNT^GyGL5z6ecvH&9Q$6=`3y<3p@To}HT6UL8N`p|v)YJlBDhY4kOa$S2>hNhwoR zWGQO#<{Sd{IZq>LaiNA45M$r;3zx?7%C>4U24Q5TN8T7zA2s2y|&hp2 zNgGcMXAGAU=b}_VoEiU`CQ5ESXWn$pNHw>e#Dg2ZcQumwmp!FWY`qM{EriM9Y!=*{ zi&S%ZsZ@$FhEhgd3}1w&>B4=a1QGLfjtd*Zf(4oKdV@OhLt0M}!}sLpv8Uc{pKk0K zQ;xfp)#Pc9QY!l`vy)%k>>Uq^@vVK}GLP;}j{-bJPO^wfI$q)7-3>n<@$t{CjZKxq z-on;>2EqMC>D+5JWQ$eT$u%y%db++~oFR)uTk86$_zx#JSGOzv>@~`ZUC59ysO2;! z&o^pom>BQ23qG-hiy7D5zU`~0VF8t)AG={&ZTqY7@n_`E*9(}3R)!rCjvGrdoN4^` z&9tB$9#rPrHCbY(MJPdN#9azt6!ssZc)|w+iK^$Oofc0E*W!6PcKysDqvS^!X}Kd- z@6PKO*)vV*PhRLxy(<$_P~;f!gWq>o>pJ#2uClU)O8dKF#R4u*z?(A@!r929_nb}nM(s0V5=jIkTG zA4~9muCA{E^kc1FTSUZh9;GM9YGxu_eO^2YQ*}Pzl6K$sGZVDN8n?ZN!FJ;0gh#;L zyx&L^u=O&}PzG)KPobU2F&X~9fWXAfhJsb6quVMfbbM7whPC~;S1}qYDJpKgdz5gC zICHs2sU$7~1=-50HVgRrSu{g@jvT(mZtQOjY?B}&XQ9c%=29L1ti)vn zecfM{p5kqvh)r+kh}CmcLGC8~I#q0kkVfL;VL{CIf~5wkez+FwIQ zoVS=+_~bD5)=`8D$}LZwCW1_V%Q1hu2&x`$gBA>565?l}GM&G=_uV@)f>yQvX^Vrj zj3dnF8@BwEL2W1trT##r(xEo~2>11g1Eu(1Va+gMO!X;Ns>Rubw$8K}L?A%{uzCKv zb7OG1b@Rm{gtlT&k8H||&dwWGuVMxgJ&c<$bNL-)<8MaNjkUy1#ZBS3K0JGp5a3e- zCOYsFLAWD#W4NQ&1p+voDU>J4In?BZAHItt0Jm!GeK7k`Iq02Gk8H{-9=weE_@bXaD0wZt;=e zV5D!8CVY}Qb4tpl?ng&>{~UYoguJsO$fWVzjes==F}nQ+fxecQOH(gueow%vhOV}c zAV>)ie3nH2V`s*v@D-3!Oo+S+MiYorAt`@e>gE==+v(M8HJ({RJ{InO@!y2qdEv!e zObkx;Fqr}z{3eqYC4QO#%{hHsuF>0#*YOB z1QM^HESyjfx)Xj*4N!B_8$HJH70y9-W40(jK@2B`U7=A^4GWFaKiJeq-c~R0&!bHb zK3>q62RX#x`}Y=>mhfi?$MTs~^d$Qu=nWv<|@X1}y%hE3meJFM7kTps)Go zwf(?j*JfZM=d4qv5UqV*%-XyjLkIy78aO&69Hviv{K~8<_{wmOYwYivUw5c zFv};1Q*$zJJT^IUF02ihIN@U(#N=5CBa9Pd`QR!L$p-Eey~UtUBSqorEPsw0obbW| zQi8ZbY~j3}tI^9A(T0>K*om>I3%>2@}p}y$ywm%F1lA z7tcG;z&<XG|4@v#VlsY~UOC?%e6 zHr?Kud(4j%yMljo!v5YR?b~>iQ|>BYHv`07Rh+bnPg_T?9m1q)H!!K&P>^=}CJF*_ zu{kGQ(D6N8zsvUtYJ%ClknP6Byy5@i3!%=*v51c}3e}wZQdp2P{GNE>2B)j>G!6)W zDeKM(u>5;MsZIg)4;Q?zY?{y0#Tg130eP!u2>ThbIUkNxcb2;SVNiCp=f;j&?%_Qk zEio}U>EQ4up`J>rT$_ZXWO*jeJ}+}&$6XqovI-yfLsUNueOIxxQK){qUXS@=!2SbA zA*4WDZOK%^nSCG~tzhI;k8Fc7uVV?Jh&#zi*w0wUZgEmGSVNF zO48jzsF{Bv$s1KO;#b1i2`+7!uc!*iZ)|;=0O2tEKsd}Gu}p-+jGbbU0*Be-K&p;T zGLy%n@T3;4&@&;jY^9(a)Gg$AJ@LHC!UxfGFA`x#I`|ckLGQjG@5~ka$YiJM+ zNlg)qt7gDmu&Xyk5NYQsix=b3wL7#vjb<`1pF6$k1pf)36SIqm@|(S<(Vz(|qcH~w zAb8IpI)$=j&7NI?a)vTO;wO9#rtmNPh4%%bQ*4!rX=r(zcMmsQ&JCyiSRcbwvsHk! zPD02d|FN+7q{p+TPZJCunsaJnyuc+1pp4_246kbsGLM_ZybhxcKA7Qy5dqmYxwJU` zC5OoS@13yXz!D3`)z4#LJXjfS}e5}Vr2&gDu< zX0VC98po;V6weu|I8+s%#0a8C?St51C7jWAb6u#2IsAfUyF8_sOZ!5W4kUbJql>S1+lFWLu-EumYlEXx!f)On z?E;J&VZ2jT_Qq<63yb3|f8bJidD4ZUXjp;0ChY5cUaBo$?!ZUTsCy&-I>3I!MUE!J z_2oP6?o(n)sowjZ@6GPTY^#kKfM%#>6pMp$lens~KbW6|n$+{Ll&1RSYnJeTwc*Ao zUIqVLiRg+twg8fUvzZ2F<;UU zDAE*Qj0-AS(p#Xk}YE2K^cqeq7sX zwRqyLcr=^{a?JOfGj;6>+Kr4c;f)vtqo-ndIEvwJ#>XJRSbidlHcUAZ@Rllr$IF5MN%_`gPonK z9{ECb(<)O+l-vxp_0AzRMR`BP6NtSh$xt|EVP;QA*ns5CDx3LBzz0`ey_$2=8_Q(my2J%nJWy^ZPiYb{x!Bx-CL(0D z_b&{E0)Q&?%V)=qXw0TSXw}yt%>@nt__ZuXp-^6(XOh`YS`Ei*xOGep0uxLhCB<62 zKk4%##UIA#q4$bu*}su}YHmkZwi2}3o)9jfoSoS12;+9B5b>yU<$F1S&{rArCdFSt<+f*bwBz`-&SP<8nGVrJN$;A_=du?L0b za&pv{GT%Cy;Zi5KNP7pE{huJD;OYI;ti(T9RguP2M=+!%BeY;kIJ-i>L9TlBk8R7_ zAB{w$zV%X?CwQ-KW8|@XUZR!ZMB4@u>!W{3cYiB*6~c-&$D>Nk?cIbkEJco9)6ubK zVvGNx?xD)r8+o!F6wtbV*K#C8GO|@-IxuJ<498i-zA(n6KNMg~{nUzM^ppw6_bmHEk|_ zx&`VXb|yAHBXv22@3;rlT%%0OC$Y1nNYUBOm&D&Q&!}wof7LnncXk$~K#r!fY?*Is zcKD@B+hHIQ6BT{-^aj+eIF2#+Id%{sA*12$R7RjGCc79 zp~Rp)(*4|^=9eT^L4a-bXN9+#_#40iBAE1;JoGL-uIaN zH>40M^(}^W!NJoV{r^y(n$?SH+Uu#Fx|HPhTO|`U9sWqj^`vO>G9wtMxo0z{>F978 z+m&v`6wh9Wdl=oi-c33$G89t|-}qQdH9d^G-dFw_Y{ zlbf%55L{09k2vod$h@GDw)8~#6}-7i8ZyHr5LUTE0BEZu)@OrhtY4<}DxzaPC%?H=gU}h= zKnryJ?BGEIIRew>`wt)1h6IEz-`Uj)mER>#439Xih_YzJ{=(R%OrpZxAx~D@u>Z*K znUxZ_&{v}0c~8x(L<;_B@vM;ij4>imM#!@U68F5yVa%z4?Wl7{7gNWaFZAuYKZKx|WyqEDd%IKm1X|_*MqJevD3w@&~AkJVo493Kx>e&tN3AYiJ>od48O4 zc{Pql&vb43=%V$fK_fTByyfZUyk80a0^?i$MIOJ67lEV~`WTOUfVLS(h_b_A3UDL& zRDAsLgtKQQ+(tGRTMMxgQv9LY(|hmDjB$^#h<)3-y@vExi~ZMytI}V z&o*j9!7ZBFI8@JAs3Ycw8EO?>+K?r5ySh5$&>_8M(O!U@Y{kHfSg#(3iMtC9amKGc zFk;Kb;-Tv~!}yLH8OvYvLLJqkiQ;PWNT$P>aLDAa%-%5L6FyEQ&bm?r1rZ^@G&QE@ zw(&>K|2Y3f==AvI>{ZF$zP_=q!(2DwiZhm8eab34#C$UbnW%*p4PU-~m6MQ|w-p0U z(79SF8D2w+3R%4i?&RcR0ebkw0+PFk@3^IXE!CN1b5f`KCE6N6px}ClFoTE=v4yc5 z=2AI46o}6|q1x8~-o`&wP|OynF?9d<4%3*GL+PLcB2+yrnWj$JZ5^;8qd%j8XRn34J;OXNiV=3H%5p=ye@V~P7!#w_ z6#Ej1{@ZxB$cT#`+fU!@^a}c*?z8evd@KmvPKPtPb0M%MzY9hAkH)?G z_xTGs#^PqUn2JnAwpvq3IhXL*%euX0#mg~{e*BU8dwF#jpcSvHGjJPovdqsR_3m5z zQ0A8qx9VVfDdt88lBMbB!LKSty*t(n1OMnOU~m{#Wj6O*a_kIC1|k(2FDLpMiVv1F z9Si9Wl8zst*Sy<7mY>xR}VNYv4MFCl0He z&yq3DPSy{hZHSv#Vi4gPxaK^1l+r>06xQFwOI)Q`>{2O|F*P-ntzvwjbpVY6NxU=I zR#M(vy5DpVfAewO``8RTM808ue2lmw(_y{zvDFd&IR)a8dlA2xTR9A2a>8Bi`*_Y9q)uzRF%d4&M`w!hxorr>EnugYukKn}>*MFA<~F>!xMe=8GMRs& z9RlE7W09d~Q-o-_TS3F@PlP30ec<0)GmMWC?5<)UD9W%H93bC!O}F#(kuP2cPU@~} zx@J`QN{0LtU_7?3wXA{IPup<1CmIjU^A>GL(q6)5wR+Vmz8#~=?&R9&weu9U>k42; z>lGcJe{>k>XHB&=dtrDbl`Gyfd){KDPsfEcrvttM2 zwhk=P)`~k1Ax34_N61*7X|)2|gS*(N+NyS(Kzxg!YEGumA+3-T*6zAQgB^MdQt*~Y}p)Ej?ozhaZ_lL_DMR_I3m8ac|l%wciB{35Dc`}tduUr z%;|8&p*XSyB0aZ33@PmNeJTE!HBb*dWv_TuiH~ig?{q6+_=wTD!tZHjD=CUIk*ltN z+8-au2-7pkc(g0nWIwPI()|wkoJS}3BYJD^1ysOLg0Y_RuYC7$8&@ zwyV2h=^;Zr|Mxw}HO|uEpJum0Epg`CIm3`u!Q18a&ClY#t;@2?DRxiZ?gfFATn4z= zEjASKee`nPoC`r06vs?%A?SW+ZwQD~b~<;oX`Htidz?K;sH zae8+}p`ma@K0Shml5$_l;@wrEv^;}dEQuaOWn)T9NqHReb%PW<+a+gRukQ5y0o5p? zBy6PZ&&-mZ4Vtq*-KM&v-Ko~ z9OXqBfn!AEu=P1sVB=RC_hs=-g_*SU5?5Sr0RaJ3YHe7BJhCuQ)-Men<4HkWB#yO( zT3*fg6a%?T1Q6F0wama^A>z4WmWt95F#wIF{ZlEzmVDA}a=1eUg$fo)#)o+Bv}CT{ z|B*AY=~&>gEO&CMyRgTjBMNe!wudQPoJv6iAp?BNs$k^~a$=Z2w`f=5APE-Y!W?V8 zPCFe@puQ(?A{~Xor9fL_)I`K>lw(SOB^S*AzI*QW70y!|!x^J4ZSC!tE+ypW87-7* zR8?jwz78w@*jW;PYGLhq8)CtnuvZoFC2Jeiz)#rr|gCbb>ad`MS#;}ves~2C<6lCVC`SiRfdYAWG?KoNX7Oo5I zQRNQv=xsiF#jaUd4^9w0PIBa6Dj-V)UcJe_6XH;JT5xHNY^Ix zhr^kSAki{~$Mn4Zp)0ranfRK}U#ZlFAV47R!95+A(zpcG$z!gSySKpO2erj}55g`4 zmd7p!xJIy&7m_g5jt*TcfGJhMz_XF(@0K-37fl;ODGTa%Ja1}a+=WYyJ#tYOR_?ph z*z>z!09FbP-3Spv3GgYE?=D0n91c&gMEWJ!H54EN0Rfc;HeXSY2O#>J4#Da$B&<0P zA}wkD`~(c}$N7D`HVPa?HyZn4&yuTe>Xz(;{`8Sx%Hecb-B=8@T&opj8TCut#R_=~ zBz=Qrv9kXCFE&F%;Q*SZ=I29~y|-<<_b9)I+z!M}5zE*r`G5f{zY3Ie1Kjqii=Je%(3$sv$>+6wS}u+v3MdlN_A;8m}IO z-w2fRLn!hi@b%c4@q_1(k$?VySaAQtzt3W0TK5>uNpuOz1~J&lOhAD(-7P5UwHe{I z=gz%El!qQ^PW5Z=N_mcahUd>yobN&i2Ly?B1b;rVZ0CNGlky1$`b`%uJP(ynyCRKD zYw1N)i+wSavn@vjXP|!vkBbrP($};GC)oLdCJ5+MOsoTXJq!^gPUR6}s;~`wz2@)d zhb&bf)n`HgJ78)m+HxDb(hZc6-FTmU4?J`6(gkz{*A>12b_!{x0rLC~bz+7zWcFxh z0R`AkOV7%JCe)|ib`d)}``*2K2RtgAulwnlVI+vqDZ2_H3&KY$7*NFY_$z^Gd6q+~ zgsBva=ZQafu(OPg;UC)oE=y@|C)xiRAHKHx%_<>3;xnD@_ekFT_+7hd0l8k0InN>@ zY4>X-6L&r}uG604O41F~o=eA6=CgGDo>jpX0eri8ANF3Ss59IIIBFO=lNJX5;CINw z@k~2`*Lei(a}M?ld^nfozg?iEFf;ES7@n+x#5VL$h(%fXZpq$vf-`2(u{ zX1CZ|DW+}<86?e+O;p)cD|dkf&!qUZ}!mUK@d|n3xzql8F{BE(@N>JR@`q z6H#?T^R2z`vv%#$+%ht8(S77asoc@Td)+{zXKFn!=P%`>b9sWd0&R&wPic1M=f1I{ zqrKr|y02FS?1=bA4X3tZ-O787zRy4~IEjhEQxIHoNR*AhvSHp(H23r&*b&d?bA($B z=jiVSh@C2m&)s-qd9x>~IQj4q@#GE-43LF|MQlIzO5}OF6=wD`$Qrpn_G`~>_QA^e4;>67ro{T_ACd1L$X!0BLaZkmNIcg zPG;=6tI*16a+X8~g*D_mjmJQDSNF5d&PiChd%Kb0qVxd>AF*rK)hVo4k@}a?cT>SW zl$$Z(q+F1!aWvz?1g`KoX-2VD^j~2-A$A}{@&7IY_@Dm!IsF9jM}mpPpPuFVgP*_1 z+`M4QCEz2uQWQT4IPa4GNWstj1&BbTIq5~`AGBe70>}Sn%LUWl*thYvJ9tO8!EbE# zAvG8K_-}CRbAIF9c^h&tkFe39Jc>%;&HTR7eFVW^#3p8jnnB8LX9BI@4oK;s;leu-4K_zY);D&vJD(raYV!Iu4@+- zNnNxl<8Rk_dDH!8&(OG8=Bak{eM<^LjP>mmi{qF~pf0*AR#;Z?@be!jB*rTeu+WeA zL$f5AlOLZy?Cy5fnEdqOX?;C=-L-KZE#H`5ZN4U9Z4b=e+@F7df5CF{Fqh%hdXL?T3g$U6X+bnKk zXFT4^|BC#saz1()V~s5F%vI~;$PPvk+XWtP7KqArv*IsEo?9d$@- zHcl(L?XwB1lKa$+*;bz)hRbT72qm8r*1vbTrfjyg=gEP6*>XJ3A73;g{5C7=hl~t~ z08ryNA~Nlk_d^MHvGof)ZXW%4^}k}g^WVB@3vWhAkCF^VmtGoRggi&quOH|OgQyR|-OKd3*ro??YKZk%7SN4Aa#V}t$yE0?rXZb8`uI*SZ2 zL@v9Ea1hBcB*Ss-c-MWRXB?;d1GYSQGYaan&9-R|T|xAS3TDI!lsH2Fxr})>8ug|D zZyAstWDI?4;q1b8nX>>1a|~x0#-c?5(m2e2K>3r!*(R(00zd$fA#{T-y-cnydZfS) z`9MAkk|dU$V}=odAD5dy?~7!}*v@dDXsM;P#|$_{wVpgcT@o>JUT^o~uB4XE_20+! zR%!Y?l6RE)MRkZ{Yo z$aIl?x5)&ES`Y8eS~_Ro^Lw73MRK-+e@TK==3XIOa!PLqE6bYo>xEW!lyRc-RsA=S z8U5cf-R_90_#ZOe2?&iS?cMw9BpO`~S+?a_E7g*0ck2{JY zpTqYm+(L;@)s4v_B43C4zEl z6jQ=1>yo1L=RKh;Hy7AveLZ-j*=!U0F7aJe$M)6^8XI8-1S#3(D987~NFmCuWzh3U zmXRBxlGdf0?@9SG*8H?=(N?=-PpE=XH{fLTtus>&W7x$CZ+a~gZE9xrAV&C7H zHfhC^(J|Tw)~!4yQK8!2#!x5SiWZF6rIE!#M!zflU+l*0f|RW5C>nvF$W?=)yc#2$ zn7FvT2J*qzty^~#K<6j|IwG3ogmeN0B?SO6^WFY--!tSqk?%o6cV0Ofe=C7=Uv9uu zB5dFIMj>0)A`R@KU5T@}LQz@SDD-yD&d!Ld{4aRz><*aIi#Nb_7uXwu*+ zYWp`d@hq=e`X_G3*~4ij*>L@a`)WEUP>rUhz`nu($P!MQJ~B21!e z7~_!_w`Adb7A`s&?d{BvB;nIT7da<9{z*A~HBR-$h7*$jit@jvuGJfwhj9P6=O40| zMRiy&bVM#{6Qg}*K?gC_V6K8msuE@v$gIv~WXwObw6QuYjC3eRPKaWkWUm~}FkhQ7 zpNrFSfD@uj59(|_=bPJ-N|!ttA%|B9@+?^H^`4S-eAB(-);ok2jMZpc+t>PJ%MqvR z&w6S#JIBJuM=XfN(Pn!zz6n!*_(NfVY}7c!lP}oc4exmiO!{x4tD&|7hq;))-?w~_ zc{b(QOC=rhH!9aS7{gYzKrtDT66&db_Et8tDZpk^dV54hfKPucB!bALx*kVH}Cl7ws*C0P~t; z#hj_`;U9*x)XBv~EW}x24U=h|<)v2FT)@nnezl8te6_xA;sqyXg9BbI$=~?)bR0LV z9NQI)w=n9j30e4}7vVu(woD`(LX7Qtay~rQFl(Bh9Mjei8O$9*I>{mjg=0Tg{!K%D zTwly!%_GuKF;1^(@XjOBP;((IY%961SRKKaV)>K^a#Gn~Zr|-tJ9ImT7g7BeEKGrN zAPYX-0H+TD>MDhbFcs-ad!fHp3PF#tj&z-mon10vcwhvr#UbMp`T_b+UOK}ZNU2oi z&X=Z^5-)fGlR^)}^3=-OrCO4!D{KM+k4h`VWoI*%H@+<*O>Ob@Qm=!#A5Tk7RQQK71IKNPc?c(h<|W zd$ls#b|7B5x#V;M)iz^$1Ye(ZH0{(o3ywSqi=60BcqW>1+uMEo+RWCzz4F9r!&2)6 zS?Vv+nS>(kk?+;jgq!!F2;KW_1lvbboxF}DDP3Z=Y2k*A@xn;{@tg$YYK z{DHmDgM9c9eHAAqFa07u@Rh4q|C*XIr_LF(N@5lJVp z)b<-6w2Ho%f zDPP_F@^h9t-OODl zRdb}j%C=Nt8~4ri-(>C>1dJzL4nGrpYpvXa4SZ5Yp=BB4Pahs8iODwjTy`J7D?PXV zAiU}7MsN}UokI-o&P2`-=Lv+fpcr$Z8)?lycWyJVACo-b-5UF3xpeRSJp7eU_K1(Q zeD=O0t!Xcfgg)>2Rj1RI^ECWa*XqF6eV4<=k{$9#IKlK!T z>TG{h=*`*ajgxm(=JW}{;Ub9OJC&NBXk?T92QEis3?uXKYkMAlVg;712+QHn>fSa! zv$OIE;qCW7BU-HK_*{H!;E>nf3Xz|6)a2CE74Rbg_#8z8%uTGoGrc|*8y}9yMMqew ztl8ahjY5AYJC`Dhjj(VL%^G`#Bi`IPmO=1%Sw%%|^f^ObLf-L@#C-arJNZ`dL?K4d zn>Sa66kho93=Reg-CLZI7dQ1T=KEzki@lU8U3}S}9)`6+97Q1Nt0#zq;ok%dYyS@c z!#E^KW+w!eX={JN`hX($SL4Jna=Z<+nc1FW!7m?yco0$!PJA9^aoarTx^N1s zU%L60eEHEedv3Z&3&ad-InLqaRR5-){V;CgA%1&Av$5!44EbRR!k^r5A3Md;N$m9! zOPp#{CEcI3wJrN?8+vXTjS;sa0vt$A1B~(X4@82tLDn~gh#)0RTH|>Ds1ln;?5>Os_VZN07TNjn$ zn*b>b$?6kAa#eb^MrdCJ6|3-R%p>X_>a3t}4UxqQba zffjc*x9<+AJfQfLE-|OeL>)5 zkK(tP@_g!Pzn2nH><4HlNOBZ3Pc#ts39Wc6v;)_D~9lP;{89txQMY(XID4*C}})tvo0EtyZ+Yo z0kg7%+0nge*s?N%O}$pSl~)20+85dBB1~h8|6Z5i6!xEV3EYCxoN~|PcFq#fU;C*< z5zbAvn^1ZV#p)c8abo`82on_L+lMX}g)u5f>C(Ox+QE}C`Tt*K38rah|HrC?2%=Fn zZ1oX|2f$M(YTp%X7ZbIN%(#Ts}msrUM5 z+rY_ewOyF#IIz^6>_O%wN!*(1;#;?_giX%#I+mM_H8tav!(2?b=Fhx`wm^xZ+=3Dq zW3QZjw|<16Gsl}|y_rphx2~r;YbGp9IS(=yC%oNLy?YgpWo+HdvGE2GR1#_x@Tns| z!H+TvS3X;7!DrYA{(1hYi(H2u?{ZL4koL z{UB0EtHmwsWaqRg_DMX(YsMQ-KYDX`?z1ZQ&@nQ~n)kdlDdby!)EzTKx*{d7@w0R0 zp?~=Pa^7KBD0tH^Caw3T1w$%}rx!aB!<^6%Y=F{0{EHnX#7;$t)_$-w;`P)a>)Ih` z;0v35aa2ZpgeXdRK8u(ndg4w*n|vrx+uSM*|GKI=C9nF-DJCBUi$g7S)u;bR`o~;o zZ?DVtsl@%V_Mou2`g~T4wC$i1=e&7^VT=)>Nq&OSY;g>hC>m=R(tK~q{rv4)L&qEp z!ySbP)j-S`LCZJ=TwHm0Y*F5Z^Q*XW&H8aTW6vf&jHc`J6&&4Hyh%+}VGOF^sVVm$ z=dU_haZ$2p<@nwj%Ck}DrDnVvg<|7+e@6+BM8E&!0=I?h;!rJ}T1 z06ATL*sGOKwBZD{g3z3L8L>Zt$KVcnP)jwI8AeaRGh{nHPGSrw&1-_dVE#5-4Y=du zXBBrypS*xsusv+;aC5;?JTc%o2Tp87dEm*o|5e(XfMfNq-@_^@LqrG>$vkBIN`w@T zA@iIDb0LIKBBW$`GKC^zPckP$N@WNcDjAC=i9!=1CBwTmo$op4{hjxJe*f$3T<1Ec zF2jEI-k*C|_qx}LDgagY$F{9o&q{rl=smK6a;LQd98BnD&51GhF^5s*%by+rtmLS{ z^_-?O8(fy9$ve3~<^KS$3yXomXYnkG6Fg+O;P7uLk zyZ#DTJRDY(~R9h^MuoLBLd^F#kv4|31cG2C!m6n537ZP0CX|h+YK!(XAms0 zoa&PL@EJC}KJNzbmD$XdMcerRU~0evTZHTgVWQZ+qn{ z=$S}I?u3;N_WRKjuCQOP?zlcTQ98@7XbWg~6<)VNc;B9T z#wKn-=(#U4yNF-cIH0$;viSael~X*fN{BUDB+{T|Dcl6GSRAH`bXPTQH{*5YV!u~0 z6n%yf9=yD?REbUM>#aGhi#?f>KUbQj1PeuBjB@P{(b&f9!^$;n02d(9$h(R0XRLhH z2AA3qXwKdINhs4W@nWi0e>o{BOp{GBYo*N=GT}beGtTRyh&?>aoxCNVVxf+IhH*XT z`t{QAb!Q`njM1-SBO>BJ$FH$Zf@YM(87)rK+QfhMN%U^K0XP*l^ftMFUw zZoJi|gU5mcdzTCa+EQFIQQ2Vopm^V{rnhf-%`nzo^By;j=1ti7^9CuhVV!*aV89=c zfP!TZRySosPYCN>4k-h#am#)E*rMwO=~0?PYQUO-;XjO6#0fuWa}DGxS+RTihJE!% z(7|E0*s8rTt#~C#2SivC4hXsrVv|qg%itguJlN;7xY+iDmD2exRd?VGD}4EkX{W~V z#z&7HTG?%VvMf7^DW18)O2+FsIXqGo@JA)K93QCB(a>4G@UYm70KW1T)u9Q^m8LAt zt*=bhjIC&-3d1S{gt9~A)?b58P?hJ4n|8bOCRhBm?Ld{0<2GAX+uJZ3{K@wnO1{W1 z>zV*(fo*b8?v-N!GVP1j8``Mpc)*F=S2uzV4ouB$?4?^FKEubMIgGeSrh|S|iFE~? za&+fAa#J?l!!tr#vI@@KWS}fQ>9{})(QJ}De~HIRNe25%(^;>~Sy4dcT6-N6{P1(< znu#tR6sIU-!yaim!(F*A*sp0nypcr;-NDI0b0?~F&-%@u6Lp|c!>%?0~H3tseAkdWl51}A4$W}bOr3yR)_>gwv| zFw_L;FwiJFc8gsQ88+Sk%#6LZr% z6FhuEn{Eh#oA=!M%5Wpv6v?<-*p8e$PJ%1M?h-3+a5PL|=CdJHPWQXw{d-WZPpTV1 zo3K&RS|csoebizB%(;l2kspo9u?yj1%i6Q+X`X@t>+Pq;1a+iw)xynHBmid@s8wia zJ|h2Kb^h!NW)@W!7V5^{kB;j2x9aW0@MMYL08)QQ50xFCc1U{tn#*fB)vfuop<7ZqpTUf3ZkCS`=hlF4T4D9vI50*-i2Q=k2j!pI^{ICnRRO+@FO<0K4>vpheA zUu^|R&RB0o<4F$V)dr-_Y<41c zMN>l4UiwpolC+T!9n`g{Ru7dJsk)q!lKrw_Ma0sucnMt6BqqkhG|J;38_v_~(F${I6EhDA^mRD%}|?Ab#>-!6CfF;xK=WJl1TF4Gc-skaPyA#>bUQD-$e%@W9({7 zIZQ;-4K>OiZDnvn*G>jcS-Yop&%mC{P;1HG#M7Kq=W6BW!Vig z>NJ1?AwC#H?x-c+m`{7djI*-!<9A)%)d>nm;*JHIUFpj|5*&eLjEx%I_RuhWxEYSpH7HiiQ z#d-X1%i!71cI6mWXcKJ67a)YXdw9HoI?w2N?0MEz`W)wFtdEiJi)UL`<$mOCo23WhwEr~q9mZs7Jbqks>f@t1HgRVXDj zwZ7}cix*f?zJlG=&o7ccdrHg7xH)pd;Lb9o$+q6NL=;mrk$mQ zpwVrUh(BQ&FK^F`w`<4M#@j3afa4C@*ziUp4`{;~Doz&wXKtDKg+I2p7SO|xWI2aH7IB2*kC0RmP#)YA$YZ^s1 zIm4_T_avHnO{lRbv?%zQD2|WLH*@dES~=+{;eGg@AKR&(5UH}#;9}QZ#RG&VbX*|Da40!+<>Zg^ciWf!$(@l37zSu@asqosnjK%+4}1Rh9lQC z?lCx*l$gXowm+W2ufZr!NmT#a`?*Mpon*dOH)RPrB-m2-d_{g5X(UB>&%XcQlq5+; zrO3`vFuqv@Bm&v`k;Ot2%{ea#2(IBfdOtD}$8|2oaES)9WMQ0q0aWyDa3_2_EV?8B z(TD|v>BjmI>x#zg?|V(q+z0;}-nb;<@Nh)91CuZ+g38{mTMS?jZlvM|!sd)yaa@-G zmn1j@7oW$W1}hA)3Ctk^P~sV%nAq|g#FK(R5tJ7%R_rSO3H@N*@0_rXBrl?ub}?61 zuY-Qyv#-S2c~vDNGKK`xTpY!p#48`{6Uzsd?!kkvvE6qsXg;-aw>^~N0YYdEW8by7 zs0eg)jSLi`x$8i*-j$57kw9~$*^F>1d2vGE^OrB*URPVbnuW;EJYvUeIfTd$z5uKX z9C7@30oZTwqxA8aLYF%nyak-$^2$mB7|QOD#|F>h%eM=M-Q36u!Pwz-VdRGP;`h*w zC0>h4nj#2SFj`JNVO8d+gBBl)Q8JL6O}WU}fihAF{O5h3;)R+2#F9VgEdB)=R&1P{ z0Q-)5c*J-zv$Ov&yF>MdJ5@|(EIiM>3+EkI&bFb?E>M(rUW8Glkr0GY8YqIwp2%ZBp|L!vei3(b&B=Fq zb%xe&)--_C?opIfKLU>4vkm)i9bRX^K6NpE^;QdxtMk_nh+7nSdU>5O!~g_$9AXYx z^_uD%<0$^44rCPOZup)CG18WB0mN{A8rfJI&vL@?2<@a{@z-Ujue&Fv}|NsG*} z<$WxpOnd{nkmk^4?+=eT-`O5MygD54k=V;R5CzV9gNf3}vFY3&<@&6wU4(MI+FdP- zH?*-{&f-FS!Wscn)%(Zy@02t5QQ**WxMQUcTUGyoh0;AdFtF=0W4c=K8@P|U{e@LA zxIg=Y_Jg>t5x(N((<|F!Z3$ssNM8aLyue^$_Tm&M+0Z*>%mF{F+Glik2AbsoH~7?L zz574$P|R0QU?GZ!waqWE{v2(m&Bk-HZF9RjySiL@a2$u2)@{2>O<1T)_ML$xNzfr_ zE@tL4-(xxvhc#j?g=*>Ey@KX4YV_G({0i7uTb*52zy3?9_ZCKpL-#n`F38)fhB841 zu4XeUD|LSpZM5l?f6!I_-aUQEL_=>tc>Gp^<5(4RHWSO(sH3lKb=RQ6>6HzTy1U{U z7YPQ_{Bz)qP%E#CJ{1rkUbv`b$NIA~M;mgf>zmNv%koDQDzG1oT|cel_c_AH$4B1c z0<4gA$G4VcI8<~WT);R`YI?9>kF+!dgxjv62-R?j4$FNhuSSq6DoT}O%7E4KDlsJC?e1`xNwG=qISV6v!2R1`Y7tDqs6 zra!U`#n=b*J}<6e6e3vl$;4hGAnSmlj@QD~{{=AxjA7Iet2j04xnL zt?`xel!fud6H!8A%u)qvM-tEP9=%aGkd5`Q0*we!kC;86(>iLbHFd{g4_ko1xhJ#< z=NWmT8bMdnIc9#5>4Fdoc{9|Jsv{r9E&?2TdFx2*ZtRzVU57Zik)G7T*oYXWsmVr9 zLVb~b`7)sm`ECcaOykwKod>zLaiDCSx@aWHs<(`0b~d@049iP9*qZVg+o0~HI61h6?~y^uD7 zcS6XtThZ9BzP!@P>-t03XtJl>6Y~Zk4=?X(P)Od>@fZt8_hIHQ0;xoG>%zf0KA-$p z9_91Ja0qAaSpQe+xWegCEfTKpsJr`@B?<`{)K)CRK(O^mbF-1V*`mVz=xF+0{xg|t zmA=|LcEeOz5w6(@-!bE+`5zpThMdL++7TU?&q%S8qvGALDer$}a}JuPUJOm1KS$Il z^r7zXx$zB&Po*}me)Q-h%T~gGjfDi3k`-)pM1!^fH5@rOP_PeMz5O;};j7u=I5{PI zmky=iR?1pN9F$PG`jZd?f}vW+_8Za~)j1{@#c7<CKNlVLpqpoYG0L{Rk>wO) zGu`tkboYabKSnyv4lXt$trAa7?5;fI@J;RloG@ezAZk{*oF}nJg-Yb>CR}-k)K(TcAy-I&1CfF zFX*gXNqWnsUrTfeEYKf#x?es3=3AYLIdy^5l!%Vx<(4q=vxmLGtjW|I2hrYpj&FoicN6l3Pa3bJgsO& z00RtFiz5RF`3ZQlsVRVOcI?3~5*B~Nf}-e{i1J4+wBx@>LDbR<hvq99|2XmHi~3#QBs@5L`3JNsNdgqpN4pGmF-6TPt8nI5fZ96b{VLhJ%MnE8ABk-?Q=n-c*$?D9n zxjnx&@f)jt_t_C&0a?=2)j!e@$}_D1gehfy6xM>*I4%5pzLnjo0fp{vV_v z=^$QP^o$b>+IIns1Jmq{(4z;kE-+T|6r@|i=)bWmVGkZ#>9jr z>Y*yQSlOzLVI3zlnd&jQ;L%v?r!l1wey-{C@S~^Lw7>>|+U5y|La+nC+nu;*G@oId zl6kd$)g#Qf@4b;rjf=~|L;>oX)Vyg%i4g57n3A}R?Xo@$FyNnIgz^(Zp~#nfY-j(W zC?Wq(MG4!w|EMVOr7+a^KndnJIi5*1HH*QjW;H?cwh*Yo_&so+K(}9ao^ipvlSda5 z{F-=HeQs8R?mOu08d_Ry8|P7@FN!3Ty_^~e8t{(G%v{7EXJCfBIfAulf}(leD$Jt? z+9D8+*xNk|>pCDuaTrTTG_AC+IcsBx?@VnN{MzOHBFqSn;=fO$Q zPw^EbrbxAP_xlc|G$^mBSHCcOWi~VkyNOAPQpE>XlgQpWbGImfh|x3O$Gt zK_~A_HikOCXKEI|ynj!rx1pmZm6I6ng5s(ys zUT~Xo&j7vac0~*hhSwEvQfEnR)@KYmHBUHU4TD$$zQaJVS@|#O8FuAGplqkd$E#`_)A~Te60v!*>Uyi7Xl@?63N;;r3IudciaZePQb~q<>-J5ieC8 z;&Q<%%K7u>wQ=GPrHkc*MhPf6X#TFxeh9rQDl01T-N$JNwV@1{!lRX`m!9ogf=QNI`Ulz^VK8B*_t=Dv zad#CtB7*7wra$zAU32$2V_;ymUkP`lO6gO;gHc@fx3s|g@bK>4Cr|zaCE<-M2?iNMh15SIHP#fA&V90Xd2^w*pn9UYGzrN0^QYZ9KB{=s2}U5juoLY;?j z190yRCS0O+-3<*xm}S(=|JV=z7Q8|bQpDD1yZd{^Y`x3&&l zOnjF*rTiIZX{yxs8p065C7>H9QG}y)O<1L?eqK6;Q|`R#j2`d)*w|Ptl{2sLtizN| z2CpI{y!-YomU{BcN34Xn><-mZCV-^$dE`#7Fc$&u%@TCaB+4Xs3|R-fW(cH!kVw#aJg+xdbY-M_0Y;^ zd?O*E%=%{1X>-kanVGyJgj?NsZWzW)BJ0qdX@`1;JIf^hw~ zmg=j@-ILXPY*nz0)e~Set=cNMjVrJZ*p@si^JdTFGV>SbJ-_xAZyH-QcmP_AihrTR zt>HZ9-QZR4rE%P~7U%{h7Lm5he;FDYN=ZmGR8C%q5F7^0W!;l;t=x2y zA!g{CczD)rUCBo*SrghxS#Qg`X*{B^YJtQ2$j&Se%k`L&U$0opEiYt^Ne5JI1`ls$ zXRkzlwyzWE%f^VvDYMLMH3iE826}qb%5?3t8-ya}-cdPM!zDzqy}O&W_+aP<}e)QG?bCt(D1|U8Ip1%Y~0)o zdohFRe!TwODxL$g(n@?Th?IEuWsaEXrj6B#B!zCPfb`y4rmEF#*y)2}-n zQ%Jb$J>zyAfMvMIRcK4?GJQo69&8~ll;EMIpmAz@ZQ*iq>5O-TG`RX~L2iZ<`zbZSP%*P$Ve@5-pMw56l?VXoFv1=Qm+ zBMY%T(On(*OIGX$kQmsjV%czEuyhNj=&N{^jm7IpNfp^j(p)?|Du*9)oMQNdaupB6 z>@<7Uy-|4ngcL5X4e;Ho0%U~-#+sDYApTsqrK$J>qkl-?B;l4 zvF)6MM#3@=$FHFj2PsRKVe>TX3y)BjF7t3yx4vII_RZjI!QF371{!Jx{0vBmT|5Z{LEMOP1mT)F->RCx!m22^;UO<%r?{PRGmR~ z@|=d_noo;zL5nKKAJS-O+K+*6>X5$JEqZJ2F;vw)y2tWlZt5Z?~+j zmRysdc7mIS2Qgb{GiA3Qf53k1K{_~4qKs)(cjSEr>r_-gK;!oU#Fu}xyc78L>eZ{E zKp_^2udi?a@r$!lZ<{ypo+=WjP!<@4Stv+RotHWjy^Z=F;-)q&^6p*8y0qvuEVbHQ z

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 diff --git a/setup.cfg b/setup.cfg index b65f3a887..912fe1186 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = django-debug-toolbar -version = 3.2.1 +version = 3.2.2 description = A configurable set of panels that display various debug information about the current request/response. long_description = file: README.rst long_description_content_type = text/x-rst