diff --git a/conftest.py b/conftest.py index 6371a92b..84a687d1 100644 --- a/conftest.py +++ b/conftest.py @@ -1120,17 +1120,18 @@ class Model: def __getattr__(self, fieldname): if fieldname in ['__dataclass_fields__', '__attrs_attrs__']: raise AttributeError('%r is invalid on %s' % (fieldname, self._model)) + + field_description = self._fields.get(fieldname) + if field_description is None: + return functools.partial(self._call, fieldname) + if not self._ids: return False - assert len(self._ids) == 1 if fieldname == 'id': return self._ids[0] - try: - val = self.read([fieldname])[0][fieldname] - except Exception: - raise AttributeError('%r is invalid on %s' % (fieldname, self._model)) + val = self.read([fieldname])[0][fieldname] field_description = self._fields[fieldname] if field_description['type'] in ('many2one', 'one2many', 'many2many'): val = val or [] diff --git a/runbot_merge/tests/test_oddities.py b/runbot_merge/tests/test_oddities.py index 5514563e..b4a1fcf2 100644 --- a/runbot_merge/tests/test_oddities.py +++ b/runbot_merge/tests/test_oddities.py @@ -19,7 +19,7 @@ def test_partner_merge(env): 'state': 'selection', 'partner_ids': (p_src + p_dest).ids, 'dst_partner_id': p_dest.id, - })._call('action_merge') + }).action_merge() assert not p_src.exists() assert p_dest.name == 'Partner P. Partnersson' assert p_dest.github_login == 'xxx'