@@ -355,21 +355,22 @@ def post(self):
355355 return json (self .rdict )
356356
357357 def _post_one (self ,key ,tag ):
358- modelname = key
358+ APIJSON_REQUESTS = settings .APIJSON_REQUESTS or {}
359+ request_tag = APIJSON_REQUESTS .get (tag ,{})
360+ model_name = request_tag .get ("@model_name" ) or tag
361+
359362 params = self .request_data [key ]
360363 params_role = params .get ("@role" )
361364
362365 try :
363- model = getattr (models ,modelname )
364- model_setting = settings .APIJSON_MODELS .get (modelname ,{})
366+ model = getattr (models ,model_name )
367+ model_setting = settings .APIJSON_MODELS .get (model_name ,{})
365368 user_id_field = model_setting .get ("user_id_field" )
366369 except ModelNotFound as e :
367- log .error ("try to find model '%s' but not found: '%s'" % (modelname ,e ))
368- return json ({"code" :400 ,"msg" :"model '%s' not found" % (modelname )})
370+ log .error ("try to find model '%s' but not found: '%s'" % (model_name ,e ))
371+ return json ({"code" :400 ,"msg" :"model '%s' not found" % (model_name )})
369372
370- request_tag = settings .APIJSON_REQUESTS .get (tag ,{})
371- _model_name = request_tag .get ("@model_name" ) or tag
372- request_tag_config = request_tag .get (_model_name ,{})
373+ request_tag_config = request_tag .get (model_name ,{})
373374 if not request_tag_config :
374375 return json ({"code" :400 ,"msg" :"tag '%s' not found" % (tag )})
375376 tag_POST = request_tag_config .get ("POST" ,{})
@@ -387,7 +388,7 @@ def _post_one(self,key,tag):
387388 roles = model_POST .get ("roles" )
388389 if params_role :
389390 if not params_role in roles :
390- return json ({"code" :400 ,"msg" :"'%s' not accessible by role '%s'" % (modelname ,params_role )})
391+ return json ({"code" :400 ,"msg" :"'%s' not accessible by role '%s'" % (model_name ,params_role )})
391392 roles = [params_role ]
392393
393394 if roles :
@@ -466,22 +467,22 @@ def put(self):
466467 return json (self .rdict )
467468
468469 def _put_one (self ,key ,tag ):
469- modelname = key
470+ APIJSON_REQUESTS = settings .APIJSON_REQUESTS or {}
471+ request_tag = APIJSON_REQUESTS .get (tag ,{})
472+ model_name = request_tag .get ("@model_name" ) or tag
473+
470474 params = self .request_data [key ]
471475 params_role = params .get ("@role" )
472476
473477 try :
474- model = getattr (models ,modelname )
475- model_setting = settings .APIJSON_MODELS .get (modelname ,{})
478+ model = getattr (models ,model_name )
479+ model_setting = settings .APIJSON_MODELS .get (model_name ,{})
476480 user_id_field = model_setting .get ("user_id_field" )
477481 except ModelNotFound as e :
478- log .error ("try to find model '%s' but not found: '%s'" % (modelname ,e ))
479- return json ({"code" :400 ,"msg" :"model '%s' not found" % (modelname )})
482+ log .error ("try to find model '%s' but not found: '%s'" % (model_name ,e ))
483+ return json ({"code" :400 ,"msg" :"model '%s' not found" % (model_name )})
480484
481- APIJSON_REQUESTS = settings .APIJSON_REQUESTS or {}
482- request_tag = APIJSON_REQUESTS .get (tag ,{})
483- _model_name = request_tag .get ("@model_name" ) or tag
484- request_tag_config = request_tag .get (_model_name ,{})
485+ request_tag_config = request_tag .get (model_name ,{})
485486 if not request_tag_config :
486487 return json ({"code" :400 ,"msg" :"tag '%s' not found" % (tag )})
487488 tag_PUT = request_tag_config .get ("PUT" ,{})
@@ -508,7 +509,7 @@ def _put_one(self,key,tag):
508509 roles = model_PUT .get ("roles" )
509510 if params_role :
510511 if not params_role in roles :
511- return json ({"code" :400 ,"msg" :"'%s' not accessible by role '%s'" % (modelname ,params_role )})
512+ return json ({"code" :400 ,"msg" :"'%s' not accessible by role '%s'" % (model_name ,params_role )})
512513 roles = [params_role ]
513514 if roles :
514515 for role in roles :
@@ -538,14 +539,20 @@ def _put_one(self,key,tag):
538539 log .error ("request '%s' disallow '%s'" % (tag ,field ))
539540 return json ({"code" :400 ,"msg" :"request '%s' disallow '%s'" % (tag ,field )})
540541
542+ NECESSARY = tag_PUT .get ("NECESSARY" )
543+ if NECESSARY :
544+ for field in NECESSARY :
545+ if field not in params :
546+ log .error ("request '%s' have not necessary field '%s'" % (tag ,field ))
547+ return json ({"code" :400 ,"msg" :"request '%s' have not necessary field '%s'" % (tag ,field )})
541548 kwargs = {}
542549 for k in params :
543550 if k == "id" :
544551 continue
545552 elif hasattr (obj ,k ):
546553 kwargs [k ] = params [k ]
547554 else :
548- return json ({"code" :400 ,"msg" :"'%s' don't have field '%s'" % (modelname ,k )})
555+ return json ({"code" :400 ,"msg" :"'%s' don't have field '%s'" % (model_name ,k )})
549556 obj .update (** kwargs )
550557 ret = obj .save ()
551558 obj_dict = {"id" :id_ }
@@ -582,21 +589,22 @@ def delete(self):
582589 return json (self .rdict )
583590
584591 def _delete_one (self ,key ,tag ):
585- modelname = key
592+ APIJSON_REQUESTS = settings .APIJSON_REQUESTS or {}
593+ request_tag = APIJSON_REQUESTS .get (tag ,{})
594+ model_name = request_tag .get ("@model_name" ) or tag
595+
586596 params = self .request_data [key ]
587597 params_role = params .get ("@role" )
588598
589599 try :
590- model = getattr (models ,modelname )
591- model_setting = settings .APIJSON_MODELS .get (modelname ,{})
600+ model = getattr (models ,model_name )
601+ model_setting = settings .APIJSON_MODELS .get (model_name ,{})
592602 user_id_field = model_setting .get ("user_id_field" )
593603 except ModelNotFound as e :
594- log .error ("try to find model '%s' but not found: '%s'" % (modelname ,e ))
595- return json ({"code" :400 ,"msg" :"model '%s' not found" % (modelname )})
604+ log .error ("try to find model '%s' but not found: '%s'" % (model_name ,e ))
605+ return json ({"code" :400 ,"msg" :"model '%s' not found" % (model_name )})
596606
597- request_tag = settings .APIJSON_REQUESTS .get (tag ,{})
598- _model_name = request_tag .get ("@model_name" ) or tag
599- request_tag_config = request_tag .get (_model_name ,{})
607+ request_tag_config = request_tag .get (model_name ,{})
600608 if not request_tag_config :
601609 return json ({"code" :400 ,"msg" :"tag '%s' not found" % (tag )})
602610 tag_DELETE = request_tag_config .get ("DELETE" ,{})
@@ -623,7 +631,7 @@ def _delete_one(self,key,tag):
623631 roles = DELETE .get ("roles" )
624632 if params_role :
625633 if not params_role in roles :
626- return json ({"code" :400 ,"msg" :"'%s' not accessible by role '%s'" % (modelname ,params_role )})
634+ return json ({"code" :400 ,"msg" :"'%s' not accessible by role '%s'" % (model_name ,params_role )})
627635 roles = [params_role ]
628636 if roles :
629637 for role in roles :
@@ -650,7 +658,7 @@ def _delete_one(self,key,tag):
650658 obj .delete ()
651659 ret = True
652660 except Exception as e :
653- log .error ("remove %s %s fail" % (modelname ,id_ ))
661+ log .error ("remove %s %s fail" % (model_name ,id_ ))
654662 ret = False
655663
656664 obj_dict = {"id" :id_ }
0 commit comments