Source code for magpie.ui.home.views
from pyramid.httpexceptions import status_map
from pyramid.renderers import render_to_response
from pyramid.security import NO_PERMISSION_REQUIRED
from pyramid.view import view_config
from magpie.ui.utils import BaseViews
from magpie.utils import get_json
[docs]
class HomeViews(BaseViews):
@view_config(route_name="home", renderer="templates/home.mako", permission=NO_PERMISSION_REQUIRED)
@view_config(route_name="home_ui", renderer="templates/home.mako", permission=NO_PERMISSION_REQUIRED)
[docs]
def home_view(self):
return self.add_template_data()
@view_config(route_name="error", permission=NO_PERMISSION_REQUIRED)
[docs]
def error_view(self):
"""
Generates the wrapped API error view for cleaner error page returned by the UI.
Renders a controlled UI error page with viewable details of the error generated by an API sub-request
or some generic processing operation. The API HTTP error status code is forwarded to this UI response.
"""
def get_any_detail():
req_data = data.get("error_request", {})
return data.get("detail", data.get("explanation", req_data.get("detail", http.explanation)))
data = {}
if self.request.method == "POST":
data = get_json(self.request)
data = self.add_template_data(data)
data.setdefault("error_code", 500)
http = status_map[data["error_code"]]
data.setdefault("error_title", data.get("title", http.title))
data.setdefault("error_detail", get_any_detail())
data.setdefault("error_image", "forbidden" if data["error_code"] in [401, 403] else "exclamation-circle")
resp = render_to_response("templates/error.mako", data, request=self.request)
resp.status_int = data["error_code"]
return resp