@login_required def edit_page(request, slug='index', is_template=False): if is_template: is_template = True if request.user.has_perm('wiki.edit_page'): page = None try: page_id = Page.objects.get(slug__exact=slug, lang=request.LANGUAGE_CODE, is_template=is_template) if page_id.is_protected and not request.user.has_perm('wiki.edit_protected_page'): context = template.RequestContext(request) return render_to_response('errors/no-access.html', context_instance=context) # can't view page manipulator = Page.ChangeManipulator(page_id.id) page_data = manipulator.flatten_data() page = manipulator.original_object if request.POST: page_data = request.POST.copy() page_data["slug"] = page.slug page_data["modification_user"] = str(request.user) page_data["modification_ip"] = request.META['REMOTE_ADDR'] page_data["lang"] = request.LANGUAGE_CODE page_data["is_template"] = is_template errors = manipulator.get_validation_errors(page_data) if not errors: #set edit as current content manipulator.do_html2python(page_data) new_place = manipulator.save(page_data) if not is_template: return HttpResponseRedirect("/wiki/%s/" % page_data['slug']) else: return HttpResponseRedirect("/wiki/template/%s/" % page_data['slug']) else: errors = {} #page_data = page.__dict__ page_data['changes'] = '' form = forms.FormWrapper(manipulator, page_data, errors) except Page.DoesNotExist: manipulator = Page.AddManipulator() page = {'slug': slug} if request.POST: page_data = request.POST.copy() page_data["slug"] = slug page_data["modification_user"] = str(request.user) page_data["modification_ip"] = request.META['REMOTE_ADDR'] page_data["lang"] = request.LANGUAGE_CODE page_data["is_template"] = is_template errors = manipulator.get_validation_errors(page_data) if not errors: manipulator.do_html2python(page_data) new_place = manipulator.save(page_data) if not is_template: return HttpResponseRedirect("/wiki/%s/" % page_data['slug']) else: return HttpResponseRedirect("/wiki/template/%s/" % page_data['slug']) else: from sre import sub page_data = {'title': sub("-", " ", slug)} errors = {} form = forms.FormWrapper(manipulator, page_data, errors) context = template.RequestContext(request) extra_context = {'form': form, 'page': page, 'is_template': is_template} context.update(extra_context) return render_to_response('wiki/edit.html', context_instance=context) else: context = template.RequestContext(request) return render_to_response('errors/no-access.html', context_instance=context) # can't view page