File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -748,7 +748,7 @@ def generate_references(self):
748748 return references
749749
750750 def should_generate_multiple_references (self ):
751- return self .include and self .cascade and self .transform
751+ return self .include and self .cascade and self .transform and self . code
752752
753753 @staticmethod
754754 def transform_to_latest_version (queryset , klass ):
@@ -931,6 +931,10 @@ def clean(self):
931931 if not self .is_valid_filter ():
932932 raise ValidationError ({'filter' : ['Invalid filter schema.' ]})
933933
934+ if not self .is_valid_cascade ():
935+ raise ValidationError (
936+ {'cascade' : ['Invalid cascade schema. Either "code" or "filter" must be provided' ]})
937+
934938 self .original_expression = str (self .expression )
935939 if not self .is_static_transform and not self .is_extensional_transform :
936940 self .transform = None
@@ -957,6 +961,13 @@ def filter_to_querystring(self):
957961 return '&' .join (queries )
958962 return None
959963
964+ def is_valid_cascade (self ):
965+ if not self .cascade :
966+ return True
967+ if self .cascade and not (self .code or self .filter ):
968+ return False
969+ return True
970+
960971 def is_valid_filter (self ):
961972 if not self .filter :
962973 return True
Original file line number Diff line number Diff line change @@ -962,6 +962,37 @@ def test_put_expression_with_cascade_to_concepts(self):
962962 ])
963963 )
964964
965+ random_concept = ConceptFactory ()
966+
967+ response = self .client .put (
968+ self .collection .uri + 'references/?transformReferences=extensional' ,
969+ {
970+ 'data' : {'expression' : random_concept .parent .uri },
971+ 'cascade' : {
972+ 'method' : 'sourcetoconcepts' ,
973+ 'cascade levels' : '*' ,
974+ 'map types' : 'Q AND A,CONCEPT SET' ,
975+ 'return map types' : '*'
976+ }
977+ },
978+ HTTP_AUTHORIZATION = 'Token ' + self .token ,
979+ format = 'json'
980+ )
981+
982+ self .assertEqual (response .status_code , 200 )
983+ self .assertEqual (
984+ response .data ,
985+ [{
986+ 'added' : False ,
987+ 'expression' : random_concept .parent .uri ,
988+ 'message' : [
989+ 'This field cannot be null.' ,
990+ 'Invalid cascade schema. Either "code" or "filter" must be provided'
991+ ]
992+ }]
993+ )
994+
995+
965996 def test_put_expression_transform_to_latest_version (self ):
966997 concept2 = ConceptFactory ()
967998 concept2_latest_version = concept2 .get_latest_version ()
You can’t perform that action at this time.
0 commit comments