diff -r 5a16a53e9800 -r f5227f26231b qmsk/pages/views.py --- /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, + )