qmsk_www_pages/views.py
changeset 229 3d483fa09c8d
parent 217 26df557482d8
equal deleted inserted replaced
228:5b43febfe484 229:3d483fa09c8d
     1 from django.http import Http404
     1 from django import http
     2 from django.shortcuts import render, redirect
     2 from django.shortcuts import render, redirect
     3 
     3 
     4 from qmsk_www_pages import pages
     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)
     5 
    23 
     6 # Create your views here.
    24 # Create your views here.
     7 def page (request, page):
    25 def page (request, page):
     8     try:
    26     try:
     9         page = pages.page(page)
    27         page = pages.page(page)
    10     except pages.NotFound:
    28     except pages.NotFound as error:
    11         raise Http404
    29         return page_error(request, None,
       
    30                 status  = 404,
       
    31                 title   = u"Not Found",
       
    32                 error_message   = page,
       
    33         )
    12 
    34 
    13     redirect_page = page.redirect_page(request)
    35     redirect_page = page.redirect_page(request)
    14 
    36 
    15     if redirect_page:
    37     if redirect_page:
    16         return redirect('page', redirect_page)
    38         return redirect('page', redirect_page)
    17 
    39     
    18     return render(request, 'pages/page.html', dict(
    40     try:
    19             site_name       = page.tree.site.name,
    41         return render(request, 'pages/page.html', dict(
    20             page_name       = page.name,
    42                 site_name       = page.tree.site.name,
    21             page_title      = page.title,
    43                 page_name       = page.name,
    22             page_breadcrumb = page.breadcrumb(),
    44                 page_title      = page.title,
    23             page_hierarchy  = list(page.hierarchy()),
    45                 page_breadcrumb = page.breadcrumb(),
    24             page_html       = page.render_html(request),
    46                 page_hierarchy  = list(page.hierarchy()),
    25             page_modified   = page.modified(),
    47                 page_html       = page.render_html(request),
    26     ))
    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         )