Commit 03e1cc93 authored by Mounir Messelmeni's avatar Mounir Messelmeni Committed by Tim Graham
Browse files

Fixed #26145 -- Made debug context processor return queries for all databases.

parent 9e3f1417
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ of a DjangoTemplates backend and used by RequestContext.

from __future__ import unicode_literals

import itertools

from django.conf import settings
from django.middleware.csrf import get_token
from django.utils.encoding import smart_text
@@ -40,10 +42,13 @@ def debug(request):
    context_extras = {}
    if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
        context_extras['debug'] = True
        from django.db import connection
        from django.db import connections
        # Return a lazy reference that computes connection.queries on access,
        # to ensure it contains queries triggered after this function runs.
        context_extras['sql_queries'] = lazy(lambda: connection.queries, list)
        context_extras['sql_queries'] = lazy(
            lambda: list(itertools.chain(*[connections[x].queries for x in connections])),
            list
        )
    return context_extras


+7 −2
Original line number Diff line number Diff line
@@ -699,8 +699,13 @@ the request's IP address (``request.META['REMOTE_ADDR']``) is in the
  you're in :setting:`DEBUG` mode.
* ``sql_queries`` -- A list of ``{'sql': ..., 'time': ...}`` dictionaries,
  representing every SQL query that has happened so far during the request
  and how long it took. The list is in order by query and lazily generated
  on access.
  and how long it took. The list is in order by database alias and then by
  query. It's lazily generated on access.

.. versionchanged:: 1.10

    In older versions, only the queries for the default database alias were
    included.

``django.template.context_processors.i18n``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3 −0
Original line number Diff line number Diff line
@@ -414,6 +414,9 @@ Templates
* Allowed :tfilter:`dictsort` to order a list of lists by an element at a
  specified index.

* The :func:`~django.template.context_processors.debug` context processor
  contains queries for all database aliases instead of only the default alias.

Tests
~~~~~

+4 −0
Original line number Diff line number Diff line
@@ -12,4 +12,8 @@ Second query list: {{ sql_queries|length }}

Third query list: {{ sql_queries|length }}

{% for obj in other_debug_objects.all %}{{ obj }}{% endfor %}

Fourth query list: {{ sql_queries|length }}

{% endif %}
+2 −0
Original line number Diff line number Diff line
@@ -87,3 +87,5 @@ class DebugContextProcessorTests(TestCase):
        self.assertContains(response, 'Second query list: 1')
        # Check we have not actually memoized connection.queries
        self.assertContains(response, 'Third query list: 2')
        # Check queries for DB connection 'other'
        self.assertContains(response, 'Fourth query list: 3')
Loading