Exemplo n.º 1
0
    def create_session_factory(self):
        """Overwrite the creation of Session factory to Use the multi binding
        """
        if self.Session is None or self.must_recreate_session_factory():
            query_bases = [] + self.loaded_cores['Query']
            query_bases += [self.registry_base]
            Query = type('Query', tuple(query_bases), {})
            session_bases = [self.registry_base, MixinSession]
            session_bases.extend(self.loaded_cores['Session'])
            Session = type('Session', tuple(session_bases), {
                'registry_query': Query})

            self.session_connection = None
            if self.Session:
                self.session_connection = self.connection()

            extension = self.additional_setting.get('sa.session.extension')
            if extension:
                extension = extension()

            self.Session = scoped_session(
                sessionmaker(class_=Session, extension=extension),
                EnvironmentManager.scoped_function_for_session())
            self.nb_query_bases = len(self.loaded_cores['Query'])
            self.nb_session_bases = len(self.loaded_cores['Session'])
        else:
            self.flush()
Exemplo n.º 2
0
    def create_session_factory(self):
        """Overwrite the creation of Session factory to Use the multi binding
        """
        if self.Session is None or self.must_recreate_session_factory():
            if self.Session:
                if not self.withoutautomigration:
                    # this is the only case to use commit in the construction
                    # of the registry
                    self.commit()

                # remove all existing instance to create a new instance
                # because the instance are cached
                self.Session.remove()

            query_bases = [] + self.loaded_cores['Query']
            query_bases += [self.registry_base]
            Query = type('Query', tuple(query_bases), {})
            session_bases = [self.registry_base, MixinSession]
            session_bases += self.loaded_cores['Session']
            Session = type('Session', tuple(session_bases), {
                'registry_query': Query})

            extension = self.additional_setting.get('sa.session.extension')
            if extension:
                extension = extension()

            self.Session = scoped_session(
                sessionmaker(class_=Session, extension=extension),
                EnvironmentManager.scoped_function_for_session())
            self.nb_query_bases = len(self.loaded_cores['Query'])
            self.nb_session_bases = len(self.loaded_cores['Session'])
            self.apply_session_events()
        else:
            self.flush()
Exemplo n.º 3
0
 def test_scoped_function_session(self):
     self.assertEqual(EnvironmentManager.scoped_function_for_session(),
                      MockEnvironment.scoped_function_for_session)
Exemplo n.º 4
0
 def test_scoped_function_session(self):
     self.assertEqual(EnvironmentManager.scoped_function_for_session(),
                      MockEnvironment.scoped_function_for_session)
Exemplo n.º 5
0
 def test_scoped_function_session(self):
     getted = EnvironmentManager.scoped_function_for_session()
     wanted = MockEnvironment.scoped_function_for_session
     assert getted == wanted
Exemplo n.º 6
0
 def test_scoped_function_session(self):
     assert EnvironmentManager.scoped_function_for_session() is None