Librarian in regular requirements.
[redakcja.git] / apps / cover / views.py
index 0c29209..3f2c46f 100644 (file)
@@ -15,7 +15,6 @@ from catalogue.models import Chunk
 from cover.models import Image
 from cover import forms
 
 from cover.models import Image
 from cover import forms
 
-
 PREVIEW_SIZE = (216, 300)
 
 
 PREVIEW_SIZE = (216, 300)
 
 
@@ -25,8 +24,8 @@ def preview(request, book, chunk=None, rev=None):
     If chunk and rev number are given, use version from given revision.
     If rev is not given, use publishable version.
     """
     If chunk and rev number are given, use version from given revision.
     If rev is not given, use publishable version.
     """
-    import Image
-    from librarian.cover import WLCover
+    from PIL import Image
+    from librarian.cover import make_cover
     from librarian.dcparser import BookInfo
 
     chunk = Chunk.get(book, chunk)
     from librarian.dcparser import BookInfo
 
     chunk = Chunk.get(book, chunk)
@@ -42,13 +41,13 @@ def preview(request, book, chunk=None, rev=None):
     xml = revision.materialize().encode('utf-8')
 
     try:
     xml = revision.materialize().encode('utf-8')
 
     try:
-        info = BookInfo.from_string(xml)
+        info = BookInfo.from_bytes(xml)
     except:
         return HttpResponseRedirect(os.path.join(settings.STATIC_URL, "img/sample_cover.png"))
     except:
         return HttpResponseRedirect(os.path.join(settings.STATIC_URL, "img/sample_cover.png"))
-    cover = WLCover(info)
-    response = HttpResponse(mimetype=cover.mime_type())
-    image = cover.image().resize(PREVIEW_SIZE, Image.ANTIALIAS)
-    image.save(response, cover.format)
+    cover = make_cover(info)
+    response = HttpResponse(content_type=cover.mime_type())
+    img = cover.image().resize(PREVIEW_SIZE, Image.ANTIALIAS)
+    img.save(response, cover.format)
     return response
 
 
     return response
 
 
@@ -56,19 +55,19 @@ def preview(request, book, chunk=None, rev=None):
 @require_POST
 def preview_from_xml(request):
     from hashlib import sha1
 @require_POST
 def preview_from_xml(request):
     from hashlib import sha1
-    import Image
+    from PIL import Image
     from os import makedirs
     from lxml import etree
     from os import makedirs
     from lxml import etree
-    from librarian.cover import WLCover
+    from librarian.cover import make_cover
     from librarian.dcparser import BookInfo
 
     xml = request.POST['xml']
     try:
     from librarian.dcparser import BookInfo
 
     xml = request.POST['xml']
     try:
-        info = BookInfo.from_string(xml.encode('utf-8'))
+        info = BookInfo.from_bytes(xml.encode('utf-8'))
     except:
         return HttpResponse(os.path.join(settings.STATIC_URL, "img/sample_cover.png"))
     coverid = sha1(etree.tostring(info.to_etree())).hexdigest()
     except:
         return HttpResponse(os.path.join(settings.STATIC_URL, "img/sample_cover.png"))
     coverid = sha1(etree.tostring(info.to_etree())).hexdigest()
-    cover = WLCover(info)
+    cover = make_cover(info)
 
     cover_dir = 'cover/preview'
     try:
 
     cover_dir = 'cover/preview'
     try:
@@ -76,39 +75,42 @@ def preview_from_xml(request):
     except OSError:
         pass
     fname = os.path.join(cover_dir, "%s.%s" % (coverid, cover.ext()))
     except OSError:
         pass
     fname = os.path.join(cover_dir, "%s.%s" % (coverid, cover.ext()))
-    image = cover.image().resize(PREVIEW_SIZE, Image.ANTIALIAS)
-    image.save(os.path.join(settings.MEDIA_ROOT, fname))
+    img = cover.image().resize(PREVIEW_SIZE, Image.ANTIALIAS)
+    img.save(os.path.join(settings.MEDIA_ROOT, fname))
     return HttpResponse(os.path.join(settings.MEDIA_URL, fname))
 
 
 @active_tab('cover')
 def image(request, pk):
     return HttpResponse(os.path.join(settings.MEDIA_URL, fname))
 
 
 @active_tab('cover')
 def image(request, pk):
-    image = get_object_or_404(Image, pk=pk)
+    img = get_object_or_404(Image, pk=pk)
 
     if request.user.has_perm('cover.change_image'):
         if request.method == "POST":
 
     if request.user.has_perm('cover.change_image'):
         if request.method == "POST":
-            form = forms.ImageEditForm(request.POST, instance=image)
+            form = forms.ImageEditForm(request.POST, request.FILES, instance=img)
             if form.is_valid():
                 form.save()
             if form.is_valid():
                 form.save()
-                return HttpResponseRedirect(image.get_absolute_url())
+                return HttpResponseRedirect(img.get_absolute_url())
         else:
         else:
-            form = forms.ImageEditForm(instance=image)
+            form = forms.ImageEditForm(instance=img)
         editable = True
     else:
         editable = True
     else:
-        form = forms.ReadonlyImageEditForm(instance=image)
+        form = forms.ReadonlyImageEditForm(instance=img)
         editable = False
 
     return render(request, "cover/image_detail.html", {
         editable = False
 
     return render(request, "cover/image_detail.html", {
-        "object": image,
+        "object": Image.objects.get(id=img.id),
         "form": form,
         "editable": editable,
     })
 
 
         "form": form,
         "editable": editable,
     })
 
 
+def image_file(request, pk):
+    img = get_object_or_404(Image, pk=pk)
+    return HttpResponseRedirect(img.file.url)
+
+
 @active_tab('cover')
 def image_list(request):
 @active_tab('cover')
 def image_list(request):
-    objects = Image.objects.all()
-    enable_add = request.user.has_perm('cover.add_image')
     return render(request, "cover/image_list.html", {
         'object_list': Image.objects.all(),
         'can_add': request.user.has_perm('cover.add_image'),
     return render(request, "cover/image_list.html", {
         'object_list': Image.objects.all(),
         'can_add': request.user.has_perm('cover.add_image'),
@@ -125,7 +127,7 @@ def add_image(request):
             if ff.is_valid():
                 form = forms.ImageAddForm(ff.cleaned_data)
         else:
             if ff.is_valid():
                 form = forms.ImageAddForm(ff.cleaned_data)
         else:
-            form = forms.ImageAddForm(request.POST)
+            form = forms.ImageAddForm(request.POST, request.FILES)
             if form.is_valid():
                 obj = form.save()
                 return HttpResponseRedirect(obj.get_absolute_url())
             if form.is_valid():
                 obj = form.save()
                 return HttpResponseRedirect(obj.get_absolute_url())