]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fixed reset_history method when applied to an attribute that had an attribute-level...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 2 Apr 2006 04:13:03 +0000 (04:13 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 2 Apr 2006 04:13:03 +0000 (04:13 +0000)
lib/sqlalchemy/attributes.py
test/mapper.py

index 0e944f6c25729b536f3630d824e6eb36d4d7261d..2cac5661929cb04045c91392355f21ca9dbc2e88 100644 (file)
@@ -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)
index 4a8edd09747aec3fb7559940d65269b1c760768e..299b54f0110e17095608165bc5ab9ccffd0368f2 100644 (file)
@@ -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)