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-- |
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 | 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 |
) |