Raphael Collet (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-access-ui-jam into lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-access-ui-jam/+merge/122293

Hide buttons "Create", "Edit", etc. when the user does not have the 
corresponding access rights.
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-access-ui-jam/+merge/122293
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-access-ui-jam.
=== modified file 'openerp/addons/base/rng/view.rng'
--- openerp/addons/base/rng/view.rng	2012-08-13 09:15:19 +0000
+++ openerp/addons/base/rng/view.rng	2012-08-31 14:45:49 +0000
@@ -172,6 +172,9 @@
     <rng:define name="form">
         <rng:element name="form">
             <rng:ref name="overload"/>
+            <rng:optional><rng:attribute name="create" /></rng:optional>
+            <rng:optional><rng:attribute name="delete" /></rng:optional>
+            <rng:optional><rng:attribute name="edit" /></rng:optional>
             <rng:optional><rng:attribute name="string"/></rng:optional>
             <rng:optional><rng:attribute name="type"/></rng:optional>
             <rng:optional><rng:attribute name="link"/></rng:optional>
@@ -181,7 +184,8 @@
 
     <rng:define name="diagram">
         <rng:element name="diagram">
-            <rng:optional><rng:attribute name="string"/></rng:optional>                                    
+            <rng:optional><rng:attribute name="create" /></rng:optional>
+            <rng:optional><rng:attribute name="string"/></rng:optional>
             <rng:ref name="node"/>
             <rng:ref name="arrow"/>            
             <rng:zeroOrMore>
@@ -223,6 +227,8 @@
                 <rng:attribute name="default_group_by" />
             </rng:optional>
             <rng:optional><rng:attribute name="create" /></rng:optional>
+            <rng:optional><rng:attribute name="delete" /></rng:optional>
+            <rng:optional><rng:attribute name="edit" /></rng:optional>
             <rng:optional><rng:attribute name="quick_create" /></rng:optional>
             <rng:zeroOrMore>
                 <rng:ref name="field"/>
@@ -238,6 +244,9 @@
     <rng:define name="tree">
         <rng:element name="tree">
             <rng:ref name="overload"/>
+            <rng:optional><rng:attribute name="create" /></rng:optional>
+            <rng:optional><rng:attribute name="delete" /></rng:optional>
+            <rng:optional><rng:attribute name="edit" /></rng:optional>
             <rng:optional><rng:attribute name="string"/></rng:optional>
             <rng:optional><rng:attribute name="colors"/></rng:optional>
             <rng:optional><rng:attribute name="fonts"/></rng:optional>
@@ -376,6 +385,9 @@
                  <rng:value>5years</rng:value>
               </rng:choice></rng:attribute>
             </rng:optional>
+            <rng:optional><rng:attribute name="create"/></rng:optional>
+            <rng:optional><rng:attribute name="delete"/></rng:optional>
+            <rng:optional><rng:attribute name="edit"/></rng:optional>
             <rng:optional><rng:attribute name="color"/></rng:optional>
             <rng:optional><rng:attribute name="date_delay"/></rng:optional>
             <rng:optional><rng:attribute name="day_length"/></rng:optional>

=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py	2012-08-31 13:53:09 +0000
+++ openerp/osv/orm.py	2012-08-31 14:45:49 +0000
@@ -1825,6 +1825,10 @@
             if node.getchildren()[0].tag == 'node':
                 node_fields = self.pool.get(node.getchildren()[0].get('object')).fields_get(cr, user, None, context)
                 fields.update(node_fields)
+                if not node.get("create"):
+                    fn = getattr(self.pool.get(node.getchildren()[1].get('object')), 'check_create')
+                    if not fn(cr, user, raise_exception=False):
+                        node.set("create", 'false')
             if node.getchildren()[1].tag == 'arrow':
                 arrow_fields = self.pool.get(node.getchildren()[1].get('object')).fields_get(cr, user, None, context)
                 fields.update(arrow_fields)
@@ -1832,6 +1836,10 @@
             fields = self.fields_get(cr, user, None, context)
         fields_def = self.__view_look_dom(cr, user, node, view_id, False, fields, context=context)
         node = self._disable_workflow_buttons(cr, user, node)
+        if node.tag in ('kanban', 'tree', 'form', 'gantt'):
+            for action, fn in (('create', 'check_create'), ('delete', 'check_unlink'), ('edit', 'check_write')):
+                if not node.get(action) and not getattr(self, fn)(cr, user, raise_exception=False):
+                    node.set(action, 'false')
         arch = etree.tostring(node, encoding="utf-8").replace('\t', '')
         for k in fields.keys():
             if k not in fields_def:

_______________________________________________
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