diff options
Diffstat (limited to 'debug_toolbar')
5 files changed, 20 insertions, 7 deletions
| diff --git a/debug_toolbar/templates/debug_toolbar/panels/sql.html b/debug_toolbar/templates/debug_toolbar/panels/sql.html index f904e15..f6f231c 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/sql.html +++ b/debug_toolbar/templates/debug_toolbar/panels/sql.html @@ -42,10 +42,10 @@  					<td class="actions">  					{% if query.params %}  						{% if query.is_select %} -							<a class="remoteCall" href="/__debug__/sql_select/?sql={{ query.raw_sql|urlencode }}&params={{ query.params|urlencode }}&duration={{ query.duration|floatformat:"2"|urlencode }}&hash={{ query.hash }}">Sel</a> -							<a class="remoteCall" href="/__debug__/sql_explain/?sql={{ query.raw_sql|urlencode }}&params={{ query.params|urlencode }}&duration={{ query.duration|floatformat:"2"|urlencode }}&hash={{ query.hash }}">Expl</a> +							<a class="remoteCall" href="/__debug__/sql_select/?sql={{ query.raw_sql|urlencode }}&params={{ query.params|urlencode }}&duration={{ query.duration|floatformat:"2"|urlencode }}&hash={{ query.hash }}&alias={{ query.alias|urlencode }}">Sel</a> +							<a class="remoteCall" href="/__debug__/sql_explain/?sql={{ query.raw_sql|urlencode }}&params={{ query.params|urlencode }}&duration={{ query.duration|floatformat:"2"|urlencode }}&hash={{ query.hash }}&alias={{ query.alias|urlencode }}">Expl</a>  							{% ifequal query.engine 'mysql' %} -								<a class="remoteCall" href="/__debug__/sql_profile/?sql={{ query.raw_sql|urlencode }}&params={{ query.params|urlencode }}&duration={{ query.duration|floatformat:"2"|urlencode }}&hash={{ query.hash }}">Prof</a> +								<a class="remoteCall" href="/__debug__/sql_profile/?sql={{ query.raw_sql|urlencode }}&params={{ query.params|urlencode }}&duration={{ query.duration|floatformat:"2"|urlencode }}&hash={{ query.hash }}&alias={{ query.alias|urlencode }}">Prof</a>  							{% endifequal %}  						{% endif %}  					{% endif %} diff --git a/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html b/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html index abd4a20..0d47ada 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html +++ b/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html @@ -10,6 +10,8 @@  			<dd>{{ sql|safe }}</dd>  			<dt>{% trans "Time" %}</dt>  			<dd>{{ duration }} ms</dd> +			<dt>{% trans "Database" %}</dt> +			<dd>{{ alias }}</dd>  		</dl>  		<table class="djSqlExplain">  			<thead> diff --git a/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html b/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html index 5c5724e..c0d90b4 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html +++ b/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html @@ -11,6 +11,8 @@  				<dd>{{ sql|safe }}</dd>  				<dt>{% trans "Time" %}</dt>  				<dd>{{ duration }} ms</dd> +				<dt>{% trans "Database" %}</dt> +				<dd>{{ alias }}</dd>  			</dl>  			<table class="djSqlProfile">  				<thead> diff --git a/debug_toolbar/templates/debug_toolbar/panels/sql_select.html b/debug_toolbar/templates/debug_toolbar/panels/sql_select.html index db5199c..7a57c75 100644 --- a/debug_toolbar/templates/debug_toolbar/panels/sql_select.html +++ b/debug_toolbar/templates/debug_toolbar/panels/sql_select.html @@ -10,6 +10,8 @@  			<dd>{{ sql|safe }}</dd>  			<dt>{% trans "Time" %}</dt>  			<dd>{{ duration }} ms</dd> +			<dt>{% trans "Database" %}</dt> +			<dd>{{ alias }}</dd>  		</dl>  		{% if result %}  		<table class="djSqlSelect"> diff --git a/debug_toolbar/views.py b/debug_toolbar/views.py index bc6cdb3..e0c80aa 100644 --- a/debug_toolbar/views.py +++ b/debug_toolbar/views.py @@ -7,12 +7,13 @@ views in any other way is generally not advised.  import os  import django.views.static  from django.conf import settings -from django.db import connection  from django.http import HttpResponseBadRequest  from django.shortcuts import render_to_response  from django.utils import simplejson  from django.utils.hashcompat import sha_constructor +from debug_toolbar.utils.compat.db import connections +  class InvalidSQLError(Exception):      def __init__(self, value):          self.value = value @@ -39,12 +40,13 @@ def sql_select(request):      from debug_toolbar.panels.sql import reformat_sql      sql = request.GET.get('sql', '')      params = request.GET.get('params', '') +    alias = request.GET.get('alias', 'default')      hash = sha_constructor(settings.SECRET_KEY + sql + params).hexdigest()      if hash != request.GET.get('hash', ''):          return HttpResponseBadRequest('Tamper alert') # SQL Tampering alert      if sql.lower().strip().startswith('select'):          params = simplejson.loads(params) -        cursor = connection.cursor() +        cursor = connections[alias].cursor()          cursor.execute(sql, params)          headers = [d[0] for d in cursor.description]          result = cursor.fetchall() @@ -54,6 +56,7 @@ def sql_select(request):              'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)),              'duration': request.GET.get('duration', 0.0),              'headers': headers, +            'alias': alias,          }          return render_to_response('debug_toolbar/panels/sql_select.html', context)      raise InvalidSQLError("Only 'select' queries are allowed.") @@ -71,12 +74,13 @@ def sql_explain(request):      from debug_toolbar.panels.sql import reformat_sql      sql = request.GET.get('sql', '')      params = request.GET.get('params', '') +    alias = request.GET.get('alias', 'default')      hash = sha_constructor(settings.SECRET_KEY + sql + params).hexdigest()      if hash != request.GET.get('hash', ''):          return HttpResponseBadRequest('Tamper alert') # SQL Tampering alert      if sql.lower().strip().startswith('select'):          params = simplejson.loads(params) -        cursor = connection.cursor() +        cursor = connections[alias].cursor()          if settings.DATABASE_ENGINE == "sqlite3":              # SQLite's EXPLAIN dumps the low-level opcodes generated for a query; @@ -94,6 +98,7 @@ def sql_explain(request):              'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)),              'duration': request.GET.get('duration', 0.0),              'headers': headers, +            'alias': alias,          }          return render_to_response('debug_toolbar/panels/sql_explain.html', context)      raise InvalidSQLError("Only 'select' queries are allowed.") @@ -111,12 +116,13 @@ def sql_profile(request):      from debug_toolbar.panels.sql import reformat_sql      sql = request.GET.get('sql', '')      params = request.GET.get('params', '') +    alias = request.GET.get('alias', 'default')      hash = sha_constructor(settings.SECRET_KEY + sql + params).hexdigest()      if hash != request.GET.get('hash', ''):          return HttpResponseBadRequest('Tamper alert') # SQL Tampering alert      if sql.lower().strip().startswith('select'):          params = simplejson.loads(params) -        cursor = connection.cursor() +        cursor = connections[alias].cursor()          result = None          headers = None          result_error = None @@ -137,6 +143,7 @@ def sql_profile(request):              'sql': reformat_sql(cursor.db.ops.last_executed_query(cursor, sql, params)),              'duration': request.GET.get('duration', 0.0),              'headers': headers, +            'alias': alias,          }          return render_to_response('debug_toolbar/panels/sql_profile.html', context)      raise InvalidSQLError("Only 'select' queries are allowed.") | 
