Source code for debug_toolbar_force.middleware

import json

from django.http import HttpResponse
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import  smart_text

from nine.versions import DJANGO_GTE_1_10

from .settings import GET_PARAM_NAME_FORCE, GET_PARAM_NAME_NON_AJAX

__title__ = 'debug_toolbar_force.middleware'
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__copyright__ = '2016-2019 Artur Barseghyan'
__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
__all__ = ('ForceDebugToolbarMiddleware',)


[docs]class ForceDebugToolbarMiddleware(object): """The `django-debug-toolbar` for views that do not return HTML.""" if DJANGO_GTE_1_10: def __init__(self, get_response=None): self.get_response = get_response super(ForceDebugToolbarMiddleware, self).__init__() def __call__(self, request): response = None if hasattr(self, 'process_request'): response = self.process_request(request) if not response: response = self.get_response(request) if hasattr(self, 'process_response'): response = self.process_response(request, response) return response
[docs] def process_request(self, request): """Process request. If `GET_PARAM_NAME_NON_AJAX` is present in request.GET, set request.is_ajax to False. """ non_ajax = True if GET_PARAM_NAME_NON_AJAX in request.GET else False if non_ajax: request.is_ajax = False return None
[docs] def process_response(self, request, response): """Process response. If `GET_PARAM_NAME_FORCE` is present in request.GET wrap response in <html><body>{{ response }}</body></html>. """ debug = True if GET_PARAM_NAME_FORCE in request.GET else False if debug: if response['Content-Type'] == 'application/octet-stream': new_content = '<html><body>' \ '{}: {}</body></html>' \ ''.format(_("Binary Data, Length"), len(response.content)) response = HttpResponse(new_content) elif response['Content-Type'] != 'text/html': content = smart_text(response.content) response = HttpResponse(u'<html><body>{}' u'</body></html>'.format(content)) return response