@@ -25,21 +25,6 @@ def get_schema(self):
2525 'properties' : {
2626 'reason' : {'enum' : settings .FRAUD_REASONS }
2727 }
28- },
29- {
30- 'properties' : {
31- 'reason' : {'enum' : settings .FRAUD_NEED_ORIGINAL_REASONS }
32- },
33- 'anyOf' : [
34- {'required' : ['plagiarism_url' ]},
35- {'required' : ['plagiarism_description' ]}
36- ]
37- },
38- {
39- 'properties' : {
40- 'reason' : {'enum' : settings .FRAUD_NEED_DETAIL_REASONS }
41- },
42- 'required' : ['illegal_content' ]
4328 }
4429 ],
4530 'required' : ['article_id' ]
@@ -50,6 +35,7 @@ def validate_params(self):
5035 if self .event .get ('pathParameters' ) is None :
5136 raise ValidationError ('pathParameters is required' )
5237 validate (self .params , self .get_schema ())
38+ self .__validate_reason_dependencies (self .params )
5339 # relation
5440 DBUtil .validate_article_existence (
5541 self .dynamodb ,
@@ -88,3 +74,16 @@ def __create_article_fraud_user(self, article_fraud_user_table):
8874 Item = article_fraud_user ,
8975 ConditionExpression = 'attribute_not_exists(article_id)'
9076 )
77+
78+ def __validate_reason_dependencies (self , params ):
79+ reason = params .get ('reason' , '' )
80+ if reason in settings .FRAUD_NEED_ORIGINAL_REASONS :
81+ self .__validate_dependencies (params , ['plagiarism_url' , 'plagiarism_description' ])
82+
83+ if reason in settings .FRAUD_NEED_DETAIL_REASONS :
84+ self .__validate_dependencies (params , ['illegal_content' ])
85+
86+ def __validate_dependencies (self , params , required_items ):
87+ for item in required_items :
88+ if not params .get (item ):
89+ raise ValidationError ("%s is required" % item )
0 commit comments