Field validators
Field validators are Python modules that can be added as plugin to perform custom checks on an operation survey field.
Create a field validator
Validators are based on the Django and Django Rest Framework API.
Create a python file that contains 2 methods that receive a value as parameter.
The methods must be named validate_api
and validate_ui
.
Validators methods takes a value and raises a ValidationError if it does not meet some criteria.
The validate_api
must raise a django.core.exceptions.ValidationError
in case of error.
The validate_ui
must raise a rest_framework.serializers.ValidationError
in case of error.
Here is an example of file that check if the given value of the field is even:
from django.core.exceptions import ValidationError
from rest_framework import serializers
from django.utils.translation import ugettext as _
def validate_api(value):
if int(value) % 2 != 0:
raise serializers.ValidationError('This field must be an even number.')
def validate_ui(value):
try:
if int(value) % 2 != 0:
raise ValidationError(
_('%(value)s is not an even number'),
params={'value': value},
)
except ValueError:
# given value cannot be cast into an integer
pass
Add your validators to the deployment
Place your scripts in a folder on the machine that host Squest. E.g:
tree /tmp/squest_plugins
/tmp/squest_plugins
└── field_validators
├── even_number.py
├── __init__.py
└── superior_to_10.py
Update the docker-compose.yml
file to add a volume that map your script folder to the plugin folder in the Django container:
django: &django
image: quay.io/hewlettpackardenterprise/squest:latest
env_file: docker/environment_variables/squest.env
environment:
WAIT_HOSTS: db:3306,rabbitmq:5672
volumes:
- django_static:/app/static
- django_media:/app/media
- backup:/app/backup
- /tmp/squest_plugins/field_validators:/app/plugins/field_validators # update this line
depends_on:
- db
- rabbitmq
- celery-worker
- celery-beat
- redis-cache
Set validator to a form field
In squest, go into Service Catalog --> Manage Services --> Operations --> Survey
For each field of the RHAAP/AWX survey of the selected operation you can now add one or more validator.