def publish( request, module_name, _get_module_info=get_module_info, # only for testing ): ( bobo_before, bobo_after, object, realm, debug_mode, err_hook, validated_hook, transactions_manager, ) = _get_module_info(module_name) notify(PubStart(request)) request.processInputs() response = request.response if bobo_after is not None: response.after_list += (bobo_after, ) if debug_mode: response.debug_mode = debug_mode if realm and not request.get('REMOTE_USER', None): response.realm = realm if bobo_before is not None: bobo_before() # Get the path list. # According to RFC1738 a trailing space in the path is valid. path = request.get('PATH_INFO') request['PARENTS'] = [object] object = request.traverse(path, validated_hook=validated_hook) notify(PubAfterTraversal(request)) if transactions_manager: transactions_manager.recordMetaData(object, request) result = mapply( object, request.args, request, call_object, 1, missing_name, dont_publish_class, request, bind=1, ) if result is not response: response.setBody(result) notify(PubBeforeCommit(request)) return response
def traverse(self, path="/plone", method="GET", headers={}): request = self.layer["request"] request.environ["PATH_INFO"] = path request.environ["PATH_TRANSLATED"] = path request.environ["REQUEST_METHOD"] = method request.environ["HTTP_ORIGIN"] = "http://example.net" request.environ.update(headers) notify(PubStart(request)) return request.traverse(path)
def traverse(self, path='/plone', method='GET', headers={}): request = self.layer['request'] request.environ['PATH_INFO'] = path request.environ['PATH_TRANSLATED'] = path request.environ['REQUEST_METHOD'] = method request.environ['HTTP_ORIGIN'] = 'http://example.net' request.environ.update(headers) notify(PubStart(request)) return request.traverse(path)
def traverse(self, path='/plone/@logout', accept='application/json', method='POST'): request = self.layer['request'] request.environ['PATH_INFO'] = path request.environ['PATH_TRANSLATED'] = path request.environ['HTTP_ACCEPT'] = accept request.environ['REQUEST_METHOD'] = method notify(PubStart(request)) return request.traverse(path)
def traverse(self, path='/plone', accept='application/json', method='GET'): request = self.layer['request'] request.environ['PATH_INFO'] = path request.environ['PATH_TRANSLATED'] = path request.environ['HTTP_ACCEPT'] = accept request.environ['REQUEST_METHOD'] = method request._auth = 'Basic %s' % b64encode( '%s:%s' % (TEST_USER_NAME, TEST_USER_PASSWORD)) notify(PubStart(request)) return request.traverse(path)
def traverse(self, path="/plone", accept="application/json", method="POST"): request = self.layer["request"] request.environ["PATH_INFO"] = path request.environ["PATH_TRANSLATED"] = path request.environ["HTTP_ACCEPT"] = accept request.environ["REQUEST_METHOD"] = method auth = "%s:%s" % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD) request._auth = "Basic %s" % b64encode(auth.encode("utf8")).decode("utf8") notify(PubStart(request)) return request.traverse(path)
def traverse(self, path="/plone/@login", accept="application/json", method="POST"): request = self.layer["request"] request.environ["PATH_INFO"] = path request.environ["PATH_TRANSLATED"] = path request.environ["HTTP_ACCEPT"] = accept request.environ["REQUEST_METHOD"] = method notify(PubStart(request)) return request.traverse(path)
def testPubStart(self): verifyObject(IPubStart, PubStart(_Request()))