@@ -355,21 +355,22 @@ def post(self):
355
355
return json (self .rdict )
356
356
357
357
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
+
359
362
params = self .request_data [key ]
360
363
params_role = params .get ("@role" )
361
364
362
365
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 ,{})
365
368
user_id_field = model_setting .get ("user_id_field" )
366
369
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 )})
369
372
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 ,{})
373
374
if not request_tag_config :
374
375
return json ({"code" :400 ,"msg" :"tag '%s' not found" % (tag )})
375
376
tag_POST = request_tag_config .get ("POST" ,{})
@@ -387,7 +388,7 @@ def _post_one(self,key,tag):
387
388
roles = model_POST .get ("roles" )
388
389
if params_role :
389
390
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 )})
391
392
roles = [params_role ]
392
393
393
394
if roles :
@@ -466,22 +467,22 @@ def put(self):
466
467
return json (self .rdict )
467
468
468
469
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
+
470
474
params = self .request_data [key ]
471
475
params_role = params .get ("@role" )
472
476
473
477
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 ,{})
476
480
user_id_field = model_setting .get ("user_id_field" )
477
481
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 )})
480
484
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 ,{})
485
486
if not request_tag_config :
486
487
return json ({"code" :400 ,"msg" :"tag '%s' not found" % (tag )})
487
488
tag_PUT = request_tag_config .get ("PUT" ,{})
@@ -508,7 +509,7 @@ def _put_one(self,key,tag):
508
509
roles = model_PUT .get ("roles" )
509
510
if params_role :
510
511
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 )})
512
513
roles = [params_role ]
513
514
if roles :
514
515
for role in roles :
@@ -538,14 +539,20 @@ def _put_one(self,key,tag):
538
539
log .error ("request '%s' disallow '%s'" % (tag ,field ))
539
540
return json ({"code" :400 ,"msg" :"request '%s' disallow '%s'" % (tag ,field )})
540
541
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 )})
541
548
kwargs = {}
542
549
for k in params :
543
550
if k == "id" :
544
551
continue
545
552
elif hasattr (obj ,k ):
546
553
kwargs [k ]= params [k ]
547
554
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 )})
549
556
obj .update (** kwargs )
550
557
ret = obj .save ()
551
558
obj_dict = {"id" :id_ }
@@ -582,21 +589,22 @@ def delete(self):
582
589
return json (self .rdict )
583
590
584
591
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
+
586
596
params = self .request_data [key ]
587
597
params_role = params .get ("@role" )
588
598
589
599
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 ,{})
592
602
user_id_field = model_setting .get ("user_id_field" )
593
603
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 )})
596
606
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 ,{})
600
608
if not request_tag_config :
601
609
return json ({"code" :400 ,"msg" :"tag '%s' not found" % (tag )})
602
610
tag_DELETE = request_tag_config .get ("DELETE" ,{})
@@ -623,7 +631,7 @@ def _delete_one(self,key,tag):
623
631
roles = DELETE .get ("roles" )
624
632
if params_role :
625
633
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 )})
627
635
roles = [params_role ]
628
636
if roles :
629
637
for role in roles :
@@ -650,7 +658,7 @@ def _delete_one(self,key,tag):
650
658
obj .delete ()
651
659
ret = True
652
660
except Exception as e :
653
- log .error ("remove %s %s fail" % (modelname ,id_ ))
661
+ log .error ("remove %s %s fail" % (model_name ,id_ ))
654
662
ret = False
655
663
656
664
obj_dict = {"id" :id_ }