Connecting WL + publishing author.
[redakcja.git] / src / wiki / views.py
index 543a473..29c389a 100644 (file)
@@ -18,6 +18,7 @@ from django.utils.formats import localize
 from django.utils.translation import gettext as _
 from django.views.decorators.http import require_POST, require_GET
 from django.shortcuts import get_object_or_404, render
+from sorl.thumbnail import get_thumbnail
 
 from documents.models import Book, Chunk
 from . import nice_diff
@@ -231,14 +232,18 @@ def gallery(request, directory):
         def is_image(filename):
             return os.path.splitext(filename)[1].lower() in (u'.jpg', u'.jpeg', u'.png')
 
-        images = [map_to_url(f) for f in os.listdir(base_dir) if is_image(f)]
-        images.sort()
-
         books = Book.objects.filter(gallery=directory)
 
         if not all(book.public for book in books) and not request.user.is_authenticated:
             return HttpResponseForbidden("Not authorized.")
 
+        images = [
+            {
+                "url": map_to_url(f),
+                "thumb": get_thumbnail(os.path.join(base_dir, f), '120x120').url
+            } for f in sorted(os.listdir(base_dir)) if is_image(f)
+        ]
+
         return JSONResponse(images)
     except (IndexError, OSError):
         logger.exception("Unable to fetch gallery")
@@ -288,8 +293,15 @@ def history(request, chunk_id):
     if not doc.book.accessible(request):
         return HttpResponseForbidden("Not authorized.")
 
+    history = doc.history()
+    try:
+        before = int(request.GET.get('before'))
+    except:
+        pass
+    else:
+        history = history.filter(revision__lt=before)
     changes = []
-    for change in doc.history().reverse():
+    for change in history.reverse()[:20]:
         changes.append({
                 "version": change.revision,
                 "description": change.description,