def adminReplPost(handler, p_code): def makeStr(v): if isinstance(v, list): return "<ul>%s</ul>" % ''.join("<li>%s</li>" % item for item in v) return str(v) handler.wrappers = False p_code = re.sub('^!([A-Za-z]+)$', 'from \\1 import \\1', p_code) match = re.match('!([A-Za-z ]+)$', p_code) if match: parts = match.group(1).split(' ') res = [] for part in parts: w = ResponseWriter() adminReplPost(handler, "!%s" % part) res.append(fromJS(w.done())) print toJS(res) done() if 'admin-repl' not in handler.session: print toJS({'code': highlightCode(p_code), 'stdout': '', 'stderr': ['Session Expired', 'REPL session no longer exists'], 'vars': {}}) done() writer = ResponseWriter() try: Event.repl(handler, p_code) exec compile(p_code, '<admin repl>', 'single') in handler.session['admin-repl'] stderr = '' except: stderr = map(str, [sys.exc_info()[0].__name__, sys.exc_info()[1]]) stdout = writer.done() vars = sorted([(k, pformat(v), makeStr(v)) for (k, v) in handler.session['admin-repl'].items() if k != '__builtins__'], lambda (k1, v1, vs1), (k2, v2, vs2): cmp(k1, k2)) print toJS({'code': highlightCode(p_code), 'stdout': stdout, 'stderr': stderr, 'vars': vars})