1
0
mirror of https://github.com/django/django.git synced 2025-07-06 18:59:13 +00:00

[soc2009/model-validation] Added code param to ValidationError and use it to override validator's messages

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@11035 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Honza Král 2009-06-18 00:31:57 +00:00
parent d707d37048
commit ae581816be
3 changed files with 7 additions and 5 deletions

View File

@ -35,7 +35,7 @@ class FieldError(Exception):
NON_FIELD_ERRORS = '__all__'
class ValidationError(Exception):
"""An error while validating data."""
def __init__(self, message):
def __init__(self, message, code=None):
import operator
from django.utils.encoding import force_unicode
"""
@ -49,11 +49,10 @@ class ValidationError(Exception):
if isinstance(message, list):
self.messages = [force_unicode(msg) for msg in message]
else:
self.code = code
message = force_unicode(message)
self.messages = [message]
def __str__(self):
# This is needed because, without a __str__(), printing an exception
# instance would result in this:

View File

@ -20,7 +20,7 @@ email_re = re.compile(
def validate_email(value):
if not email_re.search(smart_unicode(value)):
raise ValidationError(_(u'Enter a valid e-mail address.'))
raise ValidationError(_(u'Enter a valid e-mail address.'), code='invalid')
class ComplexValidator(object):
def get_value(self, name, all_values, obj):

View File

@ -131,7 +131,10 @@ class Field(object):
try:
v(value)
except ValidationError, e:
errors.extend(e.messages)
if hasattr(e, 'code'):
errors.append(self.error_messages.get(e.code, e.messages[0]))
else:
errors.extend(e.messages)
if errors:
raise ValidationError(errors)