]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
dont call up new session unless save_on_init
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 31 Oct 2007 17:15:30 +0000 (17:15 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 31 Oct 2007 17:15:30 +0000 (17:15 +0000)
lib/sqlalchemy/orm/scoping.py

index 82692aad26669d7cebd2118ba2411894da352117..3f2f2f049faf409264e675b26147a5cd29bc2c5b 100644 (file)
@@ -118,7 +118,6 @@ class _ScopedExt(MapperExtension):
             class_.query = query()
         
     def init_instance(self, mapper, class_, oldinit, instance, args, kwargs):
-        session = kwargs.pop('_sa_session', self.context.registry())
         if not isinstance(oldinit, types.MethodType):
             for key, value in kwargs.items():
                 if self.validate:
@@ -126,6 +125,7 @@ class _ScopedExt(MapperExtension):
                         raise exceptions.ArgumentError("Invalid __init__ argument: '%s'" % key)
                 setattr(instance, key, value)
         if self.save_on_init:
+            session = kwargs.pop('_sa_session', self.context.registry())
             session._save_impl(instance, entity_name=kwargs.pop('_sa_entity_name', None))
         return EXT_CONTINUE