From b7ee8758e847a74e0b090239b2a2ab9798b5b7be Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sun, 2 Apr 2006 04:13:03 +0000 Subject: [PATCH] fixed reset_history method when applied to an attribute that had an attribute-level TriggeredAttribute set on it, added unit test. --- lib/sqlalchemy/attributes.py | 3 +++ test/mapper.py | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/sqlalchemy/attributes.py b/lib/sqlalchemy/attributes.py index 0e944f6c25..2cac566192 100644 --- a/lib/sqlalchemy/attributes.py +++ b/lib/sqlalchemy/attributes.py @@ -200,6 +200,9 @@ class TriggeredAttribute(ManagedAttribute): self.uselist = uselist self.kwargs = kwargs + def clear(self): + self.plain_init(self.manager.attribute_history(self.obj)) + def plain_init(self, attrhist): if not self.uselist: p = ScalarAttribute(self.obj, self.key, **self.kwargs) diff --git a/test/mapper.py b/test/mapper.py index 4a8edd0974..299b54f011 100644 --- a/test/mapper.py +++ b/test/mapper.py @@ -115,6 +115,15 @@ class MapperTest(MapperSuperTest): self.assert_(u.user_name == 'jack') self.assert_(a not in u.addresses) + def testrefresh_lazy(self): + """tests that when a lazy loader is set as a trigger on an object's attribute (at the attribute level, not the class level), a refresh() operation doesnt fire the lazy loader or create any problems""" + m = mapper(User, users, properties={'addresses':relation(mapper(Address, addresses))}) + m2 = m.options(lazyload('addresses')) + u = m2.selectfirst(users.c.user_id==8) + def go(): + objectstore.refresh(u) + self.assert_sql_count(db, go, 1) + def testexpire(self): m = mapper(User, users, properties={'addresses':relation(mapper(Address, addresses))}) u = m.get(7) -- 2.47.2