Source code for wpull.debug

# encoding=utf-8
'''Debugging utilities.'''
import html
import io
import sys
import traceback

import tornado.web


[docs]class DebugConsoleHandler(tornado.web.RequestHandler): TEMPLATE = '''<html> <style> #commandbox {{ width: 100%; }} </style> <body> <p>Welcome to DEBUG CONSOLE!</p> <p><tt>Builder()</tt> instance at <tt>wpull_builder</tt>.</p> <form method="post"> <input id="commandbox" name="command" value="{command}"> <input type="submit" value="Execute"> </form> <pre>{output}</pre> </body> </html> '''
[docs] def get(self): self.write( self.TEMPLATE.format(output='(ready)', command='') .encode('utf-8'))
[docs] def post(self): command = self.get_argument('command', strip=False) sys.stdout = io.StringIO() try: exec( command, {'wpull_builder': self.application.settings['builder']} ) result = sys.stdout.getvalue() except Exception: result = traceback.format_exc() finally: sys.stdout = sys.__stdout__ self.write( self.TEMPLATE.format(output=result, command=html.escape(command)) .encode('utf-8'))