summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/xml/thread.xml
diff options
context:
space:
mode:
authorAdrian Torres <adt@odoo.com>2018-04-06 07:45:25 +0200
committerGitHub <noreply@github.com>2018-04-06 07:45:25 +0200
commit2875b94e036f024dcd37b72560fcaf349df27656 (patch)
treead1d00f804de458694ae8d54761c0fa66e32ef0e /addons/mail/static/src/xml/thread.xml
parent5f0692609332fba1c32b0967f98172655a437b5f (diff)
[FIX] osv.expression: normalize domains in combine
Before this rev: * Take 2 domains that contain at least two leaves, and at least one of them must use the implicit `&` operator e.g.: d1 = [('so_line', 'in', [91]), ('amount', '<=', 0.0)] d2 = ['&', ('so_line', 'in', []), ('project_id', '!=', False)] * Perform osv.expression.OR() between both domains Expected result: d3 = ['|', d1, d2] Actual result (after normalization): d3 = ['&', '|', d1, d2] This is because, since the `&` is implicit for the first domain, when we OR it, we give it an explicit `|` operator, so when we pass this domain through the normalize_domain function, d1 no longer contains an implicit `&` operator but instead the implicit operator is the one between d1 and d2, therefore giving us a completely wrong domain. The `combine` function states that it only accepts normalized domains, however neither the OR nor AND functions do, this leads to a lot of developers putting non-normalized domains into these functions, and there's no error checking or anything that obviously indicates that the domain is incorrect, so we might as well normalize all domains being passed since it's already pretty optimized.
Diffstat (limited to 'addons/mail/static/src/xml/thread.xml')
0 files changed, 0 insertions, 0 deletions