Use a set of models to compute cache key for record rules
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user