]>
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_user_locale(self
):
30 # The planet is always in english.
31 if self
.request
.host
== "planet.ipfire.org":
32 return tornado
.locale
.get("en_US")
34 # Otherwise take the browser locale.
35 return self
.get_browser_locale()
38 def render_args(self
):
39 today
= datetime
.date
.today()
42 "format_size" : format_size
,
43 "hostname" : self
.request
.host
,
44 "lang" : self
.locale
.code
[:2],
45 "rss_url" : self
.rss_url
,
49 def render(self
, *args
, **_kwargs
):
50 kwargs
= self
.render_args
51 kwargs
.update(_kwargs
)
52 tornado
.web
.RequestHandler
.render(self
, *args
, **kwargs
)
54 def render_string(self
, *args
, **_kwargs
):
55 kwargs
= self
.render_args
56 kwargs
.update(_kwargs
)
57 return tornado
.web
.RequestHandler
.render_string(self
, *args
, **kwargs
)
59 def write_error(self
, status_code
, **kwargs
):
60 if status_code
in (404, 500):
63 "exception" : kwargs
.get("exception", None),
64 "message" : httplib
.responses
[status_code
],
66 self
.render("error-%s.html" % status_code
, **render_args
)
68 return tornado
.web
.RequestHandler
.write_error(self
, status_code
, **kwargs
)
70 def static_url(self
, path
, static
=True):
71 ret
= tornado
.web
.RequestHandler
.static_url(self
, path
)
73 if self
.settings
.get("debug", False):
76 elif self
.request
.host
== "admin.ipfire.org":
80 return "http://static.ipfire.org%s" % ret
84 def get_remote_ip(self
):
85 # Fix for clients behind a proxy that sends "X-Forwarded-For".
86 ip_addr
= self
.request
.remote_ip
.split(", ")
93 def get_remote_location(self
):
94 if not hasattr(self
, "__remote_location"):
95 remote_ip
= self
.get_remote_ip()
97 self
.__remote
_location
= self
.geoip
.get_location(remote_ip
)
99 return self
.__remote
_location
103 return self
.application
.backend
107 return self
.backend
.db
110 def advertisements(self
):
111 return self
.backend
.advertisements
115 return self
.backend
.accounts
119 return self
.backend
.downloads
123 return self
.backend
.iuse
127 return self
.backend
.memcache
131 return self
.backend
.mirrors
135 return self
.backend
.netboot
139 return self
.backend
.news
143 return self
.backend
.settings
147 return self
.backend
.releases
151 return self
.backend
.geoip
155 return self
.backend
.stasy
159 return self
.backend
.tracker
163 return self
.backend
.planet
167 return self
.backend
.wishlist