qmsk/pages/views.py
author Tero Marttila <terom@qmsk.net>
Sat, 04 Oct 2014 13:32:59 +0300
changeset 233 f5227f26231b
parent 229 qmsk_www_pages/views.py@3d483fa09c8d
permissions -rw-r--r--
move qmsk_www_pages to qmsk.pages
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,
        )