ZipFiles (does not work?).
authorMarek Stępniowski <marek@stepniowski.com>
Thu, 18 Sep 2008 15:00:33 +0000 (17:00 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Thu, 18 Sep 2008 15:00:33 +0000 (17:00 +0200)
apps/catalogue/management/commands/importbooks.py
apps/catalogue/models.py
apps/catalogue/views.py

index c0a5df1..484ed4a 100644 (file)
@@ -1,9 +1,10 @@
 import os
 import sys
 import os
 import sys
+from optparse import make_option
 
 from django.core.management.base import BaseCommand
 from django.core.management.color import color_style
 
 from django.core.management.base import BaseCommand
 from django.core.management.color import color_style
-from optparse import make_option
+from django.core.files import File
 
 from catalogue.models import Book
 
 
 from catalogue.models import Book
 
@@ -38,7 +39,6 @@ class Command(BaseCommand):
         for dir_name in directories:
             if not os.path.isdir(dir_name):
                 print self.style.ERROR("%s: Not a directory. Skipping." % dir_name)
         for dir_name in directories:
             if not os.path.isdir(dir_name):
                 print self.style.ERROR("%s: Not a directory. Skipping." % dir_name)
-                files_skipped += 1
             else:
                 for file_name in os.listdir(dir_name):
                     file_path = os.path.join(dir_name, file_name)
             else:
                 for file_name in os.listdir(dir_name):
                     file_path = os.path.join(dir_name, file_name)
@@ -47,7 +47,6 @@ class Command(BaseCommand):
                     # Skip files that are not XML files
                     if not ext == '.xml':
                         print self.style.NOTICE("%s: Not an XML file. Skipping." % file_path)
                     # Skip files that are not XML files
                     if not ext == '.xml':
                         print self.style.NOTICE("%s: Not an XML file. Skipping." % file_path)
-                        files_skipped += 1
                         continue
                     
                     if verbose > 0:
                         continue
                     
                     if verbose > 0:
index 486172a..30131bd 100644 (file)
@@ -111,6 +111,8 @@ class Book(models.Model):
                 formats.append(u'<a href="%s">Plik PDF</a>' % self.pdf_file.url)
             if self.odt_file:
                 formats.append(u'<a href="%s">Plik ODT</a>' % self.odt_file.url)
                 formats.append(u'<a href="%s">Plik PDF</a>' % self.pdf_file.url)
             if self.odt_file:
                 formats.append(u'<a href="%s">Plik ODT</a>' % self.odt_file.url)
+            if self.odt_file:
+                formats.
             
             self._short_html = unicode(render_to_string('catalogue/book_short.html',
                 {'book': self, 'tags': tags, 'formats': formats}))
             
             self._short_html = unicode(render_to_string('catalogue/book_short.html',
                 {'book': self, 'tags': tags, 'formats': formats}))
@@ -154,6 +156,7 @@ class Book(models.Model):
             raise Book.AlreadyExists('Book %s already exists' % book_slug)
         
         book.title = book_info.title
             raise Book.AlreadyExists('Book %s already exists' % book_slug)
         
         book.title = book_info.title
+        book._short_html = ''
         book.save()
         
         book_tags = []
         book.save()
         
         book_tags = []
index 0026c17..58ef892 100644 (file)
@@ -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,
@@ -212,24 +212,31 @@ def download_shelf(request, slug):
     
     # Create a ZIP archive
     temp = tempfile.TemporaryFile()
     
     # Create a ZIP archive
     temp = tempfile.TemporaryFile()
-    archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
+    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
-            archive.write(filename, str('%s.pdf' % book.slug))
+            print filename
+            archive.write(filename, str('%s.pdf' % book.slug[:7]))
         if book.odt_file:
             filename = book.odt_file.path
         if book.odt_file:
             filename = book.odt_file.path
-            archive.write(filename, str('%s.odt' % book.slug))
+            print filename
+            archive.write(filename, str('%s.odt' % book.slug[:7]))
         if book.txt_file:
             filename = book.txt_file.path
         if book.txt_file:
             filename = book.txt_file.path
-            archive.write(filename, str('%s.txt' % book.slug))
+            print filename
+            archive.write(filename, str('%s.txt' % book.slug[:7]))
     archive.close()
     archive.close()
+
+    zf = zipfile.ZipFile(temp, 'r')
+    print zf.testzip()
+    print zf.namelist()
     
     
-    # Write file to archive in small chunks
     wrapper = FileWrapper(temp)
     response = HttpResponse(wrapper, content_type='application/zip')
     response['Content-Disposition'] = 'attachment; filename=%s.zip' % shelf.sort_key
     response['Content-Length'] = temp.tell()
     wrapper = FileWrapper(temp)
     response = HttpResponse(wrapper, content_type='application/zip')
     response['Content-Disposition'] = 'attachment; filename=%s.zip' % shelf.sort_key
     response['Content-Length'] = temp.tell()
+    print temp.tell()
     temp.seek(0)
     return response
 
     temp.seek(0)
     return response