I only found one solution for me, i delete all rules in development environment, and i try to create new rules with work fine.
I make a little add in openerp/addons/base/ir/ir_rule.py for see what domain is applied.
Method _compute_domain: Line No. 108
def _compute_domain(self, cr, uid, model_name, mode="read"):
# ALCA
# print model_name
# if model_name == 'hr.holidays' or model_name == 'sale.config.settings':
# pdb.set_trace()
# END ALCA
if mode not in self._MODES:
raise ValueError('Invalid mode: %r' % (mode,))
if uid == SUPERUSER_ID:
return None cr.execute("""SELECT r.id FROM ir_rule r JOIN ir_model m ON (r.model_id = m.id) WHERE m.model = %s
AND r.active is True
AND r.perm_""" + mode + """
AND (r.id IN (SELECT rule_group_id FROM rule_group_rel g_rel JOIN res_groups_users_rel u_rel ON (g_rel.group_id = u_rel.gid) WHERE u_rel.uid = %s) OR r.global)""", (model_name, uid))
rule_ids = [x[0] for x in cr.fetchall()]
if rule_ids:
# browse user as super-admin root to avoid access errors!
user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid) global_domains = [] # list of domains group_domains = {} # map: group -> list of domains
for rule in self.browse(cr, SUPERUSER_ID, rule_ids):
# read 'domain' as UID to have the correct eval context for the rule. rule_domain = self.read(cr, uid, rule.id, ['domain'])['domain']
dom = expression.normalize_domain(rule_domain)
for group in rule.groups: if group in user.groups_id: group_domains.setdefault(group, []).append(dom)
if not rule.groups: global_domains.append(dom)
# combine global domains and group domains
if group_domains: group_domain = expression.OR(map(expression.OR, group_domains.values()))
else: group_domain = []
domain = expression.AND(global_domains + [group_domain])
return domain
return []
Hello.
I only found one solution for me, i delete all rules in development environment, and i try to create new rules with work fine. addons/ base/ir/ ir_rule. py for see what domain is applied.
I make a little add in openerp/
Method _compute_domain: Line No. 108
def _compute_ domain( self, cr, uid, model_name, mode="read"): settings' :
# ALCA
# print model_name
# if model_name == 'hr.holidays' or model_name == 'sale.config.
# pdb.set_trace()
# END ALCA
if mode not in self._MODES:
raise ValueError('Invalid mode: %r' % (mode,))
if uid == SUPERUSER_ID:
cr.execute( """SELECT r.id
FROM ir_rule r
JOIN ir_model m ON (r.model_id = m.id)
WHERE m.model = %s
JOIN res_groups_ users_rel u_rel ON (g_rel.group_id = u_rel.gid)
WHERE u_rel.uid = %s) OR r.global)""", (model_name, uid)) get('res. users') .browse( cr, SUPERUSER_ID, uid)
global_ domains = [] # list of domains
group_ domains = {} # map: group -> list of domains
rule_ domain = self.read(cr, uid, rule.id, ['domain' ])['domain' ]
return None
AND r.active is True
AND r.perm_""" + mode + """
AND (r.id IN (SELECT rule_group_id FROM rule_group_rel g_rel
rule_ids = [x[0] for x in cr.fetchall()]
if rule_ids:
# browse user as super-admin root to avoid access errors!
user = self.pool.
for rule in self.browse(cr, SUPERUSER_ID, rule_ids):
# read 'domain' as UID to have the correct eval context for the rule.
# ALCA
rule_ name = self.read(cr, uid, rule.id, ['name'])['name']
rule_ domain_ force = self.read(cr, uid, rule.id, ['domain_ force'] )['domain_ force']
print "Regla ID: "+str(rule.id)+" - Nombre: "+str(rule_name)
print "Dominio: "+str(rule_ domain) +" - Dominio Forzado: "+str(rule_ domain_ force)
print "."
# END ALCA
dom = expression. normalize_ domain( rule_domain)
if group in user.groups_id:
group_ domains. setdefault( group, []).append(dom)
global_ domains. append( dom)
group_ domain = expression. OR(map( expression. OR, group_domains. values( )))
group_ domain = [] AND(global_ domains + [group_domain])
for group in rule.groups:
if not rule.groups:
# combine global domains and group domains
if group_domains:
else:
domain = expression.
return domain
return []