]>
git.ipfire.org Git - ipfire.org.git/blob - webapp/handlers_base.py
3 from __future__
import division
12 units
= ["B", "k", "M", "G"]
15 while b
>= 1024 and unit_pointer
< len(units
):
19 return "%.1f%s" % (b
, units
[unit_pointer
])
22 class BaseHandler(tornado
.web
.RequestHandler
):
25 def get_account(self
, uid
):
26 # Find the name of the author
27 return self
.accounts
.find(uid
)
29 def get_query_locale(self
):
30 locale
= self
.get_argument("locale", None)
35 return tornado
.locale
.get(locale
)
38 locale
= self
.get_query_locale()
40 self
.set_cookie("locale", locale
.code
)
42 def get_user_locale(self
):
43 # The planet is always in english.
44 if self
.request
.host
== "planet.ipfire.org":
45 return tornado
.locale
.get("en_US")
47 # Get the locale from the query.
48 locale
= self
.get_query_locale()
52 # Read the locale from the cookies.
53 locale
= self
.get_cookie("locale", None)
55 return tornado
.locale
.get(locale
)
57 # Otherwise take the browser locale.
58 return self
.get_browser_locale()
61 def render_args(self
):
62 today
= datetime
.date
.today()
65 "format_size" : format_size
,
66 "hostname" : self
.request
.host
,
67 "lang" : self
.locale
.code
[:2],
68 "rss_url" : self
.rss_url
,
72 def render(self
, *args
, **_kwargs
):
73 kwargs
= self
.render_args
74 kwargs
.update(_kwargs
)
75 tornado
.web
.RequestHandler
.render(self
, *args
, **kwargs
)
77 def render_string(self
, *args
, **_kwargs
):
78 kwargs
= self
.render_args
79 kwargs
.update(_kwargs
)
80 return tornado
.web
.RequestHandler
.render_string(self
, *args
, **kwargs
)
82 def write_error(self
, status_code
, **kwargs
):
83 if status_code
in (404, 500):
86 "exception" : kwargs
.get("exception", None),
87 "message" : httplib
.responses
[status_code
],
89 self
.render("error-%s.html" % status_code
, **render_args
)
91 return tornado
.web
.RequestHandler
.write_error(self
, status_code
, **kwargs
)
93 def static_url(self
, path
, static
=True):
94 ret
= tornado
.web
.RequestHandler
.static_url(self
, path
)
96 if self
.settings
.get("debug", False):
99 elif self
.request
.host
== "admin.ipfire.org":
103 return "http://static.ipfire.org%s" % ret
107 def get_remote_ip(self
):
108 # Fix for clients behind a proxy that sends "X-Forwarded-For".
109 ip_addr
= self
.request
.remote_ip
.split(", ")
112 ip_addr
= ip_addr
[-1]
116 def get_remote_location(self
):
117 if not hasattr(self
, "__remote_location"):
118 remote_ip
= self
.get_remote_ip()
120 self
.__remote
_location
= self
.geoip
.get_location(remote_ip
)
122 return self
.__remote
_location
126 return self
.application
.backend
130 return self
.backend
.db
133 def advertisements(self
):
134 return self
.backend
.advertisements
138 return self
.backend
.accounts
142 return self
.backend
.downloads
146 return self
.backend
.iuse
150 return self
.backend
.memcache
154 return self
.backend
.mirrors
158 return self
.backend
.netboot
162 return self
.backend
.news
166 return self
.backend
.settings
170 return self
.backend
.releases
174 return self
.backend
.geoip
178 return self
.backend
.stasy
182 return self
.backend
.tracker
186 return self
.backend
.planet
190 return self
.backend
.wishlist