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)
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 ) )
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))