Naresh(OpenERP) has proposed merging
lp:~openerp-dev/openobject-server/trunk-bug-789576-nch into
lp:openobject-server.
Requested reviews:
Vo Minh Thu (OpenERP) (vmt-openerp)
Related bugs:
Bug #789576 in OpenERP Server: "fields.related override: store function
persists"
https://bugs.launchpad.net/openobject-server/+bug/789576
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bug-789576-nch/+merge/77139
--
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bug-789576-nch/+merge/77139
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-server/trunk-bug-789576-nch.
=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py 2011-09-26 07:51:15 +0000
+++ openerp/osv/orm.py 2011-09-27 11:01:40 +0000
@@ -3306,17 +3306,20 @@
self._columns = self._columns.copy()
for store_field in self._columns:
- f = self._columns[store_field]
- if hasattr(f, 'digits_change'):
- f.digits_change(cr)
- if not isinstance(f, fields.function):
- continue
- if not f.store:
- continue
- if self._columns[store_field].store is True:
+ store_field_obj = self._columns[store_field]
+ if hasattr(store_field_obj, 'digits_change'):
+ store_field_obj.digits_change(cr)
+ fncts = self.pool._store_function.get(self._name, [])
+ for x, y, z, e, f, l in copy.copy(fncts):
+ if ((x == self._name) and (y == store_field)):
+ fncts.remove((x, y, z, e, f, l))
+ if not isinstance(store_field_obj, fields.function):
+ continue
+ if not store_field_obj.store:
+ continue
+ sm = store_field_obj.store
+ if store_field_obj.store 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
@@ -3327,14 +3330,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, tuple(fields2) if fields2 else None, 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