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