def page(request, url): """ Page view. If the requested page does not exists it tries to append a slash or try to delete an existing slash and redirects to the new url. Models: `page.page` Templates: Uses the template defined by the ``template_name`` field, or `pages/default.html` if template_name is not defined. Context: page `page.page` object """ Page = get_model() if not url.startswith("/"): url = "/" + url try: p = Page.public.get(url=url) except ObjectDoesNotExist: if not url.endswith("/"): try: Page.public.get(url=url + "/") return HttpResponseRedirect(url + "/") except ObjectDoesNotExist: pass else: try: Page.public.get(url=url[:-1]) return HttpResponseRedirect(url[:-1]) except ObjectDoesNotExist: pass raise Http404 if p.template_name: t = loader.select_template((p.template_name, DEFAULT_TEMPLATE)) else: t = loader.get_template(DEFAULT_TEMPLATE) c = RequestContext(request, {"page": p}) response = HttpResponse(t.render(c)) populate_xheaders(request, response, Page, p.id) return response
model = Page class PageAdmin(TinyMCEAdminMixin, ModelAdmin): form = PageAdminForm list_display = ("url", "title", "content_preview", "is_public", "pub_date") list_filter = ("is_public",) list_editable = ("is_public",) search_fields = ("url", "title", "content") date_hierarchy = "created" fieldsets = ( (None, {"fields": ("url", "title", "content", "is_public", "media")}), (_("Advanced options"), {"classes": ("collapse", "wide"), "fields": ("pub_date", "template_name")}), ) def content_preview(self, obj): value = obj.content value = strip_tags(value) if len(value) > 100: value = "%s ..." % value[:100] return value content_preview.short_description = _(u"Preview") # Only register the default admin if the model is the default page model # (this won't be true if there's a custom page app). if get_model() is Page: admin.site.register(Page, PageAdmin)