From cb7e07feef16db6dffefb18101ca21d81d3b8e42 Mon Sep 17 00:00:00 2001 From: Cédric Bonhomme Date: Tue, 24 Nov 2015 08:23:34 +0100 Subject: Improved the way arguments are parsed (usefull for the mobile version of pyAggr3g470r). --- pyaggr3g470r/views/api/common.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pyaggr3g470r/views/api/common.py b/pyaggr3g470r/views/api/common.py index ea5172c2..6da93a3b 100644 --- a/pyaggr3g470r/views/api/common.py +++ b/pyaggr3g470r/views/api/common.py @@ -21,6 +21,7 @@ routes : DELETE resources -> to delete several """ +import ast import json import logging import dateutil.parser @@ -161,19 +162,21 @@ class PyAggResourceMulti(PyAggAbstractResource): """retrieve several objects. filters can be set in the payload on the different fields of the object, and a limit can be set in there as well """ - args = None - args = [item[0] for item in request.args.items()] - args = json.loads(args[0]) - try: limit = request.json.pop('limit', 10) order_by = request.json.pop('order_by', None) query = self.controller.read(**request.json) except: - if None is not args: - limit, order_by, query = 10, None, self.controller.read(**args) - else: - limit, order_by, query = 10, None, self.controller.read() + args = {} + for k, v in request.args.items(): + if k in self.attrs.keys(): + if self.attrs[k]['type'] in [bool, int]: + args[k] = ast.literal_eval(v) + else: + args[k] = v + limit = request.args.get('limit', 10) + order_by = request.args.get('order_by', None) + query = self.controller.read(**args) if order_by: query = query.order_by(order_by) if limit: -- cgit