|
1 from django import http |
|
2 from django.shortcuts import render, redirect |
|
3 |
|
4 from qmsk.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, 'qmsk.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, 'qmsk.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 ) |