diff options
| author | qsm-odoo <qsm@odoo.com> | 2017-03-15 15:19:46 +0100 |
|---|---|---|
| committer | qsm-odoo <qsm@odoo.com> | 2017-03-24 15:03:54 +0100 |
| commit | b2d66d0c1468b9d321d9ffa5782e370e92525a43 (patch) | |
| tree | 96de95d445e28ffe827f3ae7cfa074372593a976 /doc/reference | |
| parent | 874c7aa2dd7708ade32396a4ca4307a6342cfb29 (diff) | |
[FIX] web: properly combine domains with "OR" in CompoundDomain
The CompoundDomain class allows to regroup several domains with an
implicit "AND"; these domains can be either a string, an array or
another CompoundDomain. A CompoundDomain can then be converted to
an array thanks to pyeval.js.
For example, if a CompoundDomain is initialized with `[A, B]` and
`[C]`, the array conversion gave `[A, B, C]` (which is expected).
However, a hackish method was used with CompoundDomain. If one of the
domain of a CompoundDomain is equal to `["|"]` (an array with the
OR operator in it), the two next subdomains were supposed to be joined
by a OR operator. Indeed, for the case of a CompoundDomain initialized
with `["|"]`, `[A]` and `[B]`, the array conversion gave `["|", A, B]`
(which is expected). However, if initialized with `["|"]`, `[A, B]` and
`[C]`, the array conversion gave `["|", A, B, C]` which is very wrong
as what was expected is `["|", "&", A, B, C]`. The problem is that the
given `[A, B]` contains implicit "&" operators.
This commit fixes the problem by normalizing only if the CompoundDomain
starts with a ["|"] or ["!"] array which is the standard odoo case.
This allows to limit breaking custom code (e.g we want a simple "AND"
of `[A]` and `[B]` to stay `[A, B]`, not become `["&", A, B]`).
The commit also modifies a test so that it checks that the problem is
properly solved.
Diffstat (limited to 'doc/reference')
0 files changed, 0 insertions, 0 deletions
