コード例 #1
0
ファイル: site.py プロジェクト: chrisrossi/jove
    def site(self):
        """
        Spin up site.
        """
        # Set up the root factory.
        def get_root(request):
            root = get_connection(request).root()
            return self.find_home(root)['content']

        # Colate persistent and config file based settings
        settings = self.settings.copy()
        settings.update(self.get_persistent_settings())

        # Configure Pyramid application
        config = Configurator(root_factory=get_root, settings=settings)
        config.root_factory = get_root # so apps can access during config
        config.begin()
        for service in self.services:
            service.preconfigure(config)
        config.include('pyramid_zodbconn')
        config.include('pyramid_tm')
        self.application.configure(config)
        for service in self.services:
            service.configure(config)
        config.end()

        self._site = site = config.make_wsgi_app()

        def closer():
            db = getattr(config.registry, 'zodb_database', None)
            if db is not None:
                db.close()
                del config.registry.zodb_database

        site.close = closer
        return site