diff options
Diffstat (limited to 'libpathod/app.py')
-rw-r--r-- | libpathod/app.py | 116 |
1 files changed, 44 insertions, 72 deletions
diff --git a/libpathod/app.py b/libpathod/app.py index 2a738b58..c0555422 100644 --- a/libpathod/app.py +++ b/libpathod/app.py @@ -1,6 +1,6 @@ -import logging -from flask import Flask, jsonify, render_template -import version +import logging, pprint, cStringIO +from flask import Flask, jsonify, render_template, request +import version, rparse logging.basicConfig(level="DEBUG") app = Flask(__name__) @@ -29,75 +29,47 @@ def api_clear_log(): @app.route('/') @app.route('/index.html') def index(): - return render_template("index.html", name="index", section="main") + return render_template("index.html", section="main") + + +@app.route('/help') +def help(): + return render_template("help.html", section="help") + + +@app.route('/log') +def log(): + return render_template("log.html", section="log", log=app.config["pathod"].get_log()) +@app.route('/log/<int:lid>') +def onelog(lid): + l = pprint.pformat(app.config["pathod"].log_by_id(int(lid))) + return render_template("onelog.html", section="log", alog=l, lid=lid) -""" -class _Page(tornado.web.RequestHandler): - def render(self, name, **kwargs): - tornado.web.RequestHandler.render(self, name + ".html", **kwargs) - - -class Index(_Page): - name = "index" - section = "main" - def get(self): - self.render(self.name, section=self.section, spec="") - - -class Preview(_Page): - name = "preview" - section = "main" - SANITY = 1024*1024 - def get(self): - spec = self.get_argument("spec", None) - args = dict( - spec = spec, - section = self.section, - syntaxerror = None, - error = None - ) - try: - r = rparse.parse(self.application.settings, spec) - except rparse.ParseException, v: - args["syntaxerror"] = str(v) - args["marked"] = v.marked() - return self.render(self.name, **args) - if r.length() > self.SANITY: - error = "Refusing to preview a response of %s bytes. This is for your own good."%r.length() - args["error"] = error - else: - d = utils.DummyRequest() - r.serve(d) - args["output"] = d.getvalue() - self.render(self.name, **args) - - -class Help(_Page): - name = "help" - section = "help" - def get(self): - self.render(self.name, section=self.section) - - -class Log(_Page): - name = "log" - section = "log" - def get(self): - self.render(self.name, section=self.section, log=self.application.log) - - -class OneLog(_Page): - name = "onelog" - section = "log" - def get(self, lid): - l = pprint.pformat(self.application.log_by_id(int(lid))) - self.render(self.name, section=self.section, alog=l, lid=lid) - - -class ClearLog(_Page): - def post(self): - self.application.clear_logs() - self.redirect("/log") -""" + + +SANITY = 1024*1024 +@app.route('/preview') +def preview(): + spec = request.args["spec"] + args = dict( + spec = spec, + section = "main", + syntaxerror = None, + error = None + ) + try: + r = rparse.parse(app.config["pathod"].request_settings, spec) + except rparse.ParseException, v: + args["syntaxerror"] = str(v) + args["marked"] = v.marked() + return render_template("preview.html", **args) + if r.length() > SANITY: + error = "Refusing to preview a response of %s bytes. This is for your own good."%r.length() + args["error"] = error + else: + s = cStringIO.StringIO() + r.serve(s) + args["output"] = s.getvalue() + return render_template("preview.html", **args) |