Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #268 -- Added AnyValidator and fixed small bug in [399]. Thanks…

…, Hugo

git-svn-id: http://code.djangoproject.com/svn/django/trunk@402 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 2315ccc4998087463310b1dc2cd3fed21685b5fd 1 parent dae5863
@adrianholovaty adrianholovaty authored
Showing with 24 additions and 1 deletion.
  1. +24 −1 django/core/validators.py
View
25 django/core/validators.py
@@ -344,7 +344,30 @@ def __init__(self, regexp, error_message="The format for this field is wrong."):
def __call__(self, field_data, all_data):
if not self.regexp.match(field_data):
- raise validators.ValidationError(self.error_message)
+ raise ValidationError(self.error_message)
+
+class AnyValidator:
+ """
+ This validator tries all given validators. If any one of them succeeds,
+ validation passes. If none of them succeeds, the given message is thrown
+ as a validation error. The message is rather unspecific, so it's best to
+ specify one on instantiation.
+ """
+ def __init__(self, validator_list=[], error_message="This field is invalid."):
+ self.validator_list = validator_list
+ self.error_message = error_message
+ for v in validator_list:
+ if hasattr(v, 'always_test'):
+ self.always_test = True
+
+ def __call__(self, field_data, all_data):
+ for v in self.validator_list:
+ try:
+ v(field_data, all_data)
+ return
+ except ValidationError, e:
+ pass
+ raise ValidationError(self.error_message)
class URLMimeTypeCheck:
"Checks that the provided URL points to a document with a listed mime type"

0 comments on commit 2315ccc

Please sign in to comment.
Something went wrong with that request. Please try again.