Fetch the manifest file only once and store the results in a module level variable.
This commit is contained in:
@@ -62,18 +62,29 @@ def get_offline_manifest_filename():
|
|||||||
return os.path.join(output_dir, settings.COMPRESS_OFFLINE_MANIFEST)
|
return os.path.join(output_dir, settings.COMPRESS_OFFLINE_MANIFEST)
|
||||||
|
|
||||||
|
|
||||||
|
_offline_manifest = None
|
||||||
|
|
||||||
def get_offline_manifest():
|
def get_offline_manifest():
|
||||||
|
global _offline_manifest
|
||||||
|
if _offline_manifest is None:
|
||||||
filename = get_offline_manifest_filename()
|
filename = get_offline_manifest_filename()
|
||||||
if default_storage.exists(filename):
|
if default_storage.exists(filename):
|
||||||
return simplejson.load(default_storage.open(filename))
|
_offline_manifest = simplejson.load(default_storage.open(filename))
|
||||||
else:
|
else:
|
||||||
return {}
|
_offline_manifest = {}
|
||||||
|
return _offline_manifest
|
||||||
|
|
||||||
|
|
||||||
|
def flush_offline_manifest():
|
||||||
|
global _offline_manifest
|
||||||
|
_offline_manifest = None
|
||||||
|
|
||||||
|
|
||||||
def write_offline_manifest(manifest):
|
def write_offline_manifest(manifest):
|
||||||
filename = get_offline_manifest_filename()
|
filename = get_offline_manifest_filename()
|
||||||
default_storage.save(filename,
|
default_storage.save(filename,
|
||||||
ContentFile(simplejson.dumps(manifest, indent=2)))
|
ContentFile(simplejson.dumps(manifest, indent=2)))
|
||||||
|
flush_offline_manifest()
|
||||||
|
|
||||||
|
|
||||||
def get_templatetag_cachekey(compressor, mode, kind):
|
def get_templatetag_cachekey(compressor, mode, kind):
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ except ImportError:
|
|||||||
from django.template import Template, Context
|
from django.template import Template, Context
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from compressor.cache import flush_offline_manifest
|
||||||
from compressor.conf import settings
|
from compressor.conf import settings
|
||||||
from compressor.exceptions import OfflineGenerationError
|
from compressor.exceptions import OfflineGenerationError
|
||||||
from compressor.management.commands.compress import Command as CompressCommand
|
from compressor.management.commands.compress import Command as CompressCommand
|
||||||
@@ -134,6 +135,7 @@ class OfflineGenerationTestCase(OfflineTestCaseMixin, TestCase):
|
|||||||
expected_hash = "f5e179b8eca4"
|
expected_hash = "f5e179b8eca4"
|
||||||
|
|
||||||
def test_rendering_without_compressing_raises_exception(self):
|
def test_rendering_without_compressing_raises_exception(self):
|
||||||
|
flush_offline_manifest()
|
||||||
self.assertRaises(OfflineGenerationError,
|
self.assertRaises(OfflineGenerationError,
|
||||||
self.template.render, Context({}))
|
self.template.render, Context({}))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user