From 5a0fd034cb6670a23bc8ae326fd068fbf5916a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 19 Jul 2012 09:55:09 +0200 Subject: [PATCH] Fix reading from cache in field one2many issue2706 review419001 --- trytond/model/fields/one2many.py | 7 ++++++- trytond/tests/test_fields.py | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/trytond/model/fields/one2many.py b/trytond/model/fields/one2many.py index 0bcbd8aaf7..5549c4ae7a 100644 --- a/trytond/model/fields/one2many.py +++ b/trytond/model/fields/one2many.py @@ -108,7 +108,12 @@ class One2Many(Field): for i in chain(*ids2): if i in cache[self.model_name] \ and self.field in cache[self.model_name][i]: - res[cache[self.model_name][i][self.field].id].append(i) + if field._type == 'reference': + _, id_ = cache[self.model_name][i][self.field].split(',') + id_ = int(id_) + else: + id_ = cache[self.model_name][i][self.field] + res[id_].append(i) else: ids3.append(i) diff --git a/trytond/tests/test_fields.py b/trytond/tests/test_fields.py index e20bd06f53..261e980807 100644 --- a/trytond/tests/test_fields.py +++ b/trytond/tests/test_fields.py @@ -2504,6 +2504,12 @@ class FieldsTestCase(unittest.TestCase): self.assertEqual(len(one2many1['targets']), 1) target1_id, = one2many1['targets'] + # Try with target1 stored in cache + target1 = one2many_target.browse(target1_id) + target1.origin + one2many1 = one2many.read(one2many1_id, ['targets']) + self.assertEqual(one2many1['targets'], [target1_id]) + one2many_ids = one2many.search([ ('targets', '=', 'target1'), ])