summaryrefslogtreecommitdiff
path: root/bin/osv/fields.py
diff options
context:
space:
mode:
authorChristophe Simonis <christophe@tinyerp.com>2009-08-10 18:04:02 +0200
committerChristophe Simonis <christophe@tinyerp.com>2009-08-10 18:04:02 +0200
commit09eb8dec4d8ec5854750fcabaf50189dccdfb79b (patch)
treebcdaec1b9b5b762a0069770a84f3c5008c78b1c5 /bin/osv/fields.py
parent05ae70c6104b6bd5180f96a08dcde2f1c647ad37 (diff)
[FIX] disallow the deletion of records set as default properties
[FIX] properties reset to default one correctly lp bug: https://launchpad.net/bugs/396955 fixed bzr revid: christophe@tinyerp.com-20090810160402-7vamjvletgevmjuc
Diffstat (limited to 'bin/osv/fields.py')
-rw-r--r--bin/osv/fields.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/bin/osv/fields.py b/bin/osv/fields.py
index 4d1417b9397..51b5dd1c51e 100644
--- a/bin/osv/fields.py
+++ b/bin/osv/fields.py
@@ -827,15 +827,18 @@ class property(function):
int(prop.value.split(',')[1])) or False
obj = obj.pool.get(self._obj)
- existing_ids = obj.search(cr, uid, [('id','in',res.values())])
- deleted_ids = []
-
- for res_id in res.values():
- if res_id and (res_id not in existing_ids):
- if res_id not in deleted_ids:
- cr.execute('DELETE FROM ir_property WHERE value=%s', ((obj._name+','+str(res_id)),))
- deleted_ids.append(res_id)
- names = dict(obj.name_get(cr, uid, filter(None, res.values()), context))
+
+ to_check = res.values()
+ if default_val and default_val not in to_check:
+ to_check += [default_val]
+ existing_ids = obj.search(cr, uid, [('id', 'in', to_check)])
+
+ for id, res_id in res.items():
+ if res_id not in existing_ids:
+ cr.execute('DELETE FROM ir_property WHERE value=%s', ((obj._name+','+str(res_id)),))
+ res[id] = default_val
+
+ names = dict(obj.name_get(cr, uid, existing_ids, context))
for r in res.keys():
if res[r] and res[r] in names:
res[r] = (res[r], names[res[r]])