Make the default compressor storage a lazy object to not load the storage class on module level.
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
import os
|
||||
|
||||
|
||||
from django.conf import settings as django_settings
|
||||
from django.template.loader import render_to_string
|
||||
from django.core.files.base import ContentFile
|
||||
from django.core.files.storage import get_storage_class
|
||||
|
||||
from compressor.conf import settings
|
||||
from compressor import filters
|
||||
from compressor.exceptions import UncompressableFileError
|
||||
from compressor.utils import get_hexdigest, get_mtime, get_class
|
||||
|
||||
STORAGE = get_storage_class(settings.STORAGE)()
|
||||
|
||||
class Compressor(object):
|
||||
|
||||
def __init__(self, content, output_prefix="compressed"):
|
||||
@@ -57,7 +53,8 @@ class Compressor(object):
|
||||
|
||||
@property
|
||||
def storage(self):
|
||||
return STORAGE
|
||||
from compressor.storage import default_storage
|
||||
return default_storage
|
||||
|
||||
@property
|
||||
def hunks(self):
|
||||
|
@@ -1,5 +1,6 @@
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
from django.core.files.storage import get_storage_class
|
||||
from django.utils.functional import LazyObject
|
||||
|
||||
from compressor.conf import settings
|
||||
|
||||
@@ -18,3 +19,9 @@ class CompressorFileStorage(FileSystemStorage):
|
||||
base_url = settings.MEDIA_URL
|
||||
super(CompressorFileStorage, self).__init__(location, base_url,
|
||||
*args, **kwargs)
|
||||
|
||||
class DefaultStorage(LazyObject):
|
||||
def _setup(self):
|
||||
self._wrapped = get_storage_class(settings.STORAGE)()
|
||||
|
||||
default_storage = DefaultStorage()
|
||||
|
@@ -1,17 +1,18 @@
|
||||
import os, re
|
||||
import os
|
||||
import re
|
||||
import gzip
|
||||
from BeautifulSoup import BeautifulSoup
|
||||
|
||||
from django.template import Template, Context, TemplateSyntaxError
|
||||
from django.test import TestCase
|
||||
from compressor import CssCompressor, JsCompressor
|
||||
from django.core.files.storage import get_storage_class
|
||||
from django.conf import settings as django_settings
|
||||
|
||||
from compressor import CssCompressor, JsCompressor, storage
|
||||
from compressor.conf import settings
|
||||
from compressor.storage import CompressorFileStorage
|
||||
from compressor.utils import get_hexdigest, get_mtime
|
||||
|
||||
from django.conf import settings as django_settings
|
||||
|
||||
from BeautifulSoup import BeautifulSoup
|
||||
|
||||
|
||||
class CompressorTestCase(TestCase):
|
||||
|
||||
@@ -332,12 +333,12 @@ class TestStorage(CompressorFileStorage):
|
||||
|
||||
class StorageTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self._storage = settings.STORAGE
|
||||
settings.STORAGE = 'core.tests.TestStorage'
|
||||
self._storage = storage.default_storage
|
||||
storage.default_storage = get_storage_class('core.tests.TestStorage')()
|
||||
settings.COMPRESS = True
|
||||
|
||||
def tearDown(self):
|
||||
settings.STORAGE = self._storage
|
||||
storage.default_storage = self._storage
|
||||
|
||||
def test_css_tag_with_storage(self):
|
||||
template = u"""{% load compress %}{% compress css %}
|
||||
|
Reference in New Issue
Block a user