Zip archives work!
authorMarek Stępniowski <marek@stepniowski.com>
Thu, 18 Sep 2008 15:51:42 +0000 (17:51 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Thu, 18 Sep 2008 15:51:42 +0000 (17:51 +0200)
apps/catalogue/views.py
wolnelektury/settings.py

index 58ef892..1be05b4 100644 (file)
@@ -210,34 +210,33 @@ def download_shelf(request, slug):
     """
     shelf = get_object_or_404(models.Tag, slug=slug, category='set')
     
+    from StringIO import StringIO
+    
+    
     # Create a ZIP archive
-    temp = tempfile.TemporaryFile()
+    temp = temp = tempfile.TemporaryFile()
     archive = zipfile.ZipFile(temp, 'w')
     for book in models.Book.tagged.with_all(shelf):
         if book.pdf_file:
             filename = book.pdf_file.path
             print filename
-            archive.write(filename, str('%s.pdf' % book.slug[:7]))
+            archive.write(filename, str('%s.pdf' % book.slug))
         if book.odt_file:
             filename = book.odt_file.path
             print filename
-            archive.write(filename, str('%s.odt' % book.slug[:7]))
+            archive.write(filename, str('%s.odt' % book.slug))
         if book.txt_file:
             filename = book.txt_file.path
             print filename
-            archive.write(filename, str('%s.txt' % book.slug[:7]))
+            archive.write(filename, str('%s.txt' % book.slug))
     archive.close()
-
-    zf = zipfile.ZipFile(temp, 'r')
-    print zf.testzip()
-    print zf.namelist()
     
-    wrapper = FileWrapper(temp)
-    response = HttpResponse(wrapper, content_type='application/zip')
+    response = HttpResponse(content_type='application/zip', mimetype='application/x-zip-compressed')
     response['Content-Disposition'] = 'attachment; filename=%s.zip' % shelf.sort_key
     response['Content-Length'] = temp.tell()
-    print temp.tell()
     temp.seek(0)
+    response.write(temp.read())
+
     return response
 
 
index 12edea3..3afa9dd 100644 (file)
@@ -72,13 +72,13 @@ MIDDLEWARE_CLASSES = [
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django.middleware.doc.XViewMiddleware',
+    'django.middleware.doc.XViewMiddleware',
     'pagination.middleware.PaginationMiddleware',
 ]
 
 # If DEBUG is enabled add query log to bottom of every template
-if DEBUG:
-    MIDDLEWARE_CLASSES.append('middleware.ProfileMiddleware')
+if DEBUG:
+    MIDDLEWARE_CLASSES.append('middleware.ProfileMiddleware')
 
 ROOT_URLCONF = 'urls'