Skip to content

Commit 25dba45

Browse files
committed
fix updating mtime when changing RR entry.
1 parent 93a5f4a commit 25dba45

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

Products/CMFPlone/resources/browser/resource.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ def _cache_attr_name(self):
6262
hashtool.update(self._user_local_roles().encode("utf8"))
6363
if not getattr(self, "registry", None):
6464
self.registry = getUtility(IRegistry)
65-
mtime = getattr(self.registry, _RESOURCE_REGISTRY_MTIME, None)
66-
if mtime is not None:
67-
hashtool.update(str(mtime).encode("utf8"))
65+
mtime = getattr(self.registry, _RESOURCE_REGISTRY_MTIME, None)
66+
if mtime is not None:
67+
hashtool.update(str(mtime).encode("utf8"))
6868
return f"_v_rendered_cache_{hashtool.hexdigest()}"
6969

7070
@property

Products/CMFPlone/tests/testResourceRegistries.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from plone.testing.zope import Browser
1111
from Products.CMFPlone.resources import add_bundle_on_request
1212
from Products.CMFPlone.resources import remove_bundle_on_request
13+
from Products.CMFPlone.resources.browser.resource import _RESOURCE_REGISTRY_MTIME
1314
from Products.CMFPlone.resources.browser.resource import ScriptsView
1415
from Products.CMFPlone.resources.browser.resource import StylesView
1516
from Products.CMFPlone.tests import PloneTestCase
@@ -396,7 +397,6 @@ def test_styles_on_portal_type(self):
396397
self.assertIn("http://test4.foo/test.css", results)
397398
self.assertIn("http://test3.foo/test.css", results)
398399

399-
400400
def test_scripts_authenticated(self):
401401
scripts = ScriptsView(self.layer["portal"], self.layer["request"], None)
402402
scripts.update()
@@ -455,6 +455,7 @@ def test_scripts_switching_roles(self):
455455
class TestRRControlPanel(PloneTestCase.PloneTestCase):
456456
def setUp(self):
457457
self.portal = self.layer["portal"]
458+
self.registry = getUtility(IRegistry)
458459
self.app = self.layer["app"]
459460
self.browser = Browser(self.app)
460461
self.browser.handleErrors = False
@@ -504,3 +505,43 @@ def test_update_resource(self):
504505
'<h2 class="accordion-header" id="heading-new-resource-name">',
505506
self.browser.contents,
506507
)
508+
509+
def test_update_registry_mtime(self):
510+
mtime = str(getattr(self.registry, _RESOURCE_REGISTRY_MTIME, ""))
511+
512+
add_form = self.browser.getForm(index=5)
513+
add_form.getControl(name="name").value = "my-resource"
514+
add_form.getControl(name="jscompilation").value = "++resource++my.resource.js"
515+
add_form.getControl(name="enabled").value = "checked"
516+
add_form.getControl("add").click()
517+
518+
# check for updates ScriptsViewlet
519+
self.assertIn(
520+
'++resource++my.resource.js"></script>',
521+
self.browser.contents,
522+
)
523+
524+
# new modification time has to be larger
525+
self.assertTrue(
526+
str(getattr(self.registry, _RESOURCE_REGISTRY_MTIME, ""))
527+
> mtime
528+
)
529+
530+
mtime = str(getattr(self.registry, _RESOURCE_REGISTRY_MTIME, ""))
531+
532+
# new resource form has index=3
533+
my_resource_form = self.browser.getForm(index=3)
534+
my_resource_form.getControl(name="enabled").value = ""
535+
my_resource_form.getControl("update").click()
536+
537+
# check for updated ScriptsViewlet with disabled resource
538+
self.assertNotIn(
539+
'++resource++my.resource.js"></script>',
540+
self.browser.contents,
541+
)
542+
543+
# new modification time has to be larger
544+
self.assertTrue(
545+
str(getattr(self.registry, _RESOURCE_REGISTRY_MTIME, ""))
546+
> mtime
547+
)

0 commit comments

Comments
 (0)