Esempio n. 1
0
        def dec(*args, **kwargs):
            session_maker = SessionMaker()
            TvbProfile.current.db.ALLOW_NESTED_TRANSACTIONS = True
            session_maker.start_transaction()
            try:
                try:
                    if hasattr(args[0], 'transactional_setup_method_TVB'):
                        LOGGER.debug(args[0].__class__.__name__ + "->" +
                                     func.__name__ +
                                     "- Transactional SETUP starting...")
                        args[0].transactional_setup_method_TVB()
                    result = func(*args, **kwargs)
                finally:
                    if hasattr(args[0], 'transactional_teardown_method_TVB'):
                        LOGGER.debug(args[0].__class__.__name__ + "->" +
                                     func.__name__ +
                                     "- Transactional TEARDOWN starting...")
                        args[0].transactional_teardown_method_TVB()
                        args[0].delete_project_folders()
            finally:
                session_maker.rollback_transaction()
                session_maker.close_transaction()
                TvbProfile.current.db.ALLOW_NESTED_TRANSACTIONS = False

            if callback is not None:
                callback(*args, **kwargs)
            return result
Esempio n. 2
0
        def dec(*args, **kwargs):
            session_maker = SessionMaker()
            TvbProfile.current.db.ALLOW_NESTED_TRANSACTIONS = True
            session_maker.start_transaction()
            try:
                try:
                    if hasattr(args[0], "setUpTVB"):
                        LOGGER.debug(
                            args[0].__class__.__name__ + "->" + func.__name__ + "- Transactional SETUP starting..."
                        )
                        args[0].setUpTVB()
                    result = func(*args, **kwargs)
                finally:
                    if hasattr(args[0], "tearDownTVB"):
                        LOGGER.debug(
                            args[0].__class__.__name__ + "->" + func.__name__ + "- Transactional TEARDOWN starting..."
                        )
                        args[0].tearDownTVB()
                        args[0].delete_project_folders()
            finally:
                session_maker.rollback_transaction()
                session_maker.close_transaction()
                TvbProfile.current.db.ALLOW_NESTED_TRANSACTIONS = False

            if callback is not None:
                callback(*args, **kwargs)
            return result