summaryrefslogtreecommitdiff
path: root/compressor/storage.py
diff options
context:
space:
mode:
Diffstat (limited to 'compressor/storage.py')
-rw-r--r--compressor/storage.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/compressor/storage.py b/compressor/storage.py
index 6492a3a..a852cec 100644
--- a/compressor/storage.py
+++ b/compressor/storage.py
@@ -1,3 +1,5 @@
+import gzip
+
from django.core.files.storage import FileSystemStorage, get_storage_class
from django.utils.functional import LazyObject
@@ -19,6 +21,21 @@ class CompressorFileStorage(FileSystemStorage):
super(CompressorFileStorage, self).__init__(location, base_url,
*args, **kwargs)
+class GzipCompressorFileStorage(CompressorFileStorage):
+ """
+ The standard compressor file system storage that gzips storage files
+ additionally to the usual files.
+ """
+ def url(self, name):
+ return u'%s.gz' % super(GzipCompressorFileStorage, self).url(name)
+
+ def save(self, filename, content):
+ filename = super(GzipCompressorFileStorage, self).save(filename, content)
+ out = gzip.open(u'%s.gz' % self.path(filename), 'wb')
+ out.writelines(open(self.path(filename), 'rb'))
+ out.close()
+
+
class DefaultStorage(LazyObject):
def _setup(self):
self._wrapped = get_storage_class(settings.COMPRESS_STORAGE)()