def test_form_save_section(self): d, r = doc_rev(""" <h1 id="s1">s1</h1> <p>test</p> <p>test</p> <h1 id="s2">s2</h1> <p>test</p> <p>test</p> <h1 id="s3">s3</h1> <p>test</p> <p>test</p> """) replace_content = """ <h1 id="s2">New stuff</h1> <p>new stuff</p> """ expected = """ <h1 id="s1">s1</h1> <p>test</p> <p>test</p> <h1 id="s2">New stuff</h1> <p>new stuff</p> <h1 id="s3">s3</h1> <p>test</p> <p>test</p> """ rev_form = RevisionForm({"content": replace_content}, instance=r, section_id="s2") new_rev = rev_form.save(r.creator, d) eq_(normalize_html(expected), normalize_html(new_rev.content))
def test_form_save_section(self): d, r = doc_rev( """ <h1 id="s1">s1</h1> <p>test</p> <p>test</p> <h1 id="s2">s2</h1> <p>test</p> <p>test</p> <h1 id="s3">s3</h1> <p>test</p> <p>test</p> """ ) replace_content = """ <h1 id="s2">New stuff</h1> <p>new stuff</p> """ expected = """ <h1 id="s1">s1</h1> <p>test</p> <p>test</p> <h1 id="s2">New stuff</h1> <p>new stuff</p> <h1 id="s3">s3</h1> <p>test</p> <p>test</p> """ rev_form = RevisionForm({"content": replace_content}, instance=r, section_id="s2") new_rev = rev_form.save(r.creator, d) eq_(normalize_html(expected), normalize_html(new_rev.content))
def page_edit(request, page_slug): try: page = Page.objects.get_by_write(page_slug, request) except PermissionDenied: return redirect('wiki-page', page_slug=page_slug) except Page.DoesNotExist: page = None form_page = None if request.POST: form = RevisionForm(request.POST) if form.is_valid(): # adding new page if page is None: form_page = PageAddForm(request.POST, user=request.user) if form_page.is_valid(): page = form_page.save() if Page.objects.count() == 1: # first wiki page created configuration = Configuration.objects.current() configuration.wiki_homepage = page configuration.save() messages.info(request, _(u'Diese Wiki-Seite wurde nun als Startseite des Wikis eingerichtet. ' u'Du kannst das in der Konfiguration ändern.')) if page: revision = form.save(commit=False) revision.user = request.user.actor revision.page = page revision.save() message_object_updated(request, page) return redirect(page) else: form_page = PageAddForm(request.POST, user=request.user, initial={'title': page_slug.capitalize}) else: if page is None: form = RevisionForm() form_page = PageAddForm(user=request.user, initial={'title': page_slug.capitalize}) else: revision = page.get_current() revision.summary = '' form = RevisionForm(instance=revision) if page is not None: is_owner = page.is_owner(request.user.actor) else: is_owner = None return render(request, 'wiki/page-edit.html', get_context_wiki(request, 'wiki-page-edit', {'form': form, 'page': page, 'form_page': form_page, 'tpl__is_owner': is_owner}))
def edit(request, slug, binder, *args, **kwargs): wiki = binder.lookup(*args, **kwargs) try: if wiki: page = wiki.pages.get(slug=slug) else: page = Page.objects.get(slug=slug) except Page.DoesNotExist: return HttpResponseRedirect(reverse("wiki_add") + "?slug=" + slug) else: if not hookset.can_edit_page(page, request.user): messages.add_message( request, messages.ERROR, "You do not have permission to edit this page.") return HttpResponseRedirect(reverse("wiki_all")) rev = page.revisions.latest() form = RevisionForm( request.POST if "edit" in request.POST else None, revision=rev, ) if form.is_valid(): revision = form.save(commit=False) revision.page = page revision.created_by = request.user revision.created_ip = request.META.get( settings.WIKI_IP_ADDRESS_META_FIELD, request.META.get("REMOTE_ADDR")) revision.parse() revision.save() return HttpResponseRedirect(binder.page_url(wiki, slug)) form.fields["content"].help_text = "" can_delete = hookset.can_delete_page(page, request.user) and page.pk if can_delete and "delete" in request.POST: page.delete() return HttpResponseRedirect(reverse("wiki_all")) page_name = "Edit {0}".format(page.slug) return render_to_response("wiki/edit.html", { "page_name": page_name, "form": form, "page": page, "can_delete": can_delete, }, context_instance=RequestContext(request))
def add_page_view(request, binder, *args, **kwargs): wiki = binder.lookup(*args, **kwargs) slug = request.GET.get("slug", "") if not slug: slug = "Page Name" try: if wiki: page = wiki.pages.get(slug=slug) else: page = Page.objects.get(slug=slug) except Page.DoesNotExist: pass else: return HttpResponseRedirect(page.get_edit_url()) if not hookset.can_create_page(wiki, request.user, slug=slug): messages.add_message( request, messages.ERROR, "You do not have permission to create this page.") return HttpResponseRedirect(reverse("wiki_all")) form = RevisionForm( request.POST if "edit" in request.POST else None, revision=None, ) if form.is_valid(): page = Page.objects.create(wiki=wiki, slug=slug) revision = form.save(commit=False) revision.page = page revision.created_by = request.user revision.created_ip = request.META.get( settings.WIKI_IP_ADDRESS_META_FIELD, request.META.get("REMOTE_ADDR")) revision.parse() revision.save() return HttpResponseRedirect(binder.page_url(wiki, slug)) form.fields["content"].help_text = "" page_name = "Add {0}".format(slug) return render_to_response("wiki/edit.html", { "page_name": page_name, "form": form, "can_delete": False, }, context_instance=RequestContext(request))
def add_page_view(request, binder, *args, **kwargs): wiki = binder.lookup(*args, **kwargs) slug = request.GET.get("slug", "") if not slug: slug = "Page Name" try: if wiki: page = wiki.pages.get(slug=slug) else: page = Page.objects.get(slug=slug) except Page.DoesNotExist: pass else: return HttpResponseRedirect(page.get_edit_url()) if not hookset.can_create_page(wiki, request.user): raise Http404() form = RevisionForm( request.POST if "edit" in request.POST else None, revision=None, ) if form.is_valid(): page = Page.objects.create(wiki=wiki, slug=slug) revision = form.save(commit=False) revision.page = page revision.created_by = request.user revision.created_ip = request.META.get(settings.WIKI_IP_ADDRESS_META_FIELD, request.META.get("REMOTE_ADDR")) revision.parse() revision.save() return HttpResponseRedirect(binder.page_url(wiki, slug)) form.fields["content"].help_text = "" page_name = "Add {0}".format(slug) return render_to_response("wiki/edit.html", { "page_name": page_name, "form": form, "can_delete": False, }, context_instance=RequestContext(request))
def edit(request, slug, binder, *args, **kwargs): wiki = binder.lookup(*args, **kwargs) try: if wiki: page = wiki.pages.get(slug=slug) else: page = Page.objects.get(slug=slug) rev = page.revisions.latest() if not hookset.can_edit_page(page, request.user): return HttpResponseForbidden() except Page.DoesNotExist: return HttpResponseRedirect(reverse("wiki_add") + "?slug=" + slug) form = RevisionForm( request.POST if "edit" in request.POST else None, revision=rev, ) if form.is_valid(): revision = form.save(commit=False) revision.page = page revision.created_by = request.user revision.created_ip = request.META.get(settings.WIKI_IP_ADDRESS_META_FIELD, request.META.get("REMOTE_ADDR")) revision.parse() revision.save() return HttpResponseRedirect(binder.page_url(wiki, slug)) form.fields["content"].help_text = "" can_delete = hookset.can_delete_page(page, request.user) and page.pk if can_delete and "delete" in request.POST: page.delete() return HttpResponseRedirect(reverse("wiki_all")) page_name = "Edit {0}".format(page.slug) return render_to_response("wiki/edit.html", { "page_name": page_name, "form": form, "page": page, "can_delete": can_delete, }, context_instance=RequestContext(request))