Rifakat (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/6.1-opw-575655-rha into 
lp:openobject-server/6.1.

Requested reviews:
  Naresh(OpenERP) (nch-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/6.1-opw-575655-rha/+merge/109792

Hello,

Changed field attribute to readonly when we provide group in read on field 
definition.
'test': fields.char('Test', size=64, read=['base.group_sale_salesman'], 
write=['base.group_sale_manager']),
This field will be grey out for the user who belongs to above read group.

Currently user is not able to change the value if he has read access, it always 
resets but we can face problem
with on_change(), on_chnage event always take value from user interface so it 
may raise
problem.

Furthermore, user won't be able to see the field(invisible) if he doesn't 
belong to read or write
group.

Thanks for your review.

Regards,
Rifakat Haradwala
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/6.1-opw-575655-rha/+merge/109792
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/6.1-opw-575655-rha.
=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py	2012-06-09 01:05:49 +0000
+++ openerp/osv/orm.py	2012-06-12 09:41:21 +0000
@@ -1598,6 +1598,7 @@
         result = False
         fields = {}
         children = True
+        ir_model_access = self.pool.get('ir.model.access')
 
         modifiers = {}
 
@@ -1610,7 +1611,6 @@
             """ Set invisible to true if the user is not in the specified groups. """
             if node.get('groups'):
                 groups = node.get('groups').split(',')
-                ir_model_access = self.pool.get('ir.model.access')
                 can_see = any(ir_model_access.check_groups(cr, user, group) for group in groups)
                 if not can_see:
                     node.set('invisible', '1')
@@ -1649,6 +1649,17 @@
                     column = False
 
                 if column:
+                    can_write = False
+                    if column.read:
+                        if column.write:
+                            can_write = any(ir_model_access.check_groups(cr, user, group) for group in column.write)
+                        can_see = any(ir_model_access.check_groups(cr, user, group) for group in column.read)
+                        if can_see and not can_write:
+                            node.set('readonly', '1')
+                            modifiers['readonly'] = True
+                        if not (can_see and can_write):
+                            node.set('invisible', '1')
+                            modifiers['invisible'] = True
                     relation = self.pool.get(column._obj)
 
                     children = False

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to