fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Zip archives work!
[wolnelektury.git]
/
apps
/
catalogue
/
views.py
diff --git
a/apps/catalogue/views.py
b/apps/catalogue/views.py
index
0026c17
..
1be05b4
100644
(file)
--- a/
apps/catalogue/views.py
+++ b/
apps/catalogue/views.py
@@
-201,7
+201,7
@@
def book_sets(request, slug):
context_instance=RequestContext(request))
context_instance=RequestContext(request))
-@cache.
cache_control(must_revalidate=True, max_age=1800)
+@cache.
never_cache
def download_shelf(request, slug):
""""
Create a ZIP archive on disk and transmit it in chunks of 8KB,
def download_shelf(request, slug):
""""
Create a ZIP archive on disk and transmit it in chunks of 8KB,
@@
-210,27
+210,33
@@
def download_shelf(request, slug):
"""
shelf = get_object_or_404(models.Tag, slug=slug, category='set')
"""
shelf = get_object_or_404(models.Tag, slug=slug, category='set')
+ from StringIO import StringIO
+
+
# Create a ZIP archive
# Create a ZIP archive
- temp = tempfile.TemporaryFile()
- archive = zipfile.ZipFile(temp, 'w'
, zipfile.ZIP_DEFLATED
)
+ temp = temp
= temp
file.TemporaryFile()
+ archive = zipfile.ZipFile(temp, 'w')
for book in models.Book.tagged.with_all(shelf):
if book.pdf_file:
filename = book.pdf_file.path
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))
if book.odt_file:
filename = book.odt_file.path
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))
if book.txt_file:
filename = book.txt_file.path
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))
archive.close()
archive.write(filename, str('%s.txt' % book.slug))
archive.close()
- # Write file to archive in small chunks
- 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()
temp.seek(0)
response['Content-Disposition'] = 'attachment; filename=%s.zip' % shelf.sort_key
response['Content-Length'] = temp.tell()
temp.seek(0)
+ response.write(temp.read())
+
return response
return response