Skip to content

Commit 9470fbe

Browse files
committed
[REF] orm: Domain optimize API and loop
We are going to introduce additional levels (dyamic values), so we refactor the implementation to handle new levels easily while simplifying the API. closes odoo#216660 Related: odoo/enterprise#89935 Signed-off-by: Raphael Collet <[email protected]>
1 parent 64230ba commit 9470fbe

File tree

6 files changed

+103
-115
lines changed

6 files changed

+103
-115
lines changed

addons/sale_timesheet/tests/test_project_pricing_type.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def test_pricing_type(self):
2424

2525
def _search_pricing_type(operator, value):
2626
# execute the optimization to transform the domain
27-
return Domain('pricing_type', operator, value).optimize(project, full=True)
27+
return Domain('pricing_type', operator, value).optimize_full(project)
2828

2929
# 1) Take a project non billable and check if the pricing_type is equal to False
3030
self.assertFalse(project.allow_billable, 'The allow_billable should be false if the project is non billable.')

odoo/addons/test_orm/tests/test_domain.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ def test_condition_optimize_search(self):
431431
model = self.env['test_orm.bar']
432432
foo = model.foo.create({"name": "ok"})
433433
self.assertEqual(
434-
Domain('foo', '=', foo.id).optimize(model, full=True),
434+
Domain('foo', '=', foo.id).optimize_full(model),
435435
Domain('name', 'in', ["ok"]).optimize(model),
436436
)
437437
self.assertEqual(
@@ -570,7 +570,7 @@ def test_condition_optimize_bool(self):
570570
"the condition should not be reduced to a constant",
571571
)
572572
self.assertEqual(
573-
Domain('important', 'not in', [True, False]).optimize(model, full=True),
573+
Domain('important', 'not in', [True, False]).optimize_full(model),
574574
Domain.FALSE,
575575
)
576576
self.assertEqual(
@@ -582,7 +582,7 @@ def test_condition_optimize_bool(self):
582582
is_important,
583583
)
584584
self.assertEqual(
585-
Domain('important', 'in', [0, 2]).optimize(model, full=True),
585+
Domain('important', 'in', [0, 2]).optimize_full(model),
586586
Domain.TRUE,
587587
)
588588
self.assertEqual(
@@ -591,7 +591,7 @@ def test_condition_optimize_bool(self):
591591
"the condition should not be reduced to a constant for active record",
592592
)
593593
self.assertEqual(
594-
Domain('active', 'in', [True, False]).optimize(model, full=True),
594+
Domain('active', 'in', [True, False]).optimize_full(model),
595595
Domain.TRUE,
596596
)
597597

@@ -728,11 +728,11 @@ def test_condition_optimize_child_parent_of(self):
728728
categ = model.create({'name': 'parent'})
729729
categ_child = model.create({'name': 'child', 'parent': categ.id})
730730
self.assertEqual(
731-
Domain('id', 'child_of', categ.ids).optimize(model, full=True),
731+
Domain('id', 'child_of', categ.ids).optimize_full(model),
732732
Domain('parent_path', '=like', f"{categ.parent_path}%"),
733733
)
734734
self.assertEqual(
735-
Domain('id', 'parent_of', categ_child.ids).optimize(model, full=True),
735+
Domain('id', 'parent_of', categ_child.ids).optimize_full(model),
736736
Domain('id', 'in', OrderedSet([categ_child.id, categ.id])),
737737
)
738738

@@ -877,37 +877,37 @@ def test_nary_optimize_any(self):
877877
]:
878878
field_type = model._fields[field_name].type
879879
m2o = field_type == 'many2one'
880-
left = left.optimize(model[field_name], full=True)
881-
right = right.optimize(model[field_name], full=True)
880+
left = left.optimize_full(model[field_name])
881+
right = right.optimize_full(model[field_name])
882882

883883
with self.subTest(field_type=field_type):
884884
self.assertEqual(
885-
(Domain(field_name, 'any', left) | Domain(field_name, 'any', right)).optimize(model, full=True),
885+
(Domain(field_name, 'any', left) | Domain(field_name, 'any', right)).optimize_full(model),
886886
Domain(field_name, 'any', left | right),
887887
)
888888
self.assertEqual(
889-
(Domain(field_name, 'any', left) & Domain(field_name, 'any', right)).optimize(model, full=True),
889+
(Domain(field_name, 'any', left) & Domain(field_name, 'any', right)).optimize_full(model),
890890
Domain(field_name, 'any', left & right) if m2o
891891
else Domain(field_name, 'any', left) & Domain(field_name, 'any', right),
892892
)
893893
query = model[field_name]._search([])
894894
self.assertEqual(
895-
(Domain(field_name, 'any', left) | Domain(field_name, 'any', query) | Domain(field_name, 'any', right)).optimize(model, full=True),
895+
(Domain(field_name, 'any', left) | Domain(field_name, 'any', query) | Domain(field_name, 'any', right)).optimize_full(model),
896896
Domain(field_name, 'any', left | right) | Domain(field_name, 'any!', query),
897897
"Don't merge query with domains",
898898
)
899899
self.assertEqual(
900-
(Domain(field_name, 'not any', left) | Domain(field_name, 'not any', right)).optimize(model, full=True),
900+
(Domain(field_name, 'not any', left) | Domain(field_name, 'not any', right)).optimize_full(model),
901901
Domain(field_name, 'not any', left & right) if m2o
902902
else Domain(field_name, 'not any', left) | Domain(field_name, 'not any', right),
903903
)
904904
self.assertEqual(
905-
(Domain(field_name, 'not any', left) & Domain(field_name, 'not any', right)).optimize(model, full=True),
905+
(Domain(field_name, 'not any', left) & Domain(field_name, 'not any', right)).optimize_full(model),
906906
Domain(field_name, 'not any', left | right),
907907
)
908908

909909
self.assertEqual(
910-
(Domain(field_name, 'any', left) | Domain(field_name, 'not any', right)).optimize(model, full=True),
910+
(Domain(field_name, 'any', left) | Domain(field_name, 'not any', right)).optimize_full(model),
911911
(Domain(field_name, 'any', left) | Domain(field_name, 'not any', right)),
912912
"Do not merge any and not any",
913913
)
@@ -927,5 +927,5 @@ def search_foo(model, operator, value):
927927
self.patch(self.registry['test_orm.bar'], '_search_foo', search_foo)
928928
bar = self.env['test_orm.bar']
929929
domain = Domain('foo', '=', 4) | Domain('foo', '=', 5)
930-
domain = domain.optimize(bar, full=True)
930+
domain = domain.optimize_full(bar)
931931
self.assertEqual(domain, Domain('name', 'in', OrderedSet(['(4, 5)'])))

0 commit comments

Comments
 (0)