Ejemplo n.º 1
0
    def invoke(self, req, res, feature, model=None):

        if model is None:
            model = self.prepareModel(req)

        special = {
            '_req'  : req,
            '_res'  : res,
            '_sess' : self.sess,
            '_user' : self.uclerk.user,
            '_clerk': self.uclerk.clerk }
        
        f = feature().invoke

        result = platonic.callWithKeys(f, special, req, self.sess)
        
        #@TODO: break this function into smaller pieces.
        #@TODO: use something like a 'platonic request' for per-request data.

        if result is None:
            raise weblib.Redirect(self.success[feature.action] % DictWrap(req))
        elif isinstance(result,dict) or isinstance(result, Model):
            model.update(result)
        else:
            raise TypeError(
                "result should be none or Model, not %s" % result)

        return model
Ejemplo n.º 2
0
    def invoke(self, req, res, feature, model=None):

        if model is None:
            model = self.prepareModel(req)

        special = {
            '_req': req,
            '_res': res,
            '_sess': self.sess,
            '_user': self.uclerk.user,
            '_clerk': self.uclerk.clerk
        }

        f = feature().invoke

        result = platonic.callWithKeys(f, special, req, self.sess)

        #@TODO: break this function into smaller pieces.
        #@TODO: use something like a 'platonic request' for per-request data.

        if result is None:
            raise weblib.Redirect(self.success[feature.action] % DictWrap(req))
        elif isinstance(result, dict) or isinstance(result, Model):
            model.update(result)
        else:
            raise TypeError("result should be none or Model, not %s" % result)

        return model
Ejemplo n.º 3
0
    def getModel(self, env):

        # parse content first, as it may override the method (POST tunneling)
        contentArgs = self.contentArgs(env)

        meth = env['REQUEST_METHOD']
        if (meth == "POST") and '@method' in form:
            meth = contentArgs["@method"]

        # now select the handler based on the method and path:
        handler, pathArgs = self.findHandler(meth, env['PATH_INFO'])

        specialArgs = self.specials(env)
        queryArgs = RequestData(env["QUERY_STRING"])

        allArgs = [specialArgs, pathArgs, queryArgs, contentArgs]

        return callWithKeys(handler, *allArgs)
Ejemplo n.º 4
0
    def getModel(self, env):

        # parse content first, as it may override the method (POST tunneling)
        contentArgs = self.contentArgs(env)

        meth = env['REQUEST_METHOD']
        if (meth == "POST") and '@method' in form:
            meth = contentArgs["@method"]

        # now select the handler based on the method and path:
        handler, pathArgs = self.findHandler(meth, env['PATH_INFO'])
        
        specialArgs = self.specials(env)
        queryArgs = RequestData(env["QUERY_STRING"])

        allArgs = [specialArgs, pathArgs, queryArgs, contentArgs]

        return callWithKeys(handler, *allArgs)