def edit(request, name): """Allows users to edit wiki pages.""" try: page = Page.objects.get(name=name) except Page.DoesNotExist: page = None if request.method == 'POST': form = PageForm(request.POST) if form.is_valid(): if not page: page = Page() page.name = form.cleaned_data['name'] page.save() revision = Revision() revision.page = page revision.content = form.cleaned_data['content'] if request.user.is_authenticated(): revision.editor = request.user revision.save() return HttpResponseRedirect(page.get_absolute_url()) else: if page: revision = page.get_latest_revision() form = PageForm(initial={'name': page.name, 'content': revision.content}) else: form = PageForm(initial={'name': name}) ctx = { 'form': form } return render_to_response('wiki/edit.html', ctx, context_instance=RequestContext(request))