
Reviewed-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> On 03/01/2014 10:12 PM, zhshzhou@linux.vnet.ibm.com wrote:
From: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com>
generate_action_handler() parses the request and collects the action arguments. The problem is it calls parse_request() in a generation expression. This implies parse_request() is called for each action argument. However parse_request() should be called only once, because it reads over the request body and turns it to a dict. When it is called a second time, the request body is already over, so parse_request() fails.
This patch stores the result from parse_request() in a variable, and uses the variable in the generation expression.
Signed-off-by: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com> --- src/kimchi/control/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py index 61b4341..48f1949 100644 --- a/src/kimchi/control/base.py +++ b/src/kimchi/control/base.py @@ -65,8 +65,8 @@ class Resource(object): try: model_args = list(self.model_args) if action_args is not None: - model_args.extend(parse_request()[key] - for key in action_args) + request = parse_request() + model_args.extend(request[key] for key in action_args) fn = getattr(self.model, model_fn(self, action_name)) ident = fn(*model_args) self._redirect(ident)
-- Thanks and best regards! Sheldon Feng(冯少合)<shaohef@linux.vnet.ibm.com> IBM Linux Technology Center