Example #1
0
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
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 def testPubStart(self):
     verifyObject(IPubStart, PubStart(_Request()))