X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/1c4c468783e5f380324c29ebc3b2c452da8cc2a0..49d0b5ac8efa37ef3f03cd31f84a34074ab7c205:/apps/wiki/views.py?ds=sidebyside diff --git a/apps/wiki/views.py b/apps/wiki/views.py index 7101fc9f..05b9031e 100644 --- a/apps/wiki/views.py +++ b/apps/wiki/views.py @@ -52,19 +52,19 @@ def get_history(chunk): @never_cache -# @login_required def editor(request, slug, chunk=None, template_name='wiki/bootstrap.html'): try: chunk = Chunk.get(slug, chunk) except Chunk.MultipleObjectsReturned: - # TODO: choice page raise Http404 except Chunk.DoesNotExist: if chunk is None: try: - book = Book.objects.get(slug=slug) + Book.objects.get(slug=slug) except Book.DoesNotExist: return http.HttpResponseRedirect(reverse("catalogue_create_missing", args=[slug])) + else: + raise Http404 else: raise Http404 if not chunk.book.accessible(request): @@ -75,7 +75,7 @@ def editor(request, slug, chunk=None, template_name='wiki/bootstrap.html'): last_books[slug, chunk.slug] = { 'time': access_time, 'title': chunk.pretty_name(), - } + } if len(last_books) > MAX_LAST_DOCS: oldest_key = min(last_books, key=lambda x: last_books[x]['time']) @@ -84,13 +84,16 @@ def editor(request, slug, chunk=None, template_name='wiki/bootstrap.html'): save_form = forms.DocumentTextSaveForm(user=request.user, chunk=chunk, prefix="textsave") try: - version = int(request.GET.get('version', None)) - except: + version = int(request.GET.get('version', '')) + except ValueError: version = None if version: text = chunk.at_revision(version).materialize() else: text = chunk.materialize() + gallery_dir = os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, chunk.book.gallery) + materials = set(os.listdir(gallery_dir)) if os.path.isdir(gallery_dir) else [] + materials.update([n.rsplit('.', 1)[0] for n in materials]) return render(request, template_name, { 'serialized_document_data': json.dumps({ 'document': text, @@ -110,7 +113,9 @@ def editor(request, slug, chunk=None, template_name='wiki/bootstrap.html'): }, 'tags': list(save_form.fields['stage_completed'].choices), 'can_pubmark': request.user.has_perm('catalogue.can_pubmark'), - 'slug': chunk.book.slug + 'slug': chunk.book.slug, + 'gallery': chunk.book.gallery, + 'materials': json.dumps(list(materials)), }) @@ -154,30 +159,8 @@ def text(request, chunk_id): if request.method == 'POST': form = forms.DocumentTextSaveForm(request.POST, user=request.user, chunk=doc, prefix="textsave") if form.is_valid(): - if request.user.is_authenticated(): - author = request.user - else: - author = None - text = form.cleaned_data['text'] + form.save() parent_revision = form.cleaned_data['parent_revision'] - if parent_revision is not None: - parent = doc.at_revision(parent_revision) - else: - parent = None - stage = form.cleaned_data['stage_completed'] - tags = [stage] if stage else [] - publishable = form.cleaned_data['publishable'] and request.user.has_perm('catalogue.can_pubmark') - doc.commit(author=author, - text=text, - parent=parent, - description=form.cleaned_data['comment'], - tags=tags, - author_name=form.cleaned_data['author_name'], - author_email=form.cleaned_data['author_email'], - publishable=publishable, - ) - doc.book.for_cybernauts = form.cleaned_data['for_cybernauts'] - doc.book.save() revision = doc.revision() return JSONResponse({ 'text': doc.materialize() if parent_revision != revision else None, @@ -255,7 +238,7 @@ def gallery(request, directory): return urllib.quote("%s/%s" % (base_url, smart_unicode(filename))) def is_image(filename): - return os.path.splitext(f)[1].lower() in (u'.jpg', u'.jpeg', u'.png') + return os.path.splitext(filename)[1].lower() in (u'.jpg', u'.jpeg', u'.png') images = [map_to_url(f) for f in map(smart_unicode, os.listdir(base_dir)) if is_image(f)] images.sort()