aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/handlers.py
blob: ebf85b03fbceafc4cab955e5c486cc412fc4a66f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import urllib
import tornado.web
import rparse

class _Page(tornado.web.RequestHandler):
    def render(self, name, **kwargs):
        b = self.application.templates.load(name).generate(**kwargs)
        self.write(b)


class Index(_Page):
    def get(self):
        self.render("index.html", section="main")


class Preview(_Page):
    def get(self):
        self.render("index.html", section="main")


class Help(_Page):
    def get(self):
        self.render("help.html", section="help")


class Log(_Page):
    def get(self):
        self.render("log.html", section="log")


class Pathod(object):
    anchor = "/p/"
    def __init__(self, application, request, **settings):
        self.application, self.request, self.settings = application, request, settings
        spec = urllib.unquote(self.request.uri)[len(self.anchor):]
        try:
            self.response = rparse.parse(self.settings, spec)
        except rparse.ParseException, v:
            self.response = rparse.InternalResponse(
                800,
                "Error parsing response spec: %s\n"%v.msg + v.marked()
            )

    def _execute(self, transforms, *args, **kwargs):
        self.response.render(self.request)