Skip to content

Commit

Permalink
Mix mode into offline manifest hash key to fix bug in preload
Browse files Browse the repository at this point in the history
  • Loading branch information
jsumnerPhD committed Jan 2, 2021
1 parent 1b1ee8d commit e35713a
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
8 changes: 7 additions & 1 deletion compressor/management/commands/compress.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,13 @@ def compress(self, engine, extensions, verbosity, follow_links, log):

parser.process_node(template, context, node)
rendered = parser.render_nodelist(template, context, node)
key = get_offline_hexdigest(rendered)

if engine == 'django':
prefix = node.mode
elif engine == 'jinja2':
prefix = node.call.args[1].value

key = get_offline_hexdigest(prefix + rendered)

if key in offline_manifest:
continue
Expand Down
6 changes: 3 additions & 3 deletions compressor/templatetags/compress.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,13 @@ def is_offline_compression_enabled(self, forced):
return (settings.COMPRESS_ENABLED
and settings.COMPRESS_OFFLINE) or forced

def render_offline(self, context):
def render_offline(self, context, mode):
"""
If enabled and in offline mode, and not forced check the offline cache
and return the result if given
"""
original_content = self.get_original_content(context)
key = get_offline_hexdigest(original_content)
key = get_offline_hexdigest(mode + original_content)
offline_manifest = get_offline_manifest()
if key in offline_manifest:
return offline_manifest[key].replace(
Expand Down Expand Up @@ -96,7 +96,7 @@ def render_compressed(self, context, kind, mode, name=None, forced=False, log=No

# See if it has been rendered offline
if self.is_offline_compression_enabled(forced) and not forced:
return self.render_offline(context)
return self.render_offline(context, mode)

# Take a shortcut if we really don't have anything to do
if (not settings.COMPRESS_ENABLED
Expand Down
8 changes: 4 additions & 4 deletions compressor/tests/test_offline.py
Original file line number Diff line number Diff line change
Expand Up @@ -774,20 +774,20 @@ def test_multiple_engines(self):
call_command('compress', engines=["django"], **opts)
manifest_django = get_offline_manifest()
manifest_django_expected = self._build_expected_manifest(
{'0fed9c02607acba22316a328075a81a74e0983ae79470daa9d3707a337623dc3': '0241107e9a9a'})
{'ea63edc7824a4c7278282662a146fbecefe841f6356604d2c5a67fe01fb5bdf1': '0241107e9a9a'})
self.assertEqual(manifest_django, manifest_django_expected)

call_command('compress', engines=["jinja2"], **opts)
manifest_jinja2 = get_offline_manifest()
manifest_jinja2_expected = self._build_expected_manifest(
{'077408d23d4a829b8f88db2eadcf902b29d71b14f94018d900f38a3f8ed24c94': '5694ca83dd14'})
{'5f81d961a83d86c2e96c6258b46997853f1ed04cd07938ea01c1acb8b35d4984': '5694ca83dd14'})
self.assertEqual(manifest_jinja2, manifest_jinja2_expected)

call_command('compress', engines=["django", "jinja2"], **opts)
manifest_both = get_offline_manifest()
manifest_both_expected = self._build_expected_manifest(
{'0fed9c02607acba22316a328075a81a74e0983ae79470daa9d3707a337623dc3': '0241107e9a9a',
'077408d23d4a829b8f88db2eadcf902b29d71b14f94018d900f38a3f8ed24c94': '5694ca83dd14'})
{'ea63edc7824a4c7278282662a146fbecefe841f6356604d2c5a67fe01fb5bdf1': '0241107e9a9a',
'5f81d961a83d86c2e96c6258b46997853f1ed04cd07938ea01c1acb8b35d4984': '5694ca83dd14'})
self.assertEqual(manifest_both, manifest_both_expected)


Expand Down

0 comments on commit e35713a

Please sign in to comment.