559 B
559 B
This module adds a partition(self, accessor) method to every model. It accepts for accessor any parameter that would be accepted by mapped, i.e. a string "field(.subfield)*" or a function (lambda x: not x.b). It returns a dictionary with keys that are equal to set(record.mapped(accessor)), and with values that are recordsets (these recordsets forming a partition of the initial recordset, conveniently).
So if we have a recordset (x | y | z ) such that x.f == True, y.f == z.f == False, then (x | y | z ).partition("f") == {True: x, False: (y | z)}.