X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/7094d00cd82535cfd1db00e7bd85e2a01161da83..07689901a9bf30daeccf8a1ceb7193fe771eb3ac:/apps/wiki_img/views.py diff --git a/apps/wiki_img/views.py b/apps/wiki_img/views.py new file mode 100644 index 00000000..c11549ab --- /dev/null +++ b/apps/wiki_img/views.py @@ -0,0 +1,69 @@ +import os +import functools +import logging +logger = logging.getLogger("fnp.wiki") + +from django.views.generic.simple import direct_to_template +from django.core.urlresolvers import reverse +from wiki.helpers import JSONResponse +from django import http +from django.shortcuts import get_object_or_404 +from django.conf import settings + +from wiki_img.models import ImageDocument +from wiki_img.forms import DocumentTextSaveForm + +# +# Quick hack around caching problems, TODO: use ETags +# +from django.views.decorators.cache import never_cache + + +@never_cache +def editor(request, slug, template_name='wiki_img/document_details.html'): + doc = get_object_or_404(ImageDocument, slug=slug) + + return direct_to_template(request, template_name, extra_context={ + 'document': doc, + 'forms': { + "text_save": DocumentTextSaveForm(prefix="textsave"), + }, + 'REDMINE_URL': settings.REDMINE_URL, + }) + + +@never_cache +def text(request, slug): + if request.method == 'POST': + form = DocumentTextSaveForm(request.POST, prefix="textsave") + if form.is_valid(): + document = get_object_or_404(ImageDocument, slug=slug) + revision = form.cleaned_data['parent_revision'] + + comment = form.cleaned_data['comment'] + + if request.user.is_authenticated(): + user = request.user + else: + user = None + + document.doc.commit( + parent=revision, + text=form.cleaned_data['text'], + author=user, + description=comment + ) + + return JSONResponse({ + 'text': document.doc.materialize(), + 'revision': document.doc.change_set.count(), + }) + else: + return JSONFormInvalid(form) + else: + doc = get_object_or_404(ImageDocument, slug=slug) + return JSONResponse({ + 'text': doc.doc.materialize(), + 'revision': doc.doc.change_set.count() + }) +