diff options
Diffstat (limited to 'compressor/storage.py')
| -rw-r--r-- | compressor/storage.py | 17 |
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)() |
