Add keyboard view.
[redakcja.git] / src / cover / views.py
index 3f2c46f..bfc3ee3 100644 (file)
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-#
 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
@@ -10,8 +8,8 @@ from django.http import HttpResponse, HttpResponseRedirect, Http404
 from django.shortcuts import get_object_or_404, render
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.http import require_POST
-from catalogue.helpers import active_tab
-from catalogue.models import Chunk
+from documents.helpers import active_tab
+from documents.models import Chunk
 from cover.models import Image
 from cover import forms
 
@@ -37,17 +35,30 @@ def preview(request, book, chunk=None, rev=None):
     else:
         revision = chunk.publishable()
         if revision is None:
-            raise Http404
+            revision = chunk.head
     xml = revision.materialize().encode('utf-8')
 
     try:
         info = BookInfo.from_bytes(xml)
     except:
         return HttpResponseRedirect(os.path.join(settings.STATIC_URL, "img/sample_cover.png"))
-    cover = make_cover(info)
+    width = request.GET.get('width')
+    width = int(width) if width else None
+    height=request.GET.get('height')
+    height = int(height) if height else None
+    cover = make_cover(info, width=width, height=height)
+    #cover = make_cover(info)
     response = HttpResponse(content_type=cover.mime_type())
-    img = cover.image().resize(PREVIEW_SIZE, Image.ANTIALIAS)
+    if height or width:
+        size = (width, height)
+    else:
+        size = PREVIEW_SIZE
+    img = cover.image().resize(size, Image.ANTIALIAS)
     img.save(response, cover.format)
+
+    if 'download' in request.GET:
+        response['Content-Disposition'] = 'attachment; filename=%s.jpg' % chunk.book.slug
+
     return response