From d67ff9ba0205d793b710563eee6e82258c9183b6 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 8 Nov 2013 18:57:50 +0100 Subject: [PATCH] [FIX] views inheritance: deleting a non-existing attribute must be a no-op bzr revid: chs@openerp.com-20131108175750-yenql6hycpn95i9j --- openerp/addons/base/tests/test_views.py | 13 +++++++++++++ openerp/osv/orm.py | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/tests/test_views.py b/openerp/addons/base/tests/test_views.py index 6203e4f001e..5d127580bd5 100644 --- a/openerp/addons/base/tests/test_views.py +++ b/openerp/addons/base/tests/test_views.py @@ -40,6 +40,19 @@ class test_views(common.TransactionCase): """, }) + def test_20_remove_unexisting_attribute(self): + Views = self.registry('ir.ui.view') + Views.create(self.cr, self.uid, { + 'name': 'Test View', + 'model': 'ir.ui.view', + 'inherit_id': self.browse_ref('base.view_view_tree').id, + 'arch': """ + + + + """, + }) + def _insert_view(self, **kw): """Insert view into database via a query to passtrough validation""" kw.pop('id', None) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index cf96c8d27bd..1ed1be7de6d 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2153,8 +2153,8 @@ class BaseModel(object): attribute = (child.get('name'), child.text and child.text.encode('utf8') or None) if attribute[1]: node.set(attribute[0], attribute[1]) - else: - del(node.attrib[attribute[0]]) + elif attribute[0] in node.attrib: + del node.attrib[attribute[0]] else: sib = node.getnext() for child in spec: