diff options
| author | Raphael Collet <rco@odoo.com> | 2019-04-11 08:21:54 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2019-05-23 05:47:11 +0000 |
| commit | d0bb596f1d51b72a6aa20d56eef3e65aefbd09b2 (patch) | |
| tree | 8d56a32b6f0eea496d0e9af26a4349e8979dfc37 /odoo/tools/misc.py | |
| parent | 60be9f2c098cfead8a5e3fd23453b7e93243e0c5 (diff) | |
[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".
Diffstat (limited to 'odoo/tools/misc.py')
| -rw-r--r-- | odoo/tools/misc.py | 16 |
1 files changed, 16 insertions, 0 deletions
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 |
