diff options
| author | Aymeric Augustin | 2013-11-10 09:58:56 -0800 |
|---|---|---|
| committer | Aymeric Augustin | 2013-11-10 09:58:56 -0800 |
| commit | d889bf25d98e6d3c8dde01b207f9ba5f3d91a806 (patch) | |
| tree | 97967ae5b01c7531954b983606bc78498a128d8a /debug_toolbar/panels/sql.py | |
| parent | 8c7a8ec6529063853c9ff36da72a38841ca5e235 (diff) | |
| parent | f5eaa8ebb0d1ca13aa2453ef88bb1eb223757716 (diff) | |
| download | django-debug-toolbar-d889bf25d98e6d3c8dde01b207f9ba5f3d91a806.tar.bz2 | |
Merge pull request #453 from aaugustin/disable-instrumentation-for-disabled-panels
Disable instrumentation for disabled panels
Diffstat (limited to 'debug_toolbar/panels/sql.py')
| -rw-r--r-- | debug_toolbar/panels/sql.py | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/debug_toolbar/panels/sql.py b/debug_toolbar/panels/sql.py index 1ced049..53b9f53 100644 --- a/debug_toolbar/panels/sql.py +++ b/debug_toolbar/panels/sql.py @@ -4,28 +4,13 @@ import uuid from copy import copy from django.db import connections -from django.db.backends import BaseDatabaseWrapper from django.utils.translation import ugettext_lazy as _, ungettext_lazy as __ from debug_toolbar.forms import SQLSelectForm -from debug_toolbar.middleware import DebugToolbarMiddleware from debug_toolbar.panels import DebugPanel from debug_toolbar.utils import render_stacktrace from debug_toolbar.utils.sql import reformat_sql from debug_toolbar.utils.tracking.db import CursorWrapper -from debug_toolbar.utils.tracking import replace_method - - -@replace_method(BaseDatabaseWrapper, 'cursor') -def cursor(original, self): - result = original(self) - - djdt = DebugToolbarMiddleware.get_current() - if not djdt: - return result - logger = djdt.get_panel(SQLDebugPanel) - - return CursorWrapper(result, self, logger=logger) def get_isolation_level_display(engine, level): @@ -131,6 +116,16 @@ class SQLDebugPanel(DebugPanel): 'SQL Queries from %(count)d connections', count) % dict(count=count) + def enable_instrumentation(self): + # This is thread-safe because database connections are thread-local. + for connection in connections.all(): + old_cursor = connection.cursor + connection.cursor = lambda: CursorWrapper(old_cursor(), connection, self) + + def disable_instrumentation(self): + for connection in connections.all(): + del connection.cursor + def process_response(self, request, response): if self._queries: width_ratio_tally = 0 |
