Example #1
0
def handle_page(request, page_slug):
    try:
        page = Page.objects.get(slug=page_slug)
        return view_page(request, page)
    except Page.DoesNotExist:
        title = title_from_slug(page_slug)
        return new_page(request, title)
Example #2
0
    def test_title_from_slug(self):
        # Input, Output tuples
        tests = [
            ("Foo", "Foo"),
            ("human_body", "Human Body"),
            ("HumanBody", "Human Body"),
            ("Parts_of_the_HumanBody", "Parts Of The Human Body"),
            ("HumanBody/Parts", "Human Body / Parts"),
            ("HumanBody/Parts/Dissected_by_scientists", "Human Body / Parts / Dissected By Scientists")
        ]

        for input, expected_output in tests:
            output = title_from_slug(unicode(input))
            self.assertEqual(expected_output, output,
                "{input} title produced {output} instead of {expected_output}".format(
                    input=input, output=output, expected_output=expected_output
                )
            )
Example #3
0
def edit_page(request, page_slug=None, template_name='page/edit.html'):
    title = title_from_slug(page_slug)
    try:
        page = Page.objects.get(slug=page_slug)
    except Page.DoesNotExist:
        page = Page()

    if request.method == 'POST':
        revision = PageRevision(page=page, number=page.next_revision())
        form = PageRevisionForm(request.POST, instance=revision)

        if form.is_valid():
            # Save the page, in case it is new and because a revision requires a valid Page object
            page.title = title
            page.slug = page_slug
            page.save()

            # Save the revision
            new_revision = form.save(commit=False)
            new_revision.page = page
            new_revision.number = page.next_revision()
            new_revision.save()

            # Update the page's current revision now that the new revision has been persisted
            page.current_revision = new_revision
            page.save()

            return HttpResponseRedirect("/" + page_slug)
        else:
            print form.errors

    else:
        form = PageRevisionForm(instance=page.current_revision, initial={"comment": ""})

    context = {
        'title': title,
        'form': form.as_table(),
    }
    return render_to_response(template_name, RequestContext(request, context))