Small change

01:44:08  IST) Fabien (fp): Some notes: I think that when you put groups on the view, it's to hide the field, not to put it as readonly.

bzr revid: mga@tinyerp.com-78252a0a6619393ed5fabb79219689dc32172f4a
This commit is contained in:
Mantavya Gajjar 2008-03-26 08:05:50 +00:00
parent 7cc65bad3e
commit 4ee1ffc4d0
1 changed files with 30 additions and 20 deletions

View File

@ -1469,32 +1469,38 @@ class orm(object):
attrs = {'views': views}
fields[node.getAttribute('name')] = attrs
if node.hasAttribute('groups'):
groups = None
group_str = node.getAttribute('groups')
if ',' in group_str:
groups = group_str.split(',');
readonly = False
access_pool = self.pool.get('ir.model.access')
for group in groups:
readonly = readonly and access_pool.check_groups(cr, user, group)
if readonly:
fields[node.getAttribute('name')] = {'readonly':True}
else:
fields[node.getAttribute('name')] = {'readonly':False}
else:
if not self.pool.get('ir.model.access').check_groups(cr, user, group_str):
fields[node.getAttribute('name')] = {'readonly':True}
else:
fields[node.getAttribute('name')] = {'readonly':False}
elif node.nodeType==node.ELEMENT_NODE and node.localName in ('form','tree'):
result = self.view_header_get(cr, user, False, node.localName, context)
if result:
node.setAttribute('string', result.decode('utf-8'))
if node.nodeType==node.ELEMENT_NODE and node.hasAttribute('groups'):
groups = None
group_str = node.getAttribute('groups')
if ',' in group_str:
groups = group_str.split(',');
readonly = False
access_pool = self.pool.get('ir.model.access')
for group in groups:
readonly = readonly and access_pool.check_groups(cr, user, group)
if readonly:
parent = node.parentNode
parent.removeChild(node)
#fields[node.getAttribute('name')] = {'readonly':True}
#node.re
else:
fields[node.getAttribute('name')] = {'readonly':False}
else:
if not self.pool.get('ir.model.access').check_groups(cr, user, group_str):
#fields[node.getAttribute('name')] = {'readonly':True}
parent = node.parentNode
parent.removeChild(node)
else:
fields[node.getAttribute('name')] = {'readonly':False}
if node.nodeType == node.ELEMENT_NODE:
# translate view
if ('lang' in context) and not result:
@ -1563,6 +1569,7 @@ class orm(object):
arch = node.toxml(encoding="utf-8").replace('\t', '')
fields = self.fields_get(cr, user, fields_def.keys(), context)
for field in fields_def:
fields[field].update(fields_def[field])
return arch, fields
@ -1751,6 +1758,7 @@ class orm(object):
resaction = ir_values_obj.get(cr, user, 'action',
'client_action_multi', [(self._name, False)], False,
context)
resrelate = ir_values_obj.get(cr, user, 'action',
'client_action_relate', [(self._name, False)], False,
context)
@ -1759,8 +1767,10 @@ class orm(object):
resaction = filter(lambda x: not x.get('multi',False), resaction)
resprint = filter(lambda x: not x.get('multi',False), resprint)
resrelate = map(lambda x:x[2], resrelate)
for x in resprint+resaction+resrelate:
x['string'] = x['name']
result['toolbar'] = {
'print': resprint,
'action': resaction,