[FIX] models: do not prefetch fields to recompute, and recompute once only
[odoo/odoo.git] / openerp / api.py
index a2385a8..da9e62f 100644 (file)
@@ -837,11 +837,10 @@ class Environment(object):
 
     def remove_todo(self, field, records):
         """ Mark `field` as recomputed on `records`. """
-        recs_list = self.all.todo.get(field, [])
-        if records in recs_list:
-            recs_list.remove(records)
-            if not recs_list:
-                del self.all.todo[field]
+        recs_list = [recs - records for recs in self.all.todo.pop(field, [])]
+        recs_list = filter(None, recs_list)
+        if recs_list:
+            self.all.todo[field] = recs_list
 
     def has_todo(self):
         """ Return whether some fields must be recomputed. """