seitime-frappe/frappe/website/serve.py
Akhil Narang 6819a38fbe
fix: set correct response code for redirections
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2023-12-20 17:36:42 +05:30

33 lines
1.2 KiB
Python

import frappe
from frappe.website.page_renderers.error_page import ErrorPage
from frappe.website.page_renderers.not_found_page import NotFoundPage
from frappe.website.page_renderers.not_permitted_page import NotPermittedPage
from frappe.website.page_renderers.redirect_page import RedirectPage
from frappe.website.path_resolver import PathResolver
def get_response(path=None, http_status_code=200):
"""Resolves path and renders page"""
response = None
path = path or frappe.local.request.path
endpoint = path
try:
path_resolver = PathResolver(path, http_status_code)
endpoint, renderer_instance = path_resolver.resolve()
response = renderer_instance.render()
except frappe.Redirect as e:
return RedirectPage(endpoint or path, e.http_status_code).render()
except frappe.PermissionError as e:
response = NotPermittedPage(endpoint, http_status_code, exception=e).render()
except frappe.PageDoesNotExistError:
response = NotFoundPage(endpoint, http_status_code).render()
except Exception as e:
response = ErrorPage(exception=e).render()
return response
def get_response_content(path=None, http_status_code=200):
response = get_response(path, http_status_code)
return str(response.data, "utf-8")