summaryrefslogtreecommitdiff
path: root/controller.py
blob: f24b435fd07839de82c338775d7cef77980d7cde (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
from __future__ import with_statement

import web
from helper import appdir
from renderer import render

class Page:
    """
    All the general and simple pages.
    """
    def GET(self, name = '/'):
        web.header("Content-Type", "text/html;charset=utf-8", unique = True)
        if not name or name == '/': name = 'index'
        return render(name)

class Redirect:
    """
    Redirecting to another page.
    """

    redirects = {}
    with open(appdir("redirects")) as f:
        for line in f:
            name, url = line.split()
            redirects[name.strip()] = url.strip()

    def GET(self, name):
        if name[-1] == "/": name = name[:-1]
        if name not in self.redirects:
            raise web.TempRedirect("/")
        else:
            raise web.Found(self.redirects[name], absolute = True)

def FourOhFour(page="?"):
    """
    404 error page.
    """
    return web.notfound(render("404", level = "", page = page))