]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
added "live" option to lazyloader, makes it load from DB on every hit
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 15 Nov 2005 03:32:21 +0000 (03:32 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 15 Nov 2005 03:32:21 +0000 (03:32 +0000)
test/objectstore.py

index 9d2ff68c2dbad48b9c3b01d4c03dde02f423c0b5..a3881fd83ec52a2289777e19294e98b497e9d5d8 100644 (file)
@@ -642,23 +642,34 @@ class SaveTest(AssertMixin):
         self.assert_result(l, *data)
 
     def testbidirectional(self):
-        m1 = mapper(User, users, properties={
-            'addresses':relation(Address, addresses, lazy=True, private=True)
-        }, is_primary=True)
+        m1 = mapper(User, users, is_primary=True)
         
         m2 = mapper(Address, addresses, properties = dict(
-            user = relation(User, users, lazy = False)
+            user = relation(m1, lazy = False)
         ), is_primary=True)
+        
+        # "live" means, when "addresses" is accessed, do a DB call every time
+        m1.add_property('addresses', relation(m2, private=True, lazy=True, live=True))
  
         u = User()
-        print repr(u.__dict__.get('addresses', None))
+        print repr(u.addresses)
         u.user_name = 'test'
         a = Address()
         a.email_address = 'testaddress'
         a.user = u
         objectstore.commit()
-        print repr(u.__dict__.get('addresses', None))
-#        objectstore.clear()
+        print repr(u.addresses)
+        print repr(u.addresses)
+        x = False
+        try:
+            u.addresses.append('hi')
+            x = True
+        except:
+            pass
+            
+        if x:
+            self.assert_(False, "User addresses element should be read-only")
+        
         objectstore.delete(u)
         objectstore.commit()