The openIMIS Backend calcrule_validations reference module.
Project description
openIMIS Backend calcrule_validations reference module
How we can configure strategy for validation?
- The schema within the
Benefit Plan/Programme
entity holds a crucial role in this process. - For instance,
validationCalculation
in the schema triggers a specific validation strategy. Similarly, in the duplications section of the schema, settinguniqueness: true
signifies the need for duplication checks based on the record's field value. - Based on the provided schema below (from
programme/benefit plan
), it indicates that validations will run for theemail
field (validationCalculation
), and duplication checks will be performed fornational_id
(uniqueness: true
)
{
"$id":"https://example.com/beneficiares.schema.json",
"type":"object",
"title":"Record of beneficiares",
"$schema":"http://json-schema.org/draft-04/schema#",
"properties":{
"email":{
"type":"string",
"description":"email address to contact with beneficiary",
"validationCalculation":{
"name":"EmailValidationStrategy"
}
},
"able_bodied":{
"type":"boolean",
"description":"Flag determining whether someone is able bodied or not"
},
"national_id":{
"type":"string",
"uniqueness":true,
"description":"national id"
},
"educated_level":{
"type":"string",
"description":"The level of person when it comes to the school/education/studies"
},
"chronic_illness":{
"type":"boolean",
"description":"Flag determining whether someone has such kind of illness or not"
},
"national_id_type":{
"type":"string",
"description":"A type of national id"
},
"number_of_elderly":{
"type":"integer",
"description":"Number of elderly"
},
"number_of_children":{
"type":"integer",
"description":"Number of children"
},
"beneficiary_data_source":{
"type":"string",
"description":"The source from where such beneficiary comes"
}
},
"description":"This document records the details beneficiares"
}
- In essence, to create a custom validation rule applicable to a schema field,
you'll need to define a class in python file within the
strategies
folder (The filename should conclude with_validation_strategy.py
). - The example of validation class implementation:
from dataclasses import asdict
from calcrule_validations.strategies.base_strategy import BaseValidationsStrategy
from calcrule_validations.strategies.validation_strategy_interface import ValidationResult
class YourCustomValidationStrategy(BaseValidationsStrategy):
VALIDATION_CLASS = "YourCustomValidationStrategy"
@classmethod
def validate(cls, field_name, field_value, **kwargs):
return asdict(ValidationResult(
success=False,
field_name=field_name,
note="<YOUR VALIDATION NOTE>"
))
- The
VALIDATION_CLASS
property plays a significant role in defining the value for thevalidationCalculation: name
property within the JSON schema of the schema for theBenefit Plan/Programme
entity. - The validation implementation needs to be executed within the
validate
method. It's expected to return aValidationResult
as a dictionary structured as follows:
return asdict(ValidationResult(
success=False,
field_name=field_name,
note="<YOUR VALIDATION NOTE>"
))
- For a valid condition, the expected return should resemble the following:
return asdict(ValidationResult(
success=True,
field_name=field_name,
note="Ok"
))
- The signature of
validate
method isdef validate(cls, field_name, field_value, **kwargs)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for openimis_be_calcrule_validations-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a862903dadc22fc79a600d9685f02306fbced946a67c0f50cd21504ddb304c3 |
|
MD5 | b7495aff591cdf845d65c215b03e214c |
|
BLAKE2b-256 | a80815843c748d9d69ba3e676c85a9ec14ab0400f7c2478d2022c6c11231bfbb |
Close
Hashes for openimis_be_calcrule_validations-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f92debb1acd67ac867fa721e7724c1864b326ac7c664f6d21444544b9d40acc |
|
MD5 | c6aeddc5500e87d81014f7258ad52ab7 |
|
BLAKE2b-256 | bb3fd2cc30a9b91e47df802bf8bc50ce0ed74655ed65c6535347e83503b11b92 |