qmsk/pages/views.py
author Tero Marttila <terom@qmsk.net>
Mon, 10 Oct 2016 19:48:34 +0300
changeset 132 8f3cec6118bf
parent 107 4e0b53e960cd
permissions -rw-r--r--
about: still a master's student
100
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     1
from django import http
83
f167c68d9f34 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 74
diff changeset
     2
from django.shortcuts import render, redirect
54
92552b2d8e34 manage.py startapp qmsk_www_pages
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
107
4e0b53e960cd move qmsk_www_pages to qmsk.pages
Tero Marttila <terom@qmsk.net>
parents: 100
diff changeset
     4
from qmsk.pages import pages
60
bd9cea0b5b11 qmsk_www_pages: pages.Page.lookup() and .html support; logging
Tero Marttila <terom@paivola.fi>
parents: 56
diff changeset
     5
100
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     6
def page_error (request, page, status, title, error_message=None, error_exception=None):
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     7
    site = pages.SITE
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     8
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     9
    if page:
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    10
        page_hierarchy = list(page.hierarchy())
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    11
    else:
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    12
        tree = site.tree()
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    13
        page_hierarchy = [(tree, None)]
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    14
107
4e0b53e960cd move qmsk_www_pages to qmsk.pages
Tero Marttila <terom@qmsk.net>
parents: 100
diff changeset
    15
    return render(request, 'qmsk.pages/error.html', dict(
100
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    16
        site_name       = site.name,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    17
        page_hierarchy  = page_hierarchy,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    18
        error_page      = page,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    19
        error_title     = title,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    20
        error_message   = error_message,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    21
        error_output    = str(error_exception) if error_exception else None,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    22
    ), status=status)
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    23
54
92552b2d8e34 manage.py startapp qmsk_www_pages
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
# Create your views here.
56
36c3846987fe barebones qmsk_www_pages
Tero Marttila <terom@paivola.fi>
parents: 54
diff changeset
    25
def page (request, page):
74
d8413d2b0bee qmsk_www_pages view: handle pages.NotFound, drop unused tree_list
Tero Marttila <terom@paivola.fi>
parents: 69
diff changeset
    26
    try:
d8413d2b0bee qmsk_www_pages view: handle pages.NotFound, drop unused tree_list
Tero Marttila <terom@paivola.fi>
parents: 69
diff changeset
    27
        page = pages.page(page)
100
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    28
    except pages.NotFound as error:
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    29
        return page_error(request, None,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    30
                status  = 404,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    31
                title   = u"Not Found",
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    32
                error_message   = page,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    33
        )
60
bd9cea0b5b11 qmsk_www_pages: pages.Page.lookup() and .html support; logging
Tero Marttila <terom@paivola.fi>
parents: 56
diff changeset
    34
83
f167c68d9f34 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 74
diff changeset
    35
    redirect_page = page.redirect_page(request)
f167c68d9f34 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 74
diff changeset
    36
f167c68d9f34 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 74
diff changeset
    37
    if redirect_page:
f167c68d9f34 qmsk_www_pages: symlink support for page redirects
Tero Marttila <terom@paivola.fi>
parents: 74
diff changeset
    38
        return redirect('page', redirect_page)
100
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    39
    
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    40
    try:
107
4e0b53e960cd move qmsk_www_pages to qmsk.pages
Tero Marttila <terom@qmsk.net>
parents: 100
diff changeset
    41
        return render(request, 'qmsk.pages/page.html', dict(
100
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    42
                site_name       = page.tree.site.name,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    43
                page_name       = page.name,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    44
                page_title      = page.title,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    45
                page_breadcrumb = page.breadcrumb(),
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    46
                page_hierarchy  = list(page.hierarchy()),
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    47
                page_html       = page.render_html(request),
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    48
                page_modified   = page.modified(),
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    49
        ))
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    50
    except pages.RenderError as error:
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    51
        return page_error(request, page,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    52
                status  = 500,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    53
                title   = u"Server Error: {page}".format(page=page.url()),
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    54
                error_exception     = error,
849fc74f50d5 qmsk_www_pages: page_error
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    55
        )