From 280630a0ce9ed7d008beb9365dff4eed62f79d42 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Tue, 28 Aug 2012 14:26:49 -0500 Subject: [PATCH] fixed issue with row[db.table.field] for result of join, thanks Dominic --- VERSION | 2 +- gluon/dal.py | 4 ++-- gluon/tests/test_dal.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index 3cf38a92..1432d8ae 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.1 (2012-08-28 14:03:54) rc4 +Version 2.00.1 (2012-08-28 14:26:44) rc4 diff --git a/gluon/dal.py b/gluon/dal.py index 9164ebbb..1a672c22 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6321,8 +6321,8 @@ class Row(object): return self._extra[key] elif m: try: - return dict.__getitem__(self, m.group(1))[m.group(2)] - except (KeyError,TypeError): + return object.__getattribute__(self, m.group(1))[m.group(2)] + except (KeyError,AttributeError,TypeError): key = m.group(2) return object.__getattribute__(self, key) diff --git a/gluon/tests/test_dal.py b/gluon/tests/test_dal.py index 4009fc9e..79e35c26 100644 --- a/gluon/tests/test_dal.py +++ b/gluon/tests/test_dal.py @@ -389,6 +389,17 @@ class TestJoin(unittest.TestCase): db.t1.drop() db.t2.drop() + db.define_table('person',Field('name')) + id = db.person.insert(name="max") + self.assertEqual(id.name,'max') + db.define_table('dog',Field('name'),Field('owner','reference person')) + db.dog.insert(name='skipper',owner=1) + row = db(db.person.id==db.dog.owner).select().first() + self.assertEqual(row[db.person.name],'max') + self.assertEqual(row['person.name'],'max') + db.dog.drop() + self.assertEqual(len(db.person._referenced_by),0) + db.person.drop() class TestMinMaxSum(unittest.TestCase):