]> git.ipfire.org Git - ipfire.org.git/blob - www/webapp/handlers.py
Integrate boot.ipfire.org application with the main webapp.
[ipfire.org.git] / www / webapp / handlers.py
1 #!/usr/bin/python
2
3 #import httplib
4 #import logging
5 #import markdown2
6 import os
7 #import random
8 #import re
9 #import socket
10 #import time
11 #import tornado.database
12 #import tornado.locale
13 import tornado.web
14 #import unicodedata
15
16 import backend
17
18 from handlers_admin import *
19 from handlers_base import *
20 from handlers_boot import *
21 from handlers_download import *
22 from handlers_iuse import *
23 from handlers_mirrors import *
24 from handlers_news import *
25 from handlers_nopaste import *
26 from handlers_planet import *
27 from handlers_rss import *
28 from handlers_stasy import *
29 from handlers_tracker import *
30
31
32 class RootHandler(BaseHandler):
33 """
34 This handler redirects any request directly to /.
35
36 It can be used to be compatible with some ancient index urls.
37 """
38 def get(self, *args):
39 self.redirect("/")
40
41
42 class LangCompatHandler(BaseHandler):
43 """
44 Redirect links in the old format to current site:
45
46 E.g. /en/index -> /index
47 """
48 def get(self, lang, page):
49 self.redirect("/%s" % page)
50
51
52 class IndexHandler(BaseHandler):
53 rss_url = "/news.rss"
54
55 """
56 This handler displays the welcome page.
57 """
58 def get(self):
59 # Get a list of the most recent news items and put them on the page.
60 latest_news = self.news.get_latest(limit=1, locale=self.locale)
61 latest_planets = self.planet.get_entries(limit=1)
62
63 return self.render("index.html", latest_news=latest_news,
64 latest_planets=latest_planets)
65
66
67 class StaticHandler(BaseHandler):
68 """
69 This handler shows the files that are in plain html format.
70 """
71 @property
72 def static_path(self):
73 return os.path.join(self.application.settings["template_path"], "static")
74
75 @property
76 def static_files(self):
77 for dir, subdirs, files in os.walk(self.static_path):
78 dir = dir[len(self.static_path) + 1:]
79 for file in files:
80 if not file.endswith(".html"):
81 continue
82 yield os.path.join(dir, file)
83
84 def get(self, name=None):
85 name = "%s.html" % name
86
87 if not name in self.static_files:
88 raise tornado.web.HTTPError(404)
89
90 self.render("static/%s" % name, lang=self.locale.code[:2])