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
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
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)
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)