Fixed #28604 -- Prevented ManifestStaticFilesStorage from leaving intermediate files.
This commit is contained in:
parent
34ec52269a
commit
b27c9c953b
|
@ -55,6 +55,7 @@ class HashedFilesMixin:
|
||||||
(r"""(@import\s*["']\s*(.*?)["'])""", """@import url("%s")"""),
|
(r"""(@import\s*["']\s*(.*?)["'])""", """@import url("%s")"""),
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
|
keep_intermediate_files = True
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
@ -297,8 +298,9 @@ class HashedFilesMixin:
|
||||||
self.delete(hashed_name)
|
self.delete(hashed_name)
|
||||||
# then save the processed result
|
# then save the processed result
|
||||||
content_file = ContentFile(content.encode())
|
content_file = ContentFile(content.encode())
|
||||||
|
if self.keep_intermediate_files:
|
||||||
# Save intermediate file for reference
|
# Save intermediate file for reference
|
||||||
saved_name = self._save(hashed_name, content_file)
|
self._save(hashed_name, content_file)
|
||||||
hashed_name = self.hashed_name(name, content_file)
|
hashed_name = self.hashed_name(name, content_file)
|
||||||
|
|
||||||
if self.exists(hashed_name):
|
if self.exists(hashed_name):
|
||||||
|
@ -370,6 +372,7 @@ class ManifestFilesMixin(HashedFilesMixin):
|
||||||
manifest_version = '1.0' # the manifest format standard
|
manifest_version = '1.0' # the manifest format standard
|
||||||
manifest_name = 'staticfiles.json'
|
manifest_name = 'staticfiles.json'
|
||||||
manifest_strict = True
|
manifest_strict = True
|
||||||
|
keep_intermediate_files = False
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
|
@ -445,6 +445,18 @@ class TestCollectionManifestStorage(TestHashedFiles, CollectionTestCase):
|
||||||
# File exists on disk
|
# File exists on disk
|
||||||
self.hashed_file_path(missing_file_name)
|
self.hashed_file_path(missing_file_name)
|
||||||
|
|
||||||
|
def test_intermediate_files(self):
|
||||||
|
cached_files = os.listdir(os.path.join(settings.STATIC_ROOT, 'cached'))
|
||||||
|
# Intermediate files shouldn't be created for reference.
|
||||||
|
self.assertEqual(
|
||||||
|
len([
|
||||||
|
cached_file
|
||||||
|
for cached_file in cached_files
|
||||||
|
if cached_file.startswith('relative.')
|
||||||
|
]),
|
||||||
|
2,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@override_settings(STATICFILES_STORAGE='staticfiles_tests.storage.SimpleStorage')
|
@override_settings(STATICFILES_STORAGE='staticfiles_tests.storage.SimpleStorage')
|
||||||
class TestCollectionSimpleStorage(CollectionTestCase):
|
class TestCollectionSimpleStorage(CollectionTestCase):
|
||||||
|
|
Loading…
Reference in New Issue