From d0bb596f1d51b72a6aa20d56eef3e65aefbd09b2 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 11 Apr 2019 08:21:54 +0000 Subject: [IMP] fields: x2many fields of new records are new records The value of an x2many field on a new record are new records, possibly related to a real record, called its "origin". --- odoo/tools/misc.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'odoo/tools/misc.py') diff --git a/odoo/tools/misc.py b/odoo/tools/misc.py index 3d34c608fd4..e828443ae80 100644 --- a/odoo/tools/misc.py +++ b/odoo/tools/misc.py @@ -1045,12 +1045,28 @@ class OrderedSet(MutableSet): def discard(self, elem): self._map.pop(elem, None) + class LastOrderedSet(OrderedSet): """ A set collection that remembers the elements last insertion order. """ def add(self, elem): OrderedSet.discard(self, elem) OrderedSet.add(self, elem) + +class IterableGenerator: + """ An iterable object based on a generator function, which is called each + time the object is iterated over. + """ + __slots__ = ['func', 'args'] + + def __init__(self, func, *args): + self.func = func + self.args = args + + def __iter__(self): + return self.func(*self.args) + + def groupby(iterable, key=None): """ Return a collection of pairs ``(key, elements)`` from ``iterable``. The ``key`` is a function computing a key value for each element. This -- cgit v1.2.3