summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Volral <fvo@odoo.com>2018-08-10 18:11:37 +0200
committerFrancois Volral <fvo@odoo.com>2018-08-10 18:15:27 +0200
commit6caf5ed7d2f706db0cfca0541f199df468aadae6 (patch)
tree600b241b95087786d251ba74ce81daab00793a65
parent4b3766e8eb05fe4a9f1f083da6f4facf56b4f688 (diff)
[FIX] orm: Adapt test and read_group_fill_temporal
In the commit 4a40db2. the implementation of read_group_fill_temporal was simplified during final review and tests needed to be adapted. Also fix the implementation issues as detected by the tests.
-rw-r--r--odoo/addons/base/tests/test_misc.py8
-rw-r--r--odoo/models.py10
2 files changed, 7 insertions, 11 deletions
diff --git a/odoo/addons/base/tests/test_misc.py b/odoo/addons/base/tests/test_misc.py
index 881474f7d08..08c790387e9 100644
--- a/odoo/addons/base/tests/test_misc.py
+++ b/odoo/addons/base/tests/test_misc.py
@@ -162,14 +162,6 @@ class TestDateRangeFunction(unittest.TestCase):
self.assertEqual(dates, expected)
- def test_date_range_with_identical_boundaries(self):
- """ date_range with indentical boundaries. """
- start = datetime.datetime(1985, 1, 1)
- end = datetime.datetime(1985, 1, 1)
-
- with self.assertRaises(ValueError):
- dates = [date for date in date_utils.date_range(start, end)]
-
class TestFormatLangDate(TransactionCase):
def test_00_accepted_types(self):
diff --git a/odoo/models.py b/odoo/models.py
index 9c12cc0f5b1..ef31d3b2d82 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -1811,7 +1811,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
# assumption: existing data is sorted by field 'groupby_name'
first, last = existing[0], existing[-1]
- expected = list(date_utils.date_range(first, last, interval))
+ expected = collections.deque(date_utils.date_range(first, last, interval))
if len(existing) < len(expected):
empty_data = dict.fromkeys(aggregated_fields, False)
@@ -1827,8 +1827,12 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
# is sorted like data, so what we do is empty data progressivly by
# popping its elements from first to last. To do this properly, we
# need to compare dates together.
- for dt in expected:
- if not data[0][groupby_name] or data[0][groupby_name] == dt:
+ while expected or data:
+ if not data[0][groupby_name]:
+ new_data.append(data.popleft())
+ continue
+ dt = expected.popleft()
+ if data[0][groupby_name] == dt:
new_data.append(data.popleft())
else:
new_data.append(dict(empty_data, **{groupby_name: dt}))