Example #1
0
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
Example #2
0
        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)