]> git.ipfire.org Git - ipfire.org.git/blame - www/webapp/handlers_base.py
Add netboot feature.
[ipfire.org.git] / www / webapp / handlers_base.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
3import httplib
4import time
5import tornado.locale
6import tornado.web
7
8import backend
9
10class BaseHandler(tornado.web.RequestHandler):
11 def get_account(self, uid):
12 # Find the name of the author
13 return self.accounts.find(uid)
14
15 def get_user_locale(self):
16 DEFAULT_LOCALE = tornado.locale.get("en_US")
17 ALLOWED_LOCALES = \
18 [tornado.locale.get(l) for l in tornado.locale.get_supported_locales(None)]
19
20 # One can append "?locale=de" to mostly and URI on the site and
21 # another output that guessed.
22 locale = self.get_argument("locale", None)
23 if locale:
24 locale = tornado.locale.get(locale)
25 for locale in ALLOWED_LOCALES:
26 return locale
27
28 # If no locale was provided we guess what the browser sends us
29 locale = self.get_browser_locale()
30 if locale in ALLOWED_LOCALES:
31 return locale
32
33 # If no one of the cases above worked we use our default locale
34 return DEFAULT_LOCALE
35
36 @property
37 def render_args(self):
38 return {
39 "hostname" : self.request.host,
40 "lang" : self.locale.code[:2],
41 "year" : time.strftime("%Y"),
42 }
43
44 def render(self, *args, **kwargs):
45 kwargs.update(self.render_args)
46 tornado.web.RequestHandler.render(self, *args, **kwargs)
47
48 def render_string(self, *args, **kwargs):
49 kwargs.update(self.render_args)
50 return tornado.web.RequestHandler.render_string(self, *args, **kwargs)
51
52 def get_error_html(self, status_code, **kwargs):
53 if status_code in (404, 500):
54 render_args = ({
55 "code" : status_code,
56 "exception" : kwargs.get("exception", None),
57 "message" : httplib.responses[status_code],
58 })
59 return self.render_string("error-%s.html" % status_code, **render_args)
60 else:
61 return tornado.web.RequestHandler.get_error_html(self, status_code, **kwargs)
62
63 @property
64 def accounts(self):
65 return backend.Accounts()
66
67 @property
68 def banners(self):
69 return backend.Banners()
70
71 @property
72 def mirrors(self):
73 return backend.Mirrors()
74
75 @property
76 def news(self):
77 return backend.News()
78
79 @property
80 def config(self):
81 return backend.Config()
82
83 @property
84 def releases(self):
85 return backend.Releases()
86
87 @property
88 def banners(self):
89 return backend.Banners()
90
91 @property
92 def geoip(self):
93 return backend.GeoIP()
94
95 @property
96 def tracker(self):
97 return backend.Tracker()