]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 16 Oct 2005 20:34:19 +0000 (20:34 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 16 Oct 2005 20:34:19 +0000 (20:34 +0000)
lib/sqlalchemy/mapper.py
test/objectstore.py
test/testbase.py

index 8e068fb6f0bd0e28e8c69c73d6c6caf2bdb380fd..39ce4bc0edfa84fa3772976a61f01f7fbb9b1a03 100644 (file)
@@ -110,10 +110,11 @@ def noload(name):
 def object_mapper(object):
     """given an object, returns the primary Mapper associated with the object
     or the object's class."""
-    try:
-        return _mappers[object._mapper]
-    except AttributeError:
-        return class_mapper(object.__class__)
+    return class_mapper(object.__class__)
+#    try:
+#        return _mappers[object._mapper]
+#    except AttributeError:
+#        return class_mapper(object.__class__)
 
 def class_mapper(class_):
     """given a class, returns the primary Mapper associated with the class."""
@@ -499,7 +500,8 @@ class Mapper(object):
             instance = self.extension.create_instance(self, row, imap, self.class_)
             if instance is None:
                 instance = self.class_(_mapper_nohistory=True)
-            instance._mapper = self.hashkey
+            # attach mapper hashkey to the instance ?
+            #instance._mapper = self.hashkey
             instance._instance_key = identitykey
 
             imap[identitykey] = instance
@@ -746,7 +748,7 @@ class PropertyLoader(MapperProperty):
             return (obj2, obj1)
             
     def process_dependencies(self, task, deplist, uowcommit, delete = False):
-        #print self.mapper.table.name + " " + repr(len(deplist)) + " process_dep isdelete " + repr(delete)
+        print self.mapper.table.name + " " + repr(len(deplist)) + " process_dep isdelete " + repr(delete)
 
         # fucntion to set properties across a parent/child object plus an "association row",
         # based on a join condition
index faa579353efdb7400a3e1c0d8844f7b966d9de41..a8b3cd112a58f073a64fdfe79aa1e1b73ade4250 100644 (file)
@@ -313,20 +313,32 @@ class SaveTest(AssertMixin):
         self.assert_(addresstable[0].row == (addressid, userid, 'somethingnew@foo.com'))
         self.assert_(u.user_id == userid and a2.address_id == addressid)
 
-    def testonetomany2(self):
+    def testmapperswitch(self):
+        """test that, if we change mappers, the new one gets used fully.  not sure if 
+        i want it to work that way, but probably."""
         users.insert().execute(
             dict(user_id = 7, user_name = 'jack'),
             dict(user_id = 8, user_name = 'ed'),
             dict(user_id = 9, user_name = 'fred')
         )
         db.connection().commit()
+
+        User.mapper = assignmapper(users)
+        User.mapper.select()
         User.mapper = assignmapper(users, properties = dict(
             addresses = relation(Address, addresses, lazy = False)
         ))
         u = User.mapper.select()
         u[0].addresses.append(Address())
         u[0].addresses[0].email_address='hi'
-        objectstore.commit()
+        self.assert_sql(db, lambda: objectstore.commit(), 
+                [
+                    (
+                    "INSERT INTO email_addresses (address_id, user_id, email_address) VALUES (:address_id, :user_id, :email_address)",
+                    {'email_address': 'hi', 'address_id': None, 'user_id': 7}
+                    ),
+                ]
+        )
 
     def testchildmanipulations(self):
         """digs deeper into modifying the child items of an object to insure the correct
index f72d58c9dadda00d0425e01d6c97266aba452541..8f7496c631c87fbd9e4eb85b9769ceca04e0974e 100644 (file)
@@ -61,7 +61,7 @@ class EngineAssert(object):
             (query, params) = item
             if callable(params):
                 params = params()
-            self.unittest.assert_(statement == query and params == parameters, query + repr(params) + statement + repr(parameters))
+            self.unittest.assert_(statement == query and params == parameters, "Testing for query '%s' params %s, received '%s' with params %s" % (query, repr(params), statement, repr(parameters)))
         return self.realexec(statement, parameters, **kwargs)
         
 def runTests(suite):