from django import http
from django.shortcuts import render, redirect
from qmsk.pages import pages
def page_error (request, page, status, title, error_message=None, error_exception=None):
site = pages.SITE
if page:
page_hierarchy = list(page.hierarchy())
else:
tree = site.tree()
page_hierarchy = [(tree, None)]
return render(request, 'qmsk.pages/error.html', dict(
site_name = site.name,
page_hierarchy = page_hierarchy,
error_page = page,
error_title = title,
error_message = error_message,
error_output = str(error_exception) if error_exception else None,
), status=status)
# Create your views here.
def page (request, page):
try:
page = pages.page(page)
except pages.NotFound as error:
return page_error(request, None,
status = 404,
title = u"Not Found",
error_message = page,
)
redirect_page = page.redirect_page(request)
if redirect_page:
return redirect('page', redirect_page)
try:
return render(request, 'qmsk.pages/page.html', dict(
site_name = page.tree.site.name,
page_name = page.name,
page_title = page.title,
page_breadcrumb = page.breadcrumb(),
page_hierarchy = list(page.hierarchy()),
page_html = page.render_html(request),
page_modified = page.modified(),
))
except pages.RenderError as error:
return page_error(request, page,
status = 500,
title = u"Server Error: {page}".format(page=page.url()),
error_exception = error,
)