diff --git a/uliweb_apijson/apijson/views.py b/uliweb_apijson/apijson/views.py index 7418ac4..7b9b9f7 100644 --- a/uliweb_apijson/apijson/views.py +++ b/uliweb_apijson/apijson/views.py @@ -30,16 +30,22 @@ def apply_vars(self): self.rdict[key[:-1]] = v def get(self): - for key in self.request_data: - if key[-1]=="@": - #vars need to be applied later - pass - elif key[-2:]=="[]": - rsp = self._get_array(key) - else: - rsp = self._get_one(key) - if rsp: return rsp - self.apply_vars() + try: + for key in self.request_data: + if key[-1]=="@": + #vars need to be applied later + pass + elif key[-2:]=="[]": + rsp = self._get_array(key) + else: + rsp = self._get_one(key) + if rsp: return rsp + self.apply_vars() + except Exception as e: + err = "exception when handling 'apijson get': %s"%(e) + log.error(err) + traceback.print_exc() + return json({"code":400,"msg":err}) return json(self.rdict) def _get_one(self,key): @@ -258,9 +264,15 @@ def _filter_owner(self,model,model_setting,q): return owner_filtered,q def head(self): - for key in self.request_data: - rsp = self._head(key) - if rsp: return rsp + try: + for key in self.request_data: + rsp = self._head(key) + if rsp: return rsp + except Exception as e: + err = "exception when handling 'apijson head': %s"%(e) + log.error(err) + traceback.print_exc() + return json({"code":400,"msg":err}) return json(self.rdict) @@ -321,17 +333,24 @@ def _head(self,key): self.rdict[key] = rdict def post(self): - tag = self.request_data.get("@tag") - if not tag: - return json({"code":400,"msg":"'tag' parameter is needed"}) - for key in self.request_data: - if key[0]!="@": - rsp = self._post_one(key,tag) - if rsp: - return rsp - else: - #only accept one table - return json(self.rdict) + try: + tag = self.request_data.get("@tag") + if not tag: + return json({"code":400,"msg":"'tag' parameter is needed"}) + for key in self.request_data: + if key[0]!="@": + rsp = self._post_one(key,tag) + if rsp: + return rsp + else: + #only accept one table + return json(self.rdict) + except Exception as e: + err = "exception when handling 'apijson post': %s"%(e) + log.error(err) + traceback.print_exc() + return json({"code":400,"msg":err}) + return json(self.rdict) def _post_one(self,key,tag): @@ -423,17 +442,23 @@ def _post_one(self,key,tag): self.rdict[key] = obj_dict def put(self): - tag = self.request_data.get("@tag") - if not tag: - return json({"code":400,"msg":"'tag' parameter is needed"}) - for key in self.request_data: - if key[0]!="@": - rsp = self._put_one(key,tag) - if rsp: - return rsp - else: - #only accept one table - return json(self.rdict) + try: + tag = self.request_data.get("@tag") + if not tag: + return json({"code":400,"msg":"'tag' parameter is needed"}) + for key in self.request_data: + if key[0]!="@": + rsp = self._put_one(key,tag) + if rsp: + return rsp + else: + #only accept one table + return json(self.rdict) + except Exception as e: + err = "exception when handling 'apijson put': %s"%(e) + log.error(err) + traceback.print_exc() + return json({"code":400,"msg":err}) return json(self.rdict) @@ -527,17 +552,23 @@ def _put_one(self,key,tag): self.rdict[key] = obj_dict def delete(self): - tag = self.request_data.get("@tag") - if not tag: - return json({"code":400,"msg":"'tag' parameter is needed"}) - for key in self.request_data: - if key[0]!="@": - rsp = self._delete_one(key,tag) - if rsp: - return rsp - else: - #only accept one table - return json(self.rdict) + try: + tag = self.request_data.get("@tag") + if not tag: + return json({"code":400,"msg":"'tag' parameter is needed"}) + for key in self.request_data: + if key[0]!="@": + rsp = self._delete_one(key,tag) + if rsp: + return rsp + else: + #only accept one table + return json(self.rdict) + except Exception as e: + err = "exception when handling 'apijson delete': %s"%(e) + log.error(err) + traceback.print_exc() + return json({"code":400,"msg":err}) return json(self.rdict) def _delete_one(self,key,tag):