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
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']
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)
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
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
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))
def _callFUT(self, path='/', registry=None): from pyramid.scripting import _make_request return _make_request(path, registry)