Created
June 13, 2017 11:10
-
-
Save orehush/adba82276de7d40376f498c0fd83f783 to your computer and use it in GitHub Desktop.
Common validator for use in both rest framework serializers and django forms. Support overriding for default error messages and error field representation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Validator(object): | |
""" | |
Validator for validate data, | |
which used for both rest framework serializers and django forms. | |
Support binding error message for several fields | |
if you override default error fields and set value as tuple. | |
""" | |
default_error_messages = { | |
"field1": "This field is required", | |
} | |
default_error_fields = { | |
"field1": "represent_field1" | |
} | |
def __init__(self, error_messages=None, error_fields=None): | |
error_messages = error_messages or {} | |
error_fields = error_fields or {} | |
self._errors = defaultdict(list) | |
self._error_messages = self.default_error_messages.copy() | |
self._error_messages.update(error_messages) | |
self._error_fields = self.default_error_fields.copy() | |
self._error_fields.update(error_fields) | |
@property | |
def error_messages(self): | |
return self._error_messages | |
@property | |
def error_fields(self): | |
return self._error_fields | |
@property | |
def errors(self): | |
return self._errors | |
def add_error(self, key): | |
field = self.error_fields[key] | |
msg = self.error_messages[key] | |
if isinstance(field, tuple): | |
for f in field: | |
self._errors[f].append(msg) | |
else: | |
self._errors[field].append(msg) | |
def validate_field1(self, value): | |
if not value: | |
self.add_error("field1") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment