# HG changeset patch # User Laurent Peuch # Date 1564539380 -7200 # Node ID d5ae5abd0876e91f1d935113befe32b56dfe5f80 # Parent ec834074ea25983246cb5d0a64d36f611c3dd9cd [debug-toolbar/rql] add RQL panel Closes #17219673 diff -r ec834074ea25 -r d5ae5abd0876 cubicweb/pyramid/debug_toolbar_templates/rql.dbtmako --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cubicweb/pyramid/debug_toolbar_templates/rql.dbtmako Wed Jul 31 04:16:20 2019 +0200 @@ -0,0 +1,119 @@ + + + + + + + + + + + + + % for i, query in enumerate(rql_queries): + + + + + % if len(str(query["result"])) > 50: + + % else: + + % endif + + + + + + + + % endfor + +
#Time (ms)RQLResultDescriptionStack
${1 + i}${'%.2f' % query["time"]}${highlight(query["rql"], "RQL") | n}
${highlight(query["args"], "python3") | n}
+ + ${highlight(str(query["result"])[:50], "python3") | n}... + + + + + ${highlight(query["result"], "python3") | n}${highlight(query["description"], "python3") | n} + show stack + +
+ + + + diff -r ec834074ea25 -r d5ae5abd0876 cubicweb/pyramid/debugtoolbar_panels.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cubicweb/pyramid/debugtoolbar_panels.py Wed Jul 31 04:16:20 2019 +0200 @@ -0,0 +1,56 @@ +# copyright 2019 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr +# +# This file is part of CubicWeb. +# +# CubicWeb is free software: you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation, either version 2.1 of the License, or (at your option) +# any later version. +# +# CubicWeb is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License along +# with CubicWeb. If not, see . + +from pyramid_debugtoolbar.panels import DebugPanel +from cubicweb.debug import subscribe_to_debug_channel, unsubscribe_to_debug_channel +from cubicweb.misc.source_highlight import highlight_html, generate_css + + +class RQLDebugPanel(DebugPanel): + """ + CubicWeb RQL debug panel + """ + name = 'RQL' + title = 'RQL queries' + nav_title = 'RQL' + nav_subtitle_style = 'progress-bar-info' + + has_content = True + template = 'cubicweb.pyramid:debug_toolbar_templates/rql.dbtmako' + + def __init__(self, request): + self.data = { + 'rql_queries': [], + 'highlight': highlight_html, + 'generate_css': generate_css, + } + subscribe_to_debug_channel("rql", self.collect_rql_queries) + + @property + def nav_subtitle(self): + return '%d' % len(self.data['rql_queries']) + + def collect_rql_queries(self, rql_query): + self.data["rql_queries"].append(rql_query) + + def process_response(self, response): + unsubscribe_to_debug_channel("rql", self.collect_rql_queries) + + +def includeme(config): + config.add_debugtoolbar_panel(RQLDebugPanel)