Source code for dp_tornado.helper.validator.form
# -*- coding: utf-8 -*-
from dp_tornado.engine.helper import Helper as dpHelper
[docs]class FormHelper(dpHelper):
[docs] def validate(self, controller, fields, error_res='json'):
assert error_res in ('json', 'http', 'code')
output = {}
missing_reason = 'missing'
invalid_reason = 'invalid'
for field, payload in fields.items():
missing_message = payload['missing'] if 'missing' in payload else None
invalid_message = payload['invalid'] if 'invalid' in payload else None
cast = payload['cast'] if 'cast' in payload else None
value = controller.get_argument(name=field, **payload)
# Value validation
if (cast is bool and value == -1) or (cast is not bool and value is False):
return self._validate_response(controller, error_res, field, invalid_reason, invalid_message)
# Check required
if (value is None or value == '') and 'required' in payload and payload['required']:
return self._validate_response(controller, error_res, field, missing_reason, missing_message)
output[field] = value
return output
def _validate_response(self, controller, error_res, field, reason, message):
if error_res == 'json':
return controller.finish({
'result': False,
'error': {
'field': field,
'reason': reason,
'message': message
}
})
return controller.finish_with_error(400, message)