initial mobi format support (with a really awful icon)
[wolnelektury.git] / apps / catalogue / views.py
index 5c0f209..9168099 100644 (file)
@@ -606,7 +606,7 @@ def download_shelf(request, slug):
     if form.is_valid():
         formats = form.cleaned_data['formats']
     if len(formats) == 0:
     if form.is_valid():
         formats = form.cleaned_data['formats']
     if len(formats) == 0:
-        formats = ['pdf', 'epub', 'odt', 'txt']
+        formats = ['pdf', 'epub', 'mobi', 'odt', 'txt']
 
     # Create a ZIP archive
     temp = tempfile.TemporaryFile()
 
     # Create a ZIP archive
     temp = tempfile.TemporaryFile()
@@ -617,6 +617,9 @@ def download_shelf(request, slug):
         if 'pdf' in formats and book.pdf_file:
             filename = book.pdf_file.path
             archive.write(filename, str('%s.pdf' % book.slug))
         if 'pdf' in formats and book.pdf_file:
             filename = book.pdf_file.path
             archive.write(filename, str('%s.pdf' % book.slug))
+        if 'mobi' in formats and book.mobi_file:
+            filename = book.mobi_file.path
+            archive.write(filename, str('%s.mobi' % book.slug))
         if book.root_ancestor not in already and 'epub' in formats and book.root_ancestor.epub_file:
             filename = book.root_ancestor.epub_file.path
             archive.write(filename, str('%s.epub' % book.root_ancestor.slug))
         if book.root_ancestor not in already and 'epub' in formats and book.root_ancestor.epub_file:
             filename = book.root_ancestor.epub_file.path
             archive.write(filename, str('%s.epub' % book.root_ancestor.slug))
@@ -646,13 +649,15 @@ def shelf_book_formats(request, shelf):
     """
     shelf = get_object_or_404(models.Tag, slug=shelf, category='set')
 
     """
     shelf = get_object_or_404(models.Tag, slug=shelf, category='set')
 
-    formats = {'pdf': False, 'epub': False, 'odt': False, 'txt': False}
+    formats = {'pdf': False, 'epub': False, 'mobi': False, 'odt': False, 'txt': False}
 
     for book in collect_books(models.Book.tagged.with_all(shelf)):
         if book.pdf_file:
             formats['pdf'] = True
         if book.root_ancestor.epub_file:
             formats['epub'] = True
 
     for book in collect_books(models.Book.tagged.with_all(shelf)):
         if book.pdf_file:
             formats['pdf'] = True
         if book.root_ancestor.epub_file:
             formats['epub'] = True
+        if book.mobi_file:
+            formats['mobi'] = True
         if book.txt_file:
             formats['txt'] = True
         for format in ('odt',):
         if book.txt_file:
             formats['txt'] = True
         for format in ('odt',):
@@ -768,6 +773,23 @@ def book_info(request, id, lang='pl'):
     return render_to_response('catalogue/book_info.html', locals(),
         context_instance=RequestContext(request))
 
     return render_to_response('catalogue/book_info.html', locals(),
         context_instance=RequestContext(request))
 
+
 def tag_info(request, id):
     tag = get_object_or_404(models.Tag, id=id)
     return HttpResponse(tag.description)
 def tag_info(request, id):
     tag = get_object_or_404(models.Tag, id=id)
     return HttpResponse(tag.description)
+
+
+def download_zip(request, format, slug):
+    url = None
+    if format == 'pdf':
+        url = models.Book.zip_pdf()
+    elif format == 'epub':
+        url = models.Book.zip_epub()
+    elif format == 'mobi':
+        url = models.Book.zip_mobi()
+    elif format == 'audiobook' and slug is not None:
+        book = models.Book.objects.get(slug=slug)
+        url = book.zip_audiobooks()
+    else:
+        raise Http404('No format specified for zip package')
+    return HttpResponseRedirect(urlquote_plus(settings.MEDIA_URL + url, safe='/?='))