X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/4ac9918f152cc49badd4a359bfed41e723161cdf..f73ecfb6b870b18ed88303ff71a06da55001274b:/apps/wiki/views.py diff --git a/apps/wiki/views.py b/apps/wiki/views.py index dc2ec6f1..b137a541 100644 --- a/apps/wiki/views.py +++ b/apps/wiki/views.py @@ -12,6 +12,7 @@ from django.utils.encoding import smart_unicode from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST, require_GET from django.views.generic.simple import direct_to_template +from django.shortcuts import get_object_or_404 from catalogue.models import Book, Chunk import nice_diff @@ -61,7 +62,7 @@ def editor(request, slug, chunk=None, template_name='wiki/document_details.html' return direct_to_template(request, template_name, extra_context={ 'chunk': chunk, 'forms': { - "text_save": forms.DocumentTextSaveForm(prefix="textsave"), + "text_save": forms.DocumentTextSaveForm(user=request.user, prefix="textsave"), "text_revert": forms.DocumentTextRevertForm(prefix="textrevert"), "pubmark": forms.DocumentPubmarkForm(prefix="pubmark"), }, @@ -99,14 +100,11 @@ def editor_readonly(request, slug, chunk=None, template_name='wiki/document_deta @never_cache @decorator_from_middleware(GZipMiddleware) -def text(request, slug, chunk=None): - try: - doc = Chunk.get(slug, chunk) - except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist): - raise Http404 +def text(request, chunk_id): + doc = get_object_or_404(Chunk, pk=chunk_id) if request.method == 'POST': - form = forms.DocumentTextSaveForm(request.POST, prefix="textsave") + form = forms.DocumentTextSaveForm(request.POST, user=request.user, prefix="textsave") if form.is_valid(): if request.user.is_authenticated(): author = request.user @@ -125,6 +123,8 @@ def text(request, slug, chunk=None): parent=parent, description=form.cleaned_data['comment'], tags=tags, + author_name=form.cleaned_data['author_name'], + author_email=form.cleaned_data['author_email'], ) revision = doc.revision() return JSONResponse({ @@ -156,13 +156,10 @@ def text(request, slug, chunk=None): @never_cache @require_POST -def revert(request, slug, chunk=None): +def revert(request, chunk_id): form = forms.DocumentTextRevertForm(request.POST, prefix="textrevert") if form.is_valid(): - try: - doc = Chunk.get(slug, chunk) - except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist): - raise Http404 + doc = get_object_or_404(Chunk, pk=chunk_id) revision = form.cleaned_data['revision'] @@ -175,7 +172,7 @@ def revert(request, slug, chunk=None): author = None before = doc.revision() - logger.info("Reverting %s to %s", slug, revision) + logger.info("Reverting %s to %s", chunk_id, revision) doc.at_revision(revision).revert(author=author, description=comment) return JSONResponse({ @@ -215,7 +212,7 @@ def gallery(request, directory): @never_cache -def diff(request, slug, chunk=None): +def diff(request, chunk_id): revA = int(request.GET.get('from', 0)) revB = int(request.GET.get('to', 0)) @@ -225,10 +222,7 @@ def diff(request, slug, chunk=None): if revB == 0: revB = None - try: - doc = Chunk.get(slug, chunk) - except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist): - raise Http404 + doc = get_object_or_404(Chunk, pk=chunk_id) # allow diff from the beginning if revA: docA = doc.at_revision(revA).materialize() @@ -241,21 +235,15 @@ def diff(request, slug, chunk=None): @never_cache -def revision(request, slug, chunk=None): - try: - doc = Chunk.get(slug, chunk) - except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist): - raise Http404 +def revision(request, chunk_id): + doc = get_object_or_404(Chunk, pk=chunk_id) return http.HttpResponse(str(doc.revision())) @never_cache -def history(request, slug, chunk=None): +def history(request, chunk_id): # TODO: pagination - try: - doc = Chunk.get(slug, chunk) - except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist): - raise Http404 + doc = get_object_or_404(Chunk, pk=chunk_id) changes = [] for change in doc.history().order_by('-created_at'): @@ -272,13 +260,10 @@ def history(request, slug, chunk=None): @require_POST @ajax_require_permission('catalogue.can_pubmark') -def pubmark(request, slug, chunk=None): +def pubmark(request, chunk_id): form = forms.DocumentPubmarkForm(request.POST, prefix="pubmark") if form.is_valid(): - try: - doc = Chunk.get(slug, chunk) - except (Chunk.MultipleObjectsReturned, Chunk.DoesNotExist): - raise Http404 + doc = get_object_or_404(Chunk, pk=chunk_id) revision = form.cleaned_data['revision'] publishable = form.cleaned_data['publishable']