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/Programmeentity holds a crucial role in this process. - For instance,
validationCalculationin the schema triggers a specific validation strategy. Similarly, in the duplications section of the schema, settinguniqueness: truesignifies 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 theemailfield (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
strategiesfolder (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_CLASSproperty plays a significant role in defining the value for thevalidationCalculation: nameproperty within the JSON schema of the schema for theBenefit Plan/Programmeentity. - The validation implementation needs to be executed within the
validatemethod. It's expected to return aValidationResultas 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
validatemethod 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openimis_be_calcrule_validations-1.2.0.tar.gz.
File metadata
- Download URL: openimis_be_calcrule_validations-1.2.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86ca86a70c8af76f6d9ae1bdaef8d9f62a4ba0f4b54e94b223ec5c5c570406b1
|
|
| MD5 |
4d793742435d8b4301e16204fcc64ada
|
|
| BLAKE2b-256 |
a48ebde9bfaaf0f8226216e9756394d20d8eca2bd5488e537e6ebe5acd75c1d3
|
File details
Details for the file openimis_be_calcrule_validations-1.2.0-py3-none-any.whl.
File metadata
- Download URL: openimis_be_calcrule_validations-1.2.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
626bedd2f1c60a3a9a61f57ebe2de481e0cb7d71b1baaf63394c3dccb5219485
|
|
| MD5 |
fdbaa5661cedaf0521b57477caf44386
|
|
| BLAKE2b-256 |
f0d0ba8d1407d012f8cc4f957e989224a3db41347691b1854b9e30b17b4c1eb8
|