diff --git a/openerp/addons/base/rng/view.rng b/openerp/addons/base/rng/view.rng index 0d6527e5972..dfeeb03d98b 100644 --- a/openerp/addons/base/rng/view.rng +++ b/openerp/addons/base/rng/view.rng @@ -172,6 +172,9 @@ + + + @@ -181,7 +184,8 @@ - + + @@ -223,6 +227,8 @@ + + @@ -238,6 +244,9 @@ + + + @@ -376,6 +385,9 @@ 5years + + + diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index a9be954b5ac..b5e78718553 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1825,6 +1825,10 @@ class BaseModel(object): 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 @@ class BaseModel(object): 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: