]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- removed meaningless entity_name argument from session.delete()
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 16 Apr 2007 22:35:53 +0000 (22:35 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 16 Apr 2007 22:35:53 +0000 (22:35 +0000)
- session.merge() propigates given entity_name to locate that mapper if the given object
is transient (and therefore has no entity_name)
- some fixes to MockEngine which still is mostly useless for most cases.
- unitofwork test used incorrect session.delete() signature

lib/sqlalchemy/engine/strategies.py
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/orm/session.py
test/orm/unitofwork.py

index 1b760fca8b2f28d6ccc2174b8cee2bff5caeb654..ba9b0968a5a48a3fc51450a641c135b6f906992b 100644 (file)
@@ -180,9 +180,12 @@ class MockEngineStrategy(EngineStrategy):
         engine = property(lambda s: s)
         dialect = property(lambda s:s._dialect)
         
-        def contextual_connect(self):
+        def contextual_connect(self, **kwargs):
             return self
 
+        def compiler(self, statement, parameters, **kwargs):
+            return self._dialect.compiler(statement, parameters, engine=self, **kwargs)
+
         def create(self, entity, **kwargs):
             kwargs['checkfirst'] = False
             entity.accept_visitor(self.dialect.schemagenerator(self, **kwargs))
index 0279cca53bf031726b052cbaa741d64777032978..2bffef815c201e60d7bbc96ce329c0950dd16a05 100644 (file)
@@ -1803,12 +1803,17 @@ def has_mapper(object):
 
     return hasattr(object, '_entity_name')
 
-def object_mapper(object, raiseerror=True):
+def object_mapper(object, entity_name=None, raiseerror=True):
     """Given an object, return the primary Mapper associated with the object instance.
     
         object
             The object instance.
             
+        entity_name
+            Entity name of the mapper to retrieve, if the given instance is 
+            transient.  Otherwise uses the entity name already associated 
+            with the instance.
+            
         raiseerror
             Defaults to True: raise an ``InvalidRequestError`` if no mapper can
             be located.  If False, return None.
@@ -1816,10 +1821,10 @@ def object_mapper(object, raiseerror=True):
     """
 
     try:
-        mapper = mapper_registry[ClassKey(object.__class__, getattr(object, '_entity_name', None))]
+        mapper = mapper_registry[ClassKey(object.__class__, getattr(object, '_entity_name', entity_name))]
     except (KeyError, AttributeError):
         if raiseerror:
-            raise exceptions.InvalidRequestError("Class '%s' entity name '%s' has no mapper associated with it" % (object.__class__.__name__, getattr(object, '_entity_name', None)))
+            raise exceptions.InvalidRequestError("Class '%s' entity name '%s' has no mapper associated with it" % (object.__class__.__name__, getattr(object, '_entity_name', entity_name)))
         else:
             return None
     return mapper.compile()
index d1639d395a186300dbc4b445ab336baef7ea14a8..35b35201d894b53a73eb25797227a4118d24214a 100644 (file)
@@ -437,7 +437,7 @@ class Session(object):
         else:
             self._update_impl(object, entity_name=entity_name)
 
-    def delete(self, object, entity_name=None):
+    def delete(self, object):
         """Mark the given instance as deleted.
 
         The delete operation occurs upon ``flush()``.
@@ -446,7 +446,7 @@ class Session(object):
         for c in [object] + list(_object_mapper(object).cascade_iterator('delete', object)):
             self.uow.register_deleted(c)
 
-    def merge(self, object, entity_name=None, _recursive=None):
+    def merge(self, object,entity_name=None, _recursive=None):
         """Copy the state of the given `object` onto the persistent
         object with the same identifier.
 
@@ -462,7 +462,7 @@ class Session(object):
 
         if _recursive is None:
             _recursive = util.Set()
-        mapper = _object_mapper(object)
+        mapper = _object_mapper(object, entity_name=entity_name)
         key = getattr(object, '_instance_key', None)
         if key is None:
             merged = mapper._create_instance(self)
index fd97c9c1a9d60e38651f9556b80a9917453956cb..a54daa41a8796206d70b269807a65f9d78940855 100644 (file)
@@ -110,7 +110,8 @@ class VersioningTest(UnitOfWorkTest):
         f1_s.value='f1rev4'
         s2.flush()
     
-        s.delete(f1, f2)
+        s.delete(f1)
+        s.delete(f2)
         success = False
         try:
             s.flush()