Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cbd7aad

Browse files
catch exception in apijson, log and return error json
1 parent edc8e5a commit cbd7aad

File tree

1 file changed

+77
-46
lines changed

1 file changed

+77
-46
lines changed

‎uliweb_apijson/apijson/views.py‎

Lines changed: 77 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,22 @@ def apply_vars(self):
3030
self.rdict[key[:-1]] = v
3131

3232
def get(self):
33-
for key in self.request_data:
34-
if key[-1]=="@":
35-
#vars need to be applied later
36-
pass
37-
elif key[-2:]=="[]":
38-
rsp = self._get_array(key)
39-
else:
40-
rsp = self._get_one(key)
41-
if rsp: return rsp
42-
self.apply_vars()
33+
try:
34+
for key in self.request_data:
35+
if key[-1]=="@":
36+
#vars need to be applied later
37+
pass
38+
elif key[-2:]=="[]":
39+
rsp = self._get_array(key)
40+
else:
41+
rsp = self._get_one(key)
42+
if rsp: return rsp
43+
self.apply_vars()
44+
except Exception as e:
45+
err = "exception when handling 'apijson get': %s"%(e)
46+
log.error(err)
47+
traceback.print_exc()
48+
return json({"code":400,"msg":err})
4349
return json(self.rdict)
4450

4551
def _get_one(self,key):
@@ -258,9 +264,15 @@ def _filter_owner(self,model,model_setting,q):
258264
return owner_filtered,q
259265

260266
def head(self):
261-
for key in self.request_data:
262-
rsp = self._head(key)
263-
if rsp: return rsp
267+
try:
268+
for key in self.request_data:
269+
rsp = self._head(key)
270+
if rsp: return rsp
271+
except Exception as e:
272+
err = "exception when handling 'apijson head': %s"%(e)
273+
log.error(err)
274+
traceback.print_exc()
275+
return json({"code":400,"msg":err})
264276

265277
return json(self.rdict)
266278

@@ -321,17 +333,24 @@ def _head(self,key):
321333
self.rdict[key] = rdict
322334

323335
def post(self):
324-
tag = self.request_data.get("@tag")
325-
if not tag:
326-
return json({"code":400,"msg":"'tag' parameter is needed"})
327-
for key in self.request_data:
328-
if key[0]!="@":
329-
rsp = self._post_one(key,tag)
330-
if rsp:
331-
return rsp
332-
else:
333-
#only accept one table
334-
return json(self.rdict)
336+
try:
337+
tag = self.request_data.get("@tag")
338+
if not tag:
339+
return json({"code":400,"msg":"'tag' parameter is needed"})
340+
for key in self.request_data:
341+
if key[0]!="@":
342+
rsp = self._post_one(key,tag)
343+
if rsp:
344+
return rsp
345+
else:
346+
#only accept one table
347+
return json(self.rdict)
348+
except Exception as e:
349+
err = "exception when handling 'apijson post': %s"%(e)
350+
log.error(err)
351+
traceback.print_exc()
352+
return json({"code":400,"msg":err})
353+
335354
return json(self.rdict)
336355

337356
def _post_one(self,key,tag):
@@ -423,17 +442,23 @@ def _post_one(self,key,tag):
423442
self.rdict[key] = obj_dict
424443

425444
def put(self):
426-
tag = self.request_data.get("@tag")
427-
if not tag:
428-
return json({"code":400,"msg":"'tag' parameter is needed"})
429-
for key in self.request_data:
430-
if key[0]!="@":
431-
rsp = self._put_one(key,tag)
432-
if rsp:
433-
return rsp
434-
else:
435-
#only accept one table
436-
return json(self.rdict)
445+
try:
446+
tag = self.request_data.get("@tag")
447+
if not tag:
448+
return json({"code":400,"msg":"'tag' parameter is needed"})
449+
for key in self.request_data:
450+
if key[0]!="@":
451+
rsp = self._put_one(key,tag)
452+
if rsp:
453+
return rsp
454+
else:
455+
#only accept one table
456+
return json(self.rdict)
457+
except Exception as e:
458+
err = "exception when handling 'apijson put': %s"%(e)
459+
log.error(err)
460+
traceback.print_exc()
461+
return json({"code":400,"msg":err})
437462

438463
return json(self.rdict)
439464

@@ -527,17 +552,23 @@ def _put_one(self,key,tag):
527552
self.rdict[key] = obj_dict
528553

529554
def delete(self):
530-
tag = self.request_data.get("@tag")
531-
if not tag:
532-
return json({"code":400,"msg":"'tag' parameter is needed"})
533-
for key in self.request_data:
534-
if key[0]!="@":
535-
rsp = self._delete_one(key,tag)
536-
if rsp:
537-
return rsp
538-
else:
539-
#only accept one table
540-
return json(self.rdict)
555+
try:
556+
tag = self.request_data.get("@tag")
557+
if not tag:
558+
return json({"code":400,"msg":"'tag' parameter is needed"})
559+
for key in self.request_data:
560+
if key[0]!="@":
561+
rsp = self._delete_one(key,tag)
562+
if rsp:
563+
return rsp
564+
else:
565+
#only accept one table
566+
return json(self.rdict)
567+
except Exception as e:
568+
err = "exception when handling 'apijson delete': %s"%(e)
569+
log.error(err)
570+
traceback.print_exc()
571+
return json({"code":400,"msg":err})
541572
return json(self.rdict)
542573

543574
def _delete_one(self,key,tag):

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /