summaryrefslogtreecommitdiff
path: root/doc/reference
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2017-03-15 15:19:46 +0100
committerqsm-odoo <qsm@odoo.com>2017-03-24 15:03:54 +0100
commitb2d66d0c1468b9d321d9ffa5782e370e92525a43 (patch)
tree96de95d445e28ffe827f3ae7cfa074372593a976 /doc/reference
parent874c7aa2dd7708ade32396a4ca4307a6342cfb29 (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