示例#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
示例#2
0
 def setUp(self):
     portal = self.layer['portal']
     alsoProvides(portal.REQUEST, IProductLayer)
     setRoles(portal, TEST_USER_ID, ['Manager'])
     self.mtool = getToolByName(portal, 'portal_membership')
     # XXX: Necessary but not sure why, since it's already being
     # done in setUpPloneSite
     e = PubBeforeCommit(portal.REQUEST)
     setUpAdminClient(e)
     self.client = getUtility(IAdminClient)
     wait_for_client_state(self.client, u'authenticated')
    def setUpPloneSite(self, portal):
        # Install into Plone site using portal_setup
        applyProfile(portal, 'collective.xmpp.core:default')
        # Manually enable the browserlayer
        alsoProvides(portal.REQUEST, IProductLayer)

        # Start the reactor
        zr = getUtility(IZopeReactor)
        zr.start()
        wait_for_reactor_state(zr.reactor, state=True)

        registry = getUtility(IRegistry)
        settings = registry.forInterface(IXMPPSettings, check=False)
        settings.admin_jid = u'admin@localhost'
        settings.xmpp_domain = u'localhost'
        e = PubBeforeCommit(portal.REQUEST)
        setUpAdminClient(e)
        client = getUtility(IAdminClient)
        wait_for_client_state(client, u'authenticated')
        wait_on_client_deferreds(client)
示例#4
0
 def testBeforeCommit(self):
     e = PubBeforeCommit(_Request())
     verifyObject(IPubBeforeCommit, e)