--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/qmsk/pages/views.py Sat Oct 04 13:32:59 2014 +0300
@@ -0,0 +1,55 @@
+from django import http
+from django.shortcuts import render, redirect
+
+from qmsk.pages import pages
+
+def page_error (request, page, status, title, error_message=None, error_exception=None):
+ site = pages.SITE
+
+ if page:
+ page_hierarchy = list(page.hierarchy())
+ else:
+ tree = site.tree()
+ page_hierarchy = [(tree, None)]
+
+ return render(request, 'qmsk.pages/error.html', dict(
+ site_name = site.name,
+ page_hierarchy = page_hierarchy,
+ error_page = page,
+ error_title = title,
+ error_message = error_message,
+ error_output = str(error_exception) if error_exception else None,
+ ), status=status)
+
+# Create your views here.
+def page (request, page):
+ try:
+ page = pages.page(page)
+ except pages.NotFound as error:
+ return page_error(request, None,
+ status = 404,
+ title = u"Not Found",
+ error_message = page,
+ )
+
+ redirect_page = page.redirect_page(request)
+
+ if redirect_page:
+ return redirect('page', redirect_page)
+
+ try:
+ return render(request, 'qmsk.pages/page.html', dict(
+ site_name = page.tree.site.name,
+ page_name = page.name,
+ page_title = page.title,
+ page_breadcrumb = page.breadcrumb(),
+ page_hierarchy = list(page.hierarchy()),
+ page_html = page.render_html(request),
+ page_modified = page.modified(),
+ ))
+ except pages.RenderError as error:
+ return page_error(request, page,
+ status = 500,
+ title = u"Server Error: {page}".format(page=page.url()),
+ error_exception = error,
+ )