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
229
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
     1
from django import http
217
26df557482d8 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 210
diff changeset
     2
from django.shortcuts import render, redirect
192
ea98c7942a8d manage.py startapp qmsk_www_pages
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
233
f5227f26231b move qmsk_www_pages to qmsk.pages
Tero Marttila <terom@qmsk.net>
parents: 229
diff changeset
     4
from qmsk.pages import pages
197
11a6d8fea463 qmsk_www_pages: pages.Page.lookup() and .html support; logging
Tero Marttila <terom@paivola.fi>
parents: 194
diff changeset
     5
229
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
     6
def page_error (request, page, status, title, error_message=None, error_exception=None):
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
     7
    site = pages.SITE
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
     8
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
     9
    if page:
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    10
        page_hierarchy = list(page.hierarchy())
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    11
    else:
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    12
        tree = site.tree()
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    13
        page_hierarchy = [(tree, None)]
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    14
233
f5227f26231b move qmsk_www_pages to qmsk.pages
Tero Marttila <terom@qmsk.net>
parents: 229
diff changeset
    15
    return render(request, 'qmsk.pages/error.html', dict(
229
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    16
        site_name       = site.name,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    17
        page_hierarchy  = page_hierarchy,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    18
        error_page      = page,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    19
        error_title     = title,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    20
        error_message   = error_message,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    21
        error_output    = str(error_exception) if error_exception else None,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    22
    ), status=status)
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    23
192
ea98c7942a8d manage.py startapp qmsk_www_pages
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
# Create your views here.
194
8d64871a3c06 barebones qmsk_www_pages
Tero Marttila <terom@paivola.fi>
parents: 192
diff changeset
    25
def page (request, page):
210
13848af48cb5 qmsk_www_pages view: handle pages.NotFound, drop unused tree_list
Tero Marttila <terom@paivola.fi>
parents: 206
diff changeset
    26
    try:
13848af48cb5 qmsk_www_pages view: handle pages.NotFound, drop unused tree_list
Tero Marttila <terom@paivola.fi>
parents: 206
diff changeset
    27
        page = pages.page(page)
229
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    28
    except pages.NotFound as error:
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    29
        return page_error(request, None,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    30
                status  = 404,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    31
                title   = u"Not Found",
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    32
                error_message   = page,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    33
        )
197
11a6d8fea463 qmsk_www_pages: pages.Page.lookup() and .html support; logging
Tero Marttila <terom@paivola.fi>
parents: 194
diff changeset
    34
217
26df557482d8 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 210
diff changeset
    35
    redirect_page = page.redirect_page(request)
26df557482d8 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 210
diff changeset
    36
26df557482d8 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 210
diff changeset
    37
    if redirect_page:
26df557482d8 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 210
diff changeset
    38
        return redirect('page', redirect_page)
229
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    39
    
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    40
    try:
233
f5227f26231b move qmsk_www_pages to qmsk.pages
Tero Marttila <terom@qmsk.net>
parents: 229
diff changeset
    41
        return render(request, 'qmsk.pages/page.html', dict(
229
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    42
                site_name       = page.tree.site.name,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    43
                page_name       = page.name,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    44
                page_title      = page.title,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    45
                page_breadcrumb = page.breadcrumb(),
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    46
                page_hierarchy  = list(page.hierarchy()),
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    47
                page_html       = page.render_html(request),
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    48
                page_modified   = page.modified(),
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    49
        ))
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    50
    except pages.RenderError as error:
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    51
        return page_error(request, page,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    52
                status  = 500,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    53
                title   = u"Server Error: {page}".format(page=page.url()),
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    54
                error_exception     = error,
3d483fa09c8d qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 217
diff changeset
    55
        )