Created
February 29, 2020 08:39
-
-
Save ulgens/e166ad31ec71e6b1f0777a8d81ce48ae to your computer and use it in GitHub Desktop.
GQL Debug Toolbar Fix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
from debug_toolbar.middleware import DebugToolbarMiddleware as BaseMiddleware | |
from debug_toolbar.middleware import get_show_toolbar | |
from debug_toolbar.toolbar import DebugToolbar | |
from django.template.loader import render_to_string | |
from graphiql_debug_toolbar.middleware import get_payload, set_content_length | |
from graphiql_debug_toolbar.serializers import CallableJSONEncoder | |
__all__ = ['DebugToolbarMiddleware'] | |
_HTML_TYPES = ("text/html", "application/xhtml+xml", "text/plain") | |
class DebugToolbarMiddleware(BaseMiddleware): | |
def __call__(self, request): | |
if not get_show_toolbar()(request) or request.is_ajax(): | |
return self.get_response(request) | |
content_type = request.content_type | |
html_type = content_type in _HTML_TYPES | |
if html_type: | |
response = super().__call__(request) | |
template = render_to_string('graphiql_debug_toolbar/base.html') | |
response.write(template) | |
set_content_length(response) | |
return response | |
toolbar = DebugToolbar(request, self.get_response) | |
for panel in toolbar.enabled_panels: | |
panel.enable_instrumentation() | |
try: | |
response = toolbar.process_request(request) | |
finally: | |
for panel in reversed(toolbar.enabled_panels): | |
panel.disable_instrumentation() | |
response = self.generate_server_timing_header( | |
response, | |
toolbar.enabled_panels, | |
) | |
payload = get_payload(request, response, toolbar) | |
response.content = json.dumps(payload, cls=CallableJSONEncoder) | |
set_content_length(response) | |
return response |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks!
It was useful for me.