Ravi Gohil (OpenERP) has proposed merging
lp:~openerp-dev/openobject-server/6.0-opw-18390-rgo into
lp:openobject-server/6.0.
Requested reviews:
Olivier (Open ERP) (olt)
nel (nel-tinyerp)
Related bugs:
Bug #878104 in OpenERP Server: "Cannot overwrite stored function field with
non-stored field"
https://bugs.launchpad.net/openobject-server/+bug/878104
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/6.0-opw-18390-rgo/+merge/80312
Hello Sir,
There is an issue with fields.function field when it's been overridden with
other than fields.function field and when we try to save the record with some
values in overridden fields.function field, system raises an error message.
This solves the issue. I have back-ported it from Trunk.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-server/6.0-opw-18390-rgo/+merge/80312
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-server/6.0-opw-18390-rgo.
=== modified file 'bin/osv/orm.py'
--- bin/osv/orm.py 2011-09-30 12:22:46 +0000
+++ bin/osv/orm.py 2011-10-25 10:25:13 +0000
@@ -2784,14 +2784,17 @@
f = self._columns[store_field]
if hasattr(f, 'digits_change'):
f.digits_change(cr)
+ def not_this_field(stored_func):
+ x, y, z, e, f, l = stored_func
+ return x != self._name or y != store_field
+ self.pool._store_function[self._name] = filter(not_this_field, self.pool._store_function.get(self._name, []))
if not isinstance(f, fields.function):
continue
if not f.store:
continue
- if self._columns[store_field].store is True:
+ sm = f.store
+ if sm is True:
sm = {self._name: (lambda self, cr, uid, ids, c={}: ids, None, 10, None)}
- else:
- sm = self._columns[store_field].store
for object, aa in sm.items():
if len(aa) == 4:
(fnct, fields2, order, length) = aa
@@ -2802,14 +2805,8 @@
raise except_orm('Error',
('Invalid function definition %s in object %s !\nYou must use the definition: store={object:(fnct, fields, priority, time length)}.' % (store_field, self._name)))
self.pool._store_function.setdefault(object, [])
- ok = True
- for x, y, z, e, f, l in self.pool._store_function[object]:
- if (x==self._name) and (y==store_field) and (e==fields2):
- if f == order:
- ok = False
- if ok:
- self.pool._store_function[object].append( (self._name, store_field, fnct, fields2, order, length))
- self.pool._store_function[object].sort(lambda x, y: cmp(x[4], y[4]))
+ self.pool._store_function[object].append((self._name, store_field, fnct, tuple(fields2) if fields2 else None, order, length))
+ self.pool._store_function[object].sort(lambda x, y: cmp(x[4], y[4]))
for (key, _, msg) in self._sql_constraints:
self.pool._sql_error[self._table+'_'+key] = msg
_______________________________________________
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