def clean_condition(self): condition = self.cleaned_data["condition"] try: tree = codingruletoolkit.parse(CodingRule(condition=condition)) except (Code.DoesNotExist, CodingSchemaField.DoesNotExist, CodingRule.DoesNotExist) as e: raise ValidationError(e) except SyntaxError as e: raise ValidationError(e) if tree is not None: codingruletoolkit.clean_tree(self.codingschema, tree) return condition
def test_clean_tree(self): import functools o1, o2 = amcattest.create_test_code(), amcattest.create_test_code() codebook, codebook_codes = amcattest.create_test_codebook_with_codes() schema_with_fields = amcattest.create_test_schema_with_fields(codebook=codebook) schema = schema_with_fields[0] code_field = schema_with_fields[4] c = functools.partial(self.condition, schema) tree = parse(c("{code_field.id}=={o1.id}".format(**locals()))) self.assertRaises(ValidationError, clean_tree, schema, tree) tree = parse(c("{code_field.id}=={code.id}".format(code_field=code_field, code=codebook.codes[0]))) self.assertEquals(clean_tree(schema, tree), None) self.assertRaises(ValidationError, clean_tree, amcattest.create_test_schema_with_fields()[0], tree)
def test_clean_tree(self): import functools o1, o2 = amcattest.create_test_code(), amcattest.create_test_code() codebook, codebook_codes = amcattest.create_test_codebook_with_codes() schema_with_fields = amcattest.create_test_schema_with_fields( codebook=codebook) schema = schema_with_fields[0] code_field = schema_with_fields[4] c = functools.partial(self.condition, schema) tree = parse(c("{code_field.id}=={o1.id}".format(**locals()))) self.assertRaises(ValidationError, clean_tree, schema, tree) tree = parse( c("{code_field.id}=={code.id}".format(code_field=code_field, code=codebook.codes[0]))) self.assertEquals(clean_tree(schema, tree), None) self.assertRaises(ValidationError, clean_tree, amcattest.create_test_schema_with_fields()[0], tree)