qmsk_www_pages/views.py
changeset 233 f5227f26231b
parent 232 5a16a53e9800
child 234 70b425280964
equal deleted inserted replaced
232:5a16a53e9800 233:f5227f26231b
     1 from django import http
       
     2 from django.shortcuts import render, redirect
       
     3 
       
     4 from qmsk_www_pages import pages
       
     5 
       
     6 def page_error (request, page, status, title, error_message=None, error_exception=None):
       
     7     site = pages.SITE
       
     8 
       
     9     if page:
       
    10         page_hierarchy = list(page.hierarchy())
       
    11     else:
       
    12         tree = site.tree()
       
    13         page_hierarchy = [(tree, None)]
       
    14 
       
    15     return render(request, 'pages/error.html', dict(
       
    16         site_name       = site.name,
       
    17         page_hierarchy  = page_hierarchy,
       
    18         error_page      = page,
       
    19         error_title     = title,
       
    20         error_message   = error_message,
       
    21         error_output    = str(error_exception) if error_exception else None,
       
    22     ), status=status)
       
    23 
       
    24 # Create your views here.
       
    25 def page (request, page):
       
    26     try:
       
    27         page = pages.page(page)
       
    28     except pages.NotFound as error:
       
    29         return page_error(request, None,
       
    30                 status  = 404,
       
    31                 title   = u"Not Found",
       
    32                 error_message   = page,
       
    33         )
       
    34 
       
    35     redirect_page = page.redirect_page(request)
       
    36 
       
    37     if redirect_page:
       
    38         return redirect('page', redirect_page)
       
    39     
       
    40     try:
       
    41         return render(request, 'pages/page.html', dict(
       
    42                 site_name       = page.tree.site.name,
       
    43                 page_name       = page.name,
       
    44                 page_title      = page.title,
       
    45                 page_breadcrumb = page.breadcrumb(),
       
    46                 page_hierarchy  = list(page.hierarchy()),
       
    47                 page_html       = page.render_html(request),
       
    48                 page_modified   = page.modified(),
       
    49         ))
       
    50     except pages.RenderError as error:
       
    51         return page_error(request, page,
       
    52                 status  = 500,
       
    53                 title   = u"Server Error: {page}".format(page=page.url()),
       
    54                 error_exception     = error,
       
    55         )