Moved Gzip enabled compressor storage backend from tests.storage to compressor.storage module.

This commit is contained in:
Jannis Leidel
2011-02-17 01:44:11 +01:00
parent 05d594129f
commit bcf1efea4b
4 changed files with 26 additions and 18 deletions

View File

@@ -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)()

View File

@@ -1,16 +0,0 @@
import gzip
from compressor.storage import CompressorFileStorage
class TestStorage(CompressorFileStorage):
"""
Test compressor storage that gzips storage files
"""
def url(self, name):
return u'%s.gz' % super(TestStorage, self).url(name)
def save(self, filename, content):
filename = super(TestStorage, self).save(filename, content)
out = gzip.open(u'%s.gz' % self.path(filename), 'wb')
out.writelines(open(self.path(filename), 'rb'))
out.close()

View File

@@ -337,7 +337,7 @@ class TemplatetagTestCase(TestCase):
class StorageTestCase(TestCase):
def setUp(self):
self._storage = base.default_storage
base.default_storage = get_storage_class('compressor.tests.storage.TestStorage')()
base.default_storage = get_storage_class('compressor.storage.GzipCompressorFileStorage')()
settings.COMPRESS_ENABLED = True
def tearDown(self):

View File

@@ -182,6 +182,13 @@ COMPRESS_STORAGE
The dotted path to a Django Storage backend to be used to save the
compressed files.
``compressor`` ships with one additional storage backend:
* ``'compressor.storage.GzipCompressorFileStorage'``
A subclass of the default storage backend, which will additionally
create ``*.gz`` files of each of the compressed files.
COMPRESS_PARSER
^^^^^^^^^^^^^^^
@@ -222,7 +229,7 @@ no file changes are detected.
This is also used by the ``compress`` management command which pre-compresses
the contents of ``{% compress %}`` template tags in the cache.
COMPRESS_MINT_DELAY``
COMPRESS_MINT_DELAY
^^^^^^^^^^^^^^^^^^^
:Default: ``30`` (seconds)