コード例 #1
0
    def __init__(self, commit_veto=None):
        # Embed repoze.tm.TM for now
        self.tm = TM(application=None, commit_veto=commit_veto)

        log.info("Transaction Tool initialized")

        cherrypy.engine.subscribe('stop', self.end_all)

        return super(TransactionTool, self).__init__("on_start_resource",
                                                     self.begin)
コード例 #2
0
ファイル: testbrowser.py プロジェクト: alex-obi/adhocracy
 def make_wsgi_app(self):
     app = pylonsapp
     app = zope.testbrowser.wsgi.AuthorizationMiddleware(app)
     app = TM(app)
     zope.testbrowser.wsgi._allowed.add(adhocracy_domain)
     zope.testbrowser.wsgi._allowed_2nd_level.add(adhocracy_domain)
     return app
コード例 #3
0
def main(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    from repoze.bfg.authentication import AuthTktAuthenticationPolicy
    from checking.authorization import RouteAuthorizationPolicy
    from checking.authentication import verifyUser

    if not settings.get("sqlalchemy.url"):
        raise ValueError(
            "No 'sqlalchemy.url' value in application configuration.")
    config = Configurator(settings=settings,
                          authentication_policy=AuthTktAuthenticationPolicy(
                              "secret",
                              callback=verifyUser,
                              timeout=30 * 60,
                              max_age=30 * 60,
                              reissue_time=20 * 60),
                          authorization_policy=RouteAuthorizationPolicy())
    config.hook_zca()
    config.begin()
    setupSqlalchemy(settings)
    setupRoutes(config)
    setupChameleon(config)
    setupi18n(config)
    config.end()

    app = config.make_wsgi_app()
    app = TM(app)

    return app
コード例 #4
0
ファイル: repozetm.py プロジェクト: hjalves/ines
    def __init__(self, config, application, **settings):
        super(RepozeTMMiddleware, self).__init__(config, application,
                                                 **settings)

        commit_veto = settings.get('commit_veto')
        if commit_veto:
            commit_veto = get_object_on_path(commit_veto)

        self.repozetm = TM(self.application, commit_veto=commit_veto)
コード例 #5
0
    def __init__(self, commit_veto=None):
        # Embed repoze.tm.TM for now
        self.tm = TM(application=None, commit_veto=commit_veto)

        log.info("Transaction Tool initialized")

        cherrypy.engine.subscribe('stop', self.end_all)

        return super(TransactionTool, self).__init__("on_start_resource",
                                                     self.begin)
コード例 #6
0
class TransactionTool(cherrypy.Tool):
    """A TurboGears Transaction tool using repose.tm"""

    def __init__(self, commit_veto=None):
        # Embed repoze.tm.TM for now
        self.tm = TM(application=None, commit_veto=commit_veto)

        log.info("Transaction Tool initialized")

        cherrypy.engine.subscribe('stop', self.end_all)

        return super(TransactionTool, self).__init__("on_start_resource",
                                                     self.begin)

    def begin(self):
        request.in_transaction = True
        t = transaction.begin()

        so_dm = so.SODataManager()
        t.join(so_dm)

    def end(self):
        # ZODB 3.8 + has isDoomed
        if hasattr(transaction, 'isDoomed') and transaction.isDoomed():
            self.tm.abort()
        if self.tm.commit_veto is not None:
            try:
                if self.tm.commit_veto(None, cherrypy.response.status,
                                       cherrypy.response.headers):
                    log.debug("Commit veto, calling abort!")
                    self.tm.abort()
            except:
                self.tm.abort()
                raise
            else:
                self.tm.commit()
        else:
            self.tm.commit()
        request.in_transaction = False
    end.failsafe = True

    def end_all(self):
        so.end_all()
        request.in_transaction = False
    end_all.failsafe = True

    def error(self):
        self.tm.abort()

    def _setup(self):
        conf = self._merged_args()
        p = conf.pop("priority", None)
        if p is None:
            p = getattr(self.callable, "priority", self._priority)

        request.hooks.attach(self._point, self.callable, priority=p, **conf)

        request.hooks.attach('before_error_response', self.error)
        request.hooks.attach('on_end_request', self.end, priority=40)        
        request.hooks.attach('on_end_request', self.end_all, priority=50)
コード例 #7
0
class TransactionTool(cherrypy.Tool):
    """A TurboGears Transaction tool using repose.tm"""
    def __init__(self, commit_veto=None):
        # Embed repoze.tm.TM for now
        self.tm = TM(application=None, commit_veto=commit_veto)

        log.info("Transaction Tool initialized")

        cherrypy.engine.subscribe('stop', self.end_all)

        return super(TransactionTool, self).__init__("on_start_resource",
                                                     self.begin)

    def begin(self):
        request.in_transaction = True
        t = transaction.begin()

        if True:  #not database._using_sa: XXXXXXXXXXXXXX
            so_dm = so.SODataManager()
            t.join(so_dm)

    def end(self):
        # ZODB 3.8 + has isDoomed
        if hasattr(transaction, 'isDoomed') and transaction.isDoomed():
            self.tm.abort()
        if self.tm.commit_veto is not None:
            try:
                if self.tm.commit_veto(None, cherrypy.response.status,
                                       cherrypy.response.headers):
                    log.debug("Commit veto, calling abort!")
                    self.tm.abort()
            except:
                self.tm.abort()
                raise
            else:
                self.tm.commit()
        else:
            self.tm.commit()
        request.in_transaction = False

    end.failsafe = True

    def end_all(self):
        if False:  #database._use_sa(): ###########
            database.session.clear()
        so.end_all()
        request.in_transaction = False

    end_all.failsafe = True

    def error(self):
        self.tm.abort()

    def _setup(self):
        conf = self._merged_args()
        p = conf.pop("priority", None)
        if p is None:
            p = getattr(self.callable, "priority", self._priority)

        request.hooks.attach(self._point, self.callable, priority=p, **conf)

        request.hooks.attach('before_error_response', self.error)
        request.hooks.attach('on_end_request', self.end, priority=40)
        request.hooks.attach('on_end_request', self.end_all, priority=50)
コード例 #8
0
ファイル: todo.py プロジェクト: azmeuk/ZODB-Documentation
        tasks = self.dm.items()
        tasks.sort()
        return {'tasks': tasks, 'status': 'Marked tasks as done.'}

    @view_config(context=Root, request_param='not done', renderer=template)
    def not_done_view(self):
        tasks = self.request.params.getall('tasks')
        for task in tasks:
            self.dm[task]['task_completed'] = False
        tasks = self.dm.items()
        tasks.sort()
        return {'tasks': tasks, 'status': 'Marked tasks as not done.'}

    @view_config(context=Root, request_param='delete', renderer=template)
    def delete_view(self):
        tasks = self.request.params.getall('tasks')
        for task in tasks:
            del (self.dm[task])
        tasks = self.dm.items()
        tasks.sort()
        return {'tasks': tasks, 'status': 'Deleted tasks.'}


if __name__ == '__main__':
    settings = {}
    config = Configurator(root_factory=Root, settings=settings)
    config.scan()
    app = config.make_wsgi_app()
    app = TM(app, commit_veto=default_commit_veto)
    serve(app, host='0.0.0.0')