[IMP] base_partition: add read_per_record method

pull/2615/head
nans 2020-10-11 20:13:49 +02:00 committed by hda
parent c252a4e4f4
commit 0b0103f382
2 changed files with 18 additions and 0 deletions

View File

@ -67,6 +67,14 @@ class Base(models.AbstractModel):
for i in range(0, len(self), batch_size):
yield self[i : i + batch_size]
def read_per_record(self, fields=None, load="_classic_read"):
result = {}
data_list = self.read(fields=fields, load=load)
for d in data_list:
key = d.pop("id")
result[key] = d
return result
def filtered_domain(self, domain):
"""Backport from standard.
"""

View File

@ -116,6 +116,16 @@ class TestPartition(TransactionCase):
batches_from_default = list(records.batch())
self.assertEqual(batches_from_default, batches)
def test_read_per_record(self):
categories = self.c1 | self.c2 | self.c3
field_list = ["name"]
data = categories.read_per_record(field_list)
self.assertEqual(len(data), len(categories))
for record in categories:
self.assertTrue(record.id in data)
record_data = data[record.id]
self.assertEqual(list(record_data.keys()), field_list)
def test_filtered_domain(self):
"""Initially yo satisfy the coverage tools, this test actually documents
a number of pitfalls of filtered_domain and the differences with a search.