diff --git a/openerp/api.py b/openerp/api.py index 5c8b93892b7..6c70910633f 100644 --- a/openerp/api.py +++ b/openerp/api.py @@ -756,7 +756,7 @@ class Environment(object): """ if not spec: return - for env in list(self.all): + for env in list(iter(self.all)): c = env.cache for field, ids in spec: if ids is None: @@ -769,7 +769,7 @@ class Environment(object): def invalidate_all(self): """ Clear the cache of all environments. """ - for env in list(self.all): + for env in list(iter(self.all)): env.cache.clear() env.prefetch.clear() env.computed.clear() diff --git a/openerp/models.py b/openerp/models.py index 6e095049dd2..a93965c071a 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -5402,7 +5402,7 @@ class BaseModel(object): """ If `field` must be recomputed on some record in `self`, return the corresponding records that must be recomputed. """ - for env in [self.env] + list(self.env.all): + for env in [self.env] + list(iter(self.env.all)): if env.todo.get(field) and env.todo[field] & self: return env.todo[field] @@ -5424,7 +5424,7 @@ class BaseModel(object): """ Recompute stored function fields. The fields and records to recompute have been determined by method :meth:`modified`. """ - for env in list(self.env.all): + for env in list(iter(self.env.all)): while env.todo: field, recs = next(env.todo.iteritems()) # evaluate the fields to recompute, and save them to database