diff -r 000000000000 -r 0d40e90630ef web/lib/django/contrib/flatpages/views.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/flatpages/views.py Wed Jan 20 00:34:04 2010 +0100 @@ -0,0 +1,48 @@ +from django.contrib.flatpages.models import FlatPage +from django.template import loader, RequestContext +from django.shortcuts import get_object_or_404 +from django.http import HttpResponse, HttpResponseRedirect +from django.conf import settings +from django.core.xheaders import populate_xheaders +from django.utils.safestring import mark_safe + +DEFAULT_TEMPLATE = 'flatpages/default.html' + +def flatpage(request, url): + """ + Flat page view. + + Models: `flatpages.flatpages` + Templates: Uses the template defined by the ``template_name`` field, + or `flatpages/default.html` if template_name is not defined. + Context: + flatpage + `flatpages.flatpages` object + """ + if not url.endswith('/') and settings.APPEND_SLASH: + return HttpResponseRedirect("%s/" % request.path) + if not url.startswith('/'): + url = "/" + url + f = get_object_or_404(FlatPage, url__exact=url, sites__id__exact=settings.SITE_ID) + # If registration is required for accessing this page, and the user isn't + # logged in, redirect to the login page. + if f.registration_required and not request.user.is_authenticated(): + from django.contrib.auth.views import redirect_to_login + return redirect_to_login(request.path) + if f.template_name: + t = loader.select_template((f.template_name, DEFAULT_TEMPLATE)) + else: + t = loader.get_template(DEFAULT_TEMPLATE) + + # To avoid having to always use the "|safe" filter in flatpage templates, + # mark the title and content as already safe (since they are raw HTML + # content in the first place). + f.title = mark_safe(f.title) + f.content = mark_safe(f.content) + + c = RequestContext(request, { + 'flatpage': f, + }) + response = HttpResponse(t.render(c)) + populate_xheaders(request, response, FlatPage, f.id) + return response