Skip to content

Commit 03842e3

Browse files
simahawkrven
authored andcommitted
endpoint_route_handler: wipe cache only once on sync
1 parent b9004c5 commit 03842e3

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

endpoint_route_handler/models/endpoint_route_handler_tool.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@ def _refresh_endpoint_data(self):
2828
self._compute_endpoint_hash()
2929
self._compute_route()
3030

31-
def _register_controllers(self, init=False, options=None):
31+
def _register_controllers(self, init=False, options=None, clear_cache=True):
3232
if self:
3333
self._refresh_endpoint_data()
34-
return super()._register_controllers(init=init, options=options)
34+
return super()._register_controllers(
35+
init=init, options=options, clear_cache=clear_cache
36+
)
3537

36-
def _unregister_controllers(self):
38+
def _unregister_controllers(self, clear_cache=True):
3739
if self:
3840
self._refresh_endpoint_data()
39-
return super()._unregister_controllers()
41+
return super()._unregister_controllers(clear_cache=clear_cache)
4042

4143
@api.model
4244
def new(self, values=None, origin=None, ref=None):

endpoint_route_handler/models/endpoint_route_sync_mixin.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,12 @@ def _handle_registry_sync(self, record_ids=None):
6262
record_ids = record_ids or self.ids
6363
_logger.info("%s sync registry for %s", self._name, str(record_ids))
6464
records = self.browse(record_ids).exists()
65-
records.filtered(lambda x: x.active)._register_controllers()
66-
records.filtered(lambda x: not x.active)._unregister_controllers()
65+
# update controllers and clear cache only once
66+
records.filtered(lambda x: x.active)._register_controllers(clear_cache=False)
67+
records.filtered(lambda x: not x.active)._unregister_controllers(
68+
clear_cache=False
69+
)
70+
self.env.registry.clear_cache("routing")
6771

6872
def _handle_registry_sync_post_commit(self, record_ids=None):
6973
"""Handle registry sync after commit.
@@ -84,23 +88,30 @@ def unlink(self):
8488
self._unregister_controllers()
8589
return super().unlink()
8690

87-
def _register_controllers(self, init=False, options=None):
91+
def _register_controllers(self, init=False, options=None, clear_cache=True):
8892
if not self:
8993
return
9094
rules = self._prepare_endpoint_rules(options=options)
9195
self._endpoint_registry.update_rules(rules, init=init)
92-
self.env.registry.clear_cache("routing")
96+
if clear_cache:
97+
self.env.registry.clear_cache("routing")
9398
_logger.debug(
9499
"%s registered controllers: %s",
95100
self._name,
96101
", ".join([r.route for r in rules]),
97102
)
98103

99-
def _unregister_controllers(self):
104+
def _unregister_controllers(self, clear_cache=True):
100105
if not self:
101106
return
102107
self._endpoint_registry.drop_rules(self._registered_endpoint_rule_keys())
103-
self.env.registry.clear_cache("routing")
108+
if clear_cache:
109+
self.env.registry.clear_cache("routing")
110+
_logger.debug(
111+
"%s unregistered controllers: %s",
112+
self._name,
113+
", ".join(self._registered_endpoint_rule_keys()),
114+
)
104115

105116
def _routing_impacting_fields(self, options=None):
106117
"""Return list of fields that have impact on routing for current record."""

0 commit comments

Comments
 (0)