]>
git.ipfire.org Git - pbs.git/blob - src/web/base.py
9 from .. import __version__
11 from ..decorators
import *
13 class BaseHandler(tornado
.web
.RequestHandler
):
16 return self
.application
.backend
20 return self
.backend
.db
24 # Get the session from the cookie
25 session_id
= self
.get_cookie("session_id", None)
27 # Search for a valid database session
29 return self
.backend
.sessions
.get(session_id
)
31 def get_current_user(self
):
33 return self
.session
.user
35 def get_user_locale(self
):
36 # Get the locale from the user settings
38 return self
.current_user
.locale
40 # If no locale was provided, we take what ever the browser requested
41 return self
.get_browser_locale()
44 def current_address(self
):
46 Returns the IP address the request came from.
48 return self
.request
.headers
.get("X-Real-IP") or self
.request
.remote_ip
53 Returns the HTTP user agent
55 return self
.request
.headers
.get("User-Agent", None)
57 def format_date(self
, date
, relative
=True, shorter
=False, full_format
=False):
58 return self
.locale
.format_date(date
, relative
=relative
,
59 shorter
=shorter
, full_format
=full_format
)
61 def get_template_namespace(self
):
62 ns
= tornado
.web
.RequestHandler
.get_template_namespace(self
)
65 "backend" : self
.backend
,
66 "hostname" : self
.request
.host
,
67 "format_date" : self
.format_date
,
68 "format_size" : misc
.format_size
,
69 "friendly_time" : misc
.friendly_time
,
70 "lang" : self
.locale
.code
[:2],
71 "session" : self
.session
,
72 "version" : __version__
,
73 "year" : time
.strftime("%Y"),
78 def write_error(self
, status_code
, exc_info
=None, **kwargs
):
79 if status_code
in (400, 403, 404):
80 error_document
= "errors/error-%s.html" % status_code
82 error_document
= "errors/error.html"
85 status_message
= http
.client
.responses
[status_code
]
89 # Collect more information about the exception if possible.
91 tb
= traceback
.format_exception(*exc_info
)
95 self
.render(error_document
, status_code
=status_code
,
96 status_message
=status_message
, exc_info
=exc_info
, tb
=tb
, **kwargs
)
100 def get_argument_bool(self
, name
):
101 arg
= self
.get_argument(name
, default
=None)
105 def get_argument_int(self
, *args
, **kwargs
):
106 arg
= self
.get_argument(*args
, **kwargs
)
114 except (TypeError, ValueError):
115 raise tornado
.web
.HTTPError(400, "%s is not an integer" % arg
)
117 def get_argument_distro(self
, *args
, **kwargs
):
118 slug
= self
.get_argument(*args
, **kwargs
)
121 return self
.backend
.distros
.get_by_slug(slug
)
123 def get_argument_user(self
, *args
, **kwargs
):
124 name
= self
.get_argument(*args
, **kwargs
)
127 return self
.backend
.users
.get_by_name(name
)