summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
authorHonza Král <honza.kral@gmail.com>2009-06-01 15:38:11 +0000
committerHonza Král <honza.kral@gmail.com>2009-06-01 15:38:11 +0000
commit55e23d5efaa11b7385c9c0d117378b07cdeb7341 (patch)
tree3f256f30b15ca2212bb248bf06d484fa73481aa3 /django/forms
parenta2b215263596b1778054e3e8710dd6da13063f16 (diff)
[soc2009/model-validation] Moved ValidationError to django.core.exceptions and removed ErrorList from within the Error
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@10867 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/__init__.py2
-rw-r--r--django/forms/fields.py17
-rw-r--r--django/forms/forms.py7
-rw-r--r--django/forms/formsets.py3
-rw-r--r--django/forms/models.py3
-rw-r--r--django/forms/util.py20
6 files changed, 16 insertions, 36 deletions
diff --git a/django/forms/__init__.py b/django/forms/__init__.py
index 0d9c68f9e0..dc8b5212c4 100644
--- a/django/forms/__init__.py
+++ b/django/forms/__init__.py
@@ -10,7 +10,7 @@ TODO:
"This form field requires foo.js" and form.js_includes()
"""
-from util import ValidationError
+from django.core.exceptions import ValidationError
from widgets import *
from fields import *
from forms import *
diff --git a/django/forms/fields.py b/django/forms/fields.py
index affe3879b9..3e32d8a6f4 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -23,12 +23,14 @@ try:
except NameError:
from sets import Set as set
-import django.core.exceptions
+from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import smart_unicode, smart_str
-from util import ErrorList, ValidationError
-from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateInput, DateTimeInput, TimeInput, SplitDateTimeWidget, SplitHiddenDateTimeWidget
+from util import ErrorList
+from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, \
+ FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, \
+ DateInput, DateTimeInput, TimeInput, SplitDateTimeWidget, SplitHiddenDateTimeWidget
from django.core.files.uploadedfile import SimpleUploadedFile as UploadedFile
__all__ = (
@@ -683,16 +685,9 @@ class TypedChoiceField(ChoiceField):
value = super(TypedChoiceField, self).clean(value)
if value == self.empty_value or value in EMPTY_VALUES:
return self.empty_value
-
- # Hack alert: This field is purpose-made to use with Field.to_python as
- # a coercion function so that ModelForms with choices work. However,
- # Django's Field.to_python raises
- # django.core.exceptions.ValidationError, which is a *different*
- # exception than django.forms.util.ValidationError. So we need to catch
- # both.
try:
value = self.coerce(value)
- except (ValueError, TypeError, django.core.exceptions.ValidationError):
+ except (ValueError, TypeError, ValidationError):
raise ValidationError(self.error_messages['invalid_choice'] % {'value': value})
return value
diff --git a/django/forms/forms.py b/django/forms/forms.py
index 1b9faa7e4d..6b6f1c5971 100644
--- a/django/forms/forms.py
+++ b/django/forms/forms.py
@@ -4,6 +4,7 @@ Form classes
from copy import deepcopy
+from django.core.exceptions import ValidationError
from django.utils.datastructures import SortedDict
from django.utils.html import conditional_escape
from django.utils.encoding import StrAndUnicode, smart_unicode, force_unicode
@@ -11,7 +12,7 @@ from django.utils.safestring import mark_safe
from fields import Field, FileField
from widgets import Media, media_property, TextInput, Textarea
-from util import flatatt, ErrorDict, ErrorList, ValidationError
+from util import flatatt, ErrorDict, ErrorList
__all__ = ('BaseForm', 'Form')
@@ -243,13 +244,13 @@ class BaseForm(StrAndUnicode):
value = getattr(self, 'clean_%s' % name)()
self.cleaned_data[name] = value
except ValidationError, e:
- self._errors[name] = e.messages
+ self._errors[name] = self.error_class(e.messages)
if name in self.cleaned_data:
del self.cleaned_data[name]
try:
self.cleaned_data = self.clean()
except ValidationError, e:
- self._errors[NON_FIELD_ERRORS] = e.messages
+ self._errors[NON_FIELD_ERRORS] = self.error_class(e.messages)
if self._errors:
delattr(self, 'cleaned_data')
diff --git a/django/forms/formsets.py b/django/forms/formsets.py
index bb8e3107e1..d5101c762e 100644
--- a/django/forms/formsets.py
+++ b/django/forms/formsets.py
@@ -1,10 +1,11 @@
from forms import Form
+from django.core.exceptions import ValidationError
from django.utils.encoding import StrAndUnicode
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
from fields import IntegerField, BooleanField
from widgets import Media, HiddenInput
-from util import ErrorList, ErrorDict, ValidationError
+from util import ErrorList
__all__ = ('BaseFormSet', 'all_valid')
diff --git a/django/forms/models.py b/django/forms/models.py
index a0b217860d..d5d5999c76 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -8,7 +8,8 @@ from django.utils.datastructures import SortedDict
from django.utils.text import get_text_list, capfirst
from django.utils.translation import ugettext_lazy as _, ugettext
-from util import ValidationError, ErrorList
+from django.core.exceptions import ValidationError
+from util import ErrorList
from forms import BaseForm, get_declared_fields, NON_FIELD_ERRORS
from fields import Field, ChoiceField, IntegerField, EMPTY_VALUES
from widgets import Select, SelectMultiple, HiddenInput, MultipleHiddenInput
diff --git a/django/forms/util.py b/django/forms/util.py
index b9b88a61e6..8cd1f10f43 100644
--- a/django/forms/util.py
+++ b/django/forms/util.py
@@ -1,5 +1,5 @@
from django.utils.html import conditional_escape
-from django.utils.encoding import smart_unicode, StrAndUnicode, force_unicode
+from django.utils.encoding import StrAndUnicode, force_unicode
from django.utils.safestring import mark_safe
def flatatt(attrs):
@@ -48,21 +48,3 @@ class ErrorList(list, StrAndUnicode):
def __repr__(self):
return repr([force_unicode(e) for e in self])
-class ValidationError(Exception):
- def __init__(self, message):
- """
- ValidationError can be passed any object that can be printed (usually
- a string) or a list of objects.
- """
- if isinstance(message, list):
- self.messages = ErrorList([smart_unicode(msg) for msg in message])
- else:
- message = smart_unicode(message)
- self.messages = ErrorList([message])
-
- def __str__(self):
- # This is needed because, without a __str__(), printing an exception
- # instance would result in this:
- # AttributeError: ValidationError instance has no attribute 'args'
- # See http://www.python.org/doc/current/tut/node10.html#handling
- return repr(self.messages)