Exemple #1
0
 def make_faux_request(self):
     """In the case we can't use real request object, make a new request from registry given to Celery."""
     # Real request has been already committed in this point,
     # so create a faux request to satisfy the presence of dbsession et. al.
     registry = self.app.registry
     request = _make_request("/", registry)
     apply_request_extensions(request)
     return request
Exemple #2
0
 def make_faux_request(self):
     """In the case we can't use real request object, make a new request from registry given to Celery."""
     # Real request has been already committed in this point,
     # so create a faux request to satisfy the presence of dbsession et. al.
     registry = self.app.registry
     request = _make_request("/", registry)
     apply_request_extensions(request)
     return request
Exemple #3
0
def _make_fake_request(discussion):
    from pyramid.scripting import _make_request, prepare
    request = None
    if discussion:
        request = _make_request('/debate/' + discussion.slug)
        request.matchdict = {'discussion_slug': discussion.slug}
    r = prepare(request)
    return r['request'], r['closer']
Exemple #4
0
 def build(self):
     with main_module(self.site):
         self.registry.notify(PreBuild(self))
         paths = self.get_paths()
         router = Router(self.registry)
         extensions = self.registry.queryUtility(IRequestExtensions)
         for path in paths:
             request = _make_request(path, registry=self.registry)
             if extensions is not None:
                 request._set_extensions(extensions)
             response = router.handle_request(request)
             self.write(path, response)
Exemple #5
0
    def make_faux_request(self, tm=None):
        """In the case we can't use real request object, make a new request from registry given to Celery."""
        # Real request has been already committed in this point,
        # so create a faux request to satisfy the presence of dbsession et. al.
        registry = self.app.registry

        request = _make_request('/', registry)

        # Make sure we have a transaction manager
        request.tm = transaction.manager if not tm else tm

        apply_request_extensions(request)
        return request
Exemple #6
0
 def build(self):
     with main_module(self.site):
         __import__("__main__.config")
         config = self.site.config.config
         self.registry = config.registry
         config.add_request_method(static_path)
         config.add_request_method(relroute_path)
         config.commit()
         self.registry['path'] = self.path
         self.siteconfig = config.registry.queryUtility(
             IConfigFactory,
             default=DefaultConfigFactory)(self.registry)
         self.siteconfig.setdefault('site', {})
         self.siteconfig['site'].setdefault('outpath', 'output')
         self.registry['root'] = config.registry.queryUtility(IRootFactory)
         self.registry['siteconfig'] = self.siteconfig
         self.registry.registerUtility(lambda h, r: h, ITweens)
         written_paths = set()
         self.registry.notify(PreBuild(self))
         paths = self.get_paths()
         router = Router(self.registry)
         extensions = self.registry.queryUtility(IRequestExtensions)
         for path in paths:
             request = _make_request(path, registry=self.registry)
             self.threadlocal_manager.push(dict(
                 registry=self.registry, request=request))
             try:
                 if extensions is not None:
                     request._set_extensions(extensions)
                 response = router.handle_request(request)
             finally:
                 self.threadlocal_manager.pop()
             written_paths.add(self.write(path[1:], response))
         all_paths = dirtools.Dir(self.siteconfig['site']['outpath'])
         for path in set(all_paths.files()).difference(written_paths):
             fn = os.path.join(self.siteconfig['site']['outpath'], path)
             log.info("Deleting '%s'." % path)
             os.unlink(fn)
         for path in all_paths.subdirs(sort_reverse=True):
             fn = os.path.join(self.siteconfig['site']['outpath'], path)
             try:
                 os.rmdir(fn)
                 log.info("Removed '%s'." % path)
             except OSError as ex:
                 if ex.errno != errno.ENOTEMPTY:
                     raise
Exemple #7
0
 def get_paths(self):
     paths = set()
     root = self.registry['root']
     request = _make_request('/', registry=self.registry)
     if root:
         excludes = self.siteconfig['site'].get('excludes', '').split('\n')
         excludes.extend([
             '.*',
             '/config.py*',
             '/site.cfg',
             '/%s' % self.siteconfig['site']['outpath']])
         relpaths = dirtools.Dir(
             root.abspath,
             excludes=excludes).files()
         for relpath in relpaths:
             traverse(root, relpath)
             if root:
                 paths.add('/%s' % relpath)
     visited_routes = set()
     info = self.registry.queryUtility(IStaticURLInfo)
     if info:
         for (url, spec, route_name) in info._get_registrations(self.registry):
             visited_routes.add(route_name)
             path = abspath_from_resource_spec(spec)
             relpaths = dirtools.Dir(path).files()
             for relpath in relpaths:
                 paths.add(
                     request.route_path(route_name, subpath=relpath))
     routelist = self.site.config.config.get_routes_mapper().routelist
     for route in routelist:
         if route.factory is not None:
             matches = route.factory.matches(self.registry)
             paths = paths.union(route.generate(x) for x in matches)
         elif route.name not in visited_routes:
             paths.add(route.generate({}))
             visited_routes.add(route.name)
     return list(sorted(paths))
Exemple #8
0
 def _callFUT(self, path='/', registry=None):
     from pyramid.scripting import _make_request
     return _make_request(path, registry)
Exemple #9
0
 def _callFUT(self, path='/', registry=None):
     from pyramid.scripting import _make_request
     return _make_request(path, registry)