diff --git a/frappe/core/doctype/role/role.py b/frappe/core/doctype/role/role.py index fdccc2287c..4539093fc9 100644 --- a/frappe/core/doctype/role/role.py +++ b/frappe/core/doctype/role/role.py @@ -15,6 +15,7 @@ desk_properties = ( "timeline", "dashboard", ) +from frappe.website.router import clear_routing_cache STANDARD_ROLES = ("Administrator", "System Manager", "Script Manager", "All", "Guest") @@ -69,6 +70,9 @@ class Role(Document): if frappe.request and self.home_page: validate_path(self.home_page) + if self.has_value_changed("home_page"): + clear_routing_cache() + def set_desk_properties(self): # set if desk_access is not allowed, unset all desk properties if self.name == "Guest": diff --git a/frappe/tests/test_caching.py b/frappe/tests/test_caching.py index 083cfa8a6b..9a0da1935f 100644 --- a/frappe/tests/test_caching.py +++ b/frappe/tests/test_caching.py @@ -297,7 +297,7 @@ class TestRedisWrapper(FrappeAPITestCase): frappe.clear_cache(user=user1) # Check that the keys for user1 are gone - for key in user_cache_keys: + for key in set(user_cache_keys) - {"home_page"}: self.assertFalse(frappe.cache.hexists(key, user1)) self.assertTrue(frappe.cache.hexists(key, user2)) diff --git a/frappe/website/router.py b/frappe/website/router.py index 41c8706331..84efd4e6c6 100644 --- a/frappe/website/router.py +++ b/frappe/website/router.py @@ -328,3 +328,4 @@ def clear_routing_cache(): get_dynamic_web_pages.clear_cache() get_published_web_forms.clear_cache() get_public_pages_from_doctypes.clear_cache() + frappe.cache.delete_value("home_page")