Fixed #22315 -- str/bytes mismatch in staticfiles
Previously, `ManifestFilesMixin.read_manifest` failed in Python 3 because `json.loads` accepts `str` not `bytes`.
This commit is contained in:
parent
e3c4205b79
commit
86dcac4634
|
@ -292,7 +292,7 @@ class ManifestFilesMixin(HashedFilesMixin):
|
||||||
def read_manifest(self):
|
def read_manifest(self):
|
||||||
try:
|
try:
|
||||||
with self.open(self.manifest_name) as manifest:
|
with self.open(self.manifest_name) as manifest:
|
||||||
return manifest.read()
|
return manifest.read().decode('utf-8')
|
||||||
except IOError:
|
except IOError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -319,7 +319,8 @@ class ManifestFilesMixin(HashedFilesMixin):
|
||||||
payload = {'paths': self.hashed_files, 'version': self.manifest_version}
|
payload = {'paths': self.hashed_files, 'version': self.manifest_version}
|
||||||
if self.exists(self.manifest_name):
|
if self.exists(self.manifest_name):
|
||||||
self.delete(self.manifest_name)
|
self.delete(self.manifest_name)
|
||||||
self._save(self.manifest_name, ContentFile(json.dumps(payload)))
|
contents = json.dumps(payload).encode('utf-8')
|
||||||
|
self._save(self.manifest_name, ContentFile(contents))
|
||||||
|
|
||||||
|
|
||||||
class _MappingCache(object):
|
class _MappingCache(object):
|
||||||
|
|
|
@ -662,6 +662,11 @@ class TestCollectionManifestStorage(TestHashedFiles, BaseCollectionTestCase,
|
||||||
storage.staticfiles_storage.manifest_version,
|
storage.staticfiles_storage.manifest_version,
|
||||||
force_text(manifest_content))
|
force_text(manifest_content))
|
||||||
|
|
||||||
|
def test_parse_cache(self):
|
||||||
|
hashed_files = storage.staticfiles_storage.hashed_files
|
||||||
|
manifest = storage.staticfiles_storage.load_manifest()
|
||||||
|
self.assertEqual(hashed_files, manifest)
|
||||||
|
|
||||||
|
|
||||||
# we set DEBUG to False here since the template tag wouldn't work otherwise
|
# we set DEBUG to False here since the template tag wouldn't work otherwise
|
||||||
@override_settings(**dict(
|
@override_settings(**dict(
|
||||||
|
|
Loading…
Reference in New Issue