Use a set of models to compute cache key for record rules

This commit is contained in:
Cédric Krier
2024-04-17 20:23:26 +02:00
parent 38fe0c087a
commit 53c0edfe05
6 changed files with 16 additions and 18 deletions
+3 -3
View File
@@ -20,10 +20,10 @@ class Rule(metaclass=PoolMeta):
return context
@classmethod
def _get_cache_key(cls, model_name):
def _get_cache_key(cls, model_names):
pool = Pool()
User = pool.get('res.user')
key = super()._get_cache_key(model_name)
if model_name in _EMPLOYEES_RULE_MODELS:
key = super()._get_cache_key(model_names)
if model_names & _EMPLOYEES_RULE_MODELS:
key = (*key, User.get_employees())
return key
+2 -2
View File
@@ -53,10 +53,10 @@ class Rule(metaclass=PoolMeta):
'\n- "companies" as list of ids from the current user')
@classmethod
def _get_cache_key(cls, model_name):
def _get_cache_key(cls, model_names):
pool = Pool()
User = pool.get('res.user')
key = super()._get_cache_key(model_name)
key = super()._get_cache_key(model_names)
return (*key, User.get_companies())
@classmethod
+3 -3
View File
@@ -17,10 +17,10 @@ class Rule(metaclass=PoolMeta):
return context
@classmethod
def _get_cache_key(cls, model_name):
def _get_cache_key(cls, model_names):
pool = Pool()
User = pool.get('res.user')
key = super()._get_cache_key(model_name)
if model_name == 'purchase.requisition':
key = super()._get_cache_key(model_names)
if 'purchase.requisition' in model_names:
key = (*key, User.get_employees())
return key
+3 -3
View File
@@ -24,10 +24,10 @@ class Rule(metaclass=PoolMeta):
return context
@classmethod
def _get_cache_key(cls, model_name):
def _get_cache_key(cls, model_names):
pool = Pool()
User = pool.get('res.user')
key = super()._get_cache_key(model_name)
if model_name in _EMPLOYEES_RULE_MODELS:
key = super()._get_cache_key(model_names)
if model_names & _EMPLOYEES_RULE_MODELS:
key = (*key, User.get_employees())
return key
+2 -4
View File
@@ -203,7 +203,7 @@ class Rule(ModelSQL, ModelView):
}
@classmethod
def _get_cache_key(cls, model_name):
def _get_cache_key(cls, model_names):
pool = Pool()
User = pool.get('res.user')
# _datetime value will be added to the domain
@@ -294,9 +294,7 @@ class Rule(ModelSQL, ModelView):
model_names, _ = _get_access_models(pool.get(model_name))
key = (model_name, mode)
for m_name in sorted(model_names):
key += cls._get_cache_key(m_name)
key = (model_name, mode) + cls._get_cache_key(model_names)
domain = cls._domain_get_cache.get(key, False)
if domain is not False:
return domain
+3 -3
View File
@@ -220,9 +220,9 @@ class Rule(metaclass=PoolMeta):
return context
@classmethod
def _get_cache_key(cls, model_name):
key = super()._get_cache_key(model_name)
if model_name in {'res.user.warning', 'res.user.application'}:
def _get_cache_key(cls, model_names):
key = super()._get_cache_key(model_names)
if model_names & {'res.user.warning', 'res.user.application'}:
key = (*key, Transaction().user)
return key