From 0ced8b0bb211fca38669293b15316930e0d648fd Mon Sep 17 00:00:00 2001
From: Malcolm Tredinnick
Date: Mon, 25 Jun 2007 12:47:19 +0000
Subject: unicode: Merged from trunk up to [5530]. Oracle backend has not been
ported to support unicode yet.
git-svn-id: http://code.djangoproject.com/svn/django/branches/unicode@5531 bcc190cf-cafb-0310-a4f2-bffc1f526a37
---
django/newforms/fields.py | 22 +++++++++++++++-------
django/newforms/forms.py | 2 +-
django/newforms/models.py | 5 ++---
django/newforms/widgets.py | 7 +++----
4 files changed, 21 insertions(+), 15 deletions(-)
(limited to 'django/newforms')
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index 3172488d99..a91e5af450 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -27,9 +27,9 @@ __all__ = (
EMPTY_VALUES = (None, '')
try:
- set # Only available in Python 2.4+
+ set
except NameError:
- from sets import Set as set # Python 2.3 fallback
+ from sets import Set as set # Python 2.3 fallback
try:
from decimal import Decimal
@@ -516,11 +516,13 @@ class MultiValueField(Field):
"""
clean_data = []
errors = ErrorList()
- if self.required and not value:
- raise ValidationError(ugettext(u'This field is required.'))
- elif not self.required and not value:
- return self.compress([])
- if not isinstance(value, (list, tuple)):
+ if not value or isinstance(value, (list, tuple)):
+ if not value or not [v for v in value if v not in EMPTY_VALUES]:
+ if self.required:
+ raise ValidationError(ugettext(u'This field is required.'))
+ else:
+ return self.compress([])
+ else:
raise ValidationError(ugettext(u'Enter a list of values.'))
for i, field in enumerate(self.fields):
try:
@@ -558,5 +560,11 @@ class SplitDateTimeField(MultiValueField):
def compress(self, data_list):
if data_list:
+ # Raise a validation error if time or date is empty
+ # (possible if SplitDateTimeField has required=False).
+ if data_list[0] in EMPTY_VALUES:
+ raise ValidationError(ugettext(u'Enter a valid date.'))
+ if data_list[1] in EMPTY_VALUES:
+ raise ValidationError(ugettext(u'Enter a valid time.'))
return datetime.datetime.combine(*data_list)
return None
diff --git a/django/newforms/forms.py b/django/newforms/forms.py
index 7dd40b60aa..50e6f42108 100644
--- a/django/newforms/forms.py
+++ b/django/newforms/forms.py
@@ -159,7 +159,7 @@ class BaseForm(StrAndUnicode):
def as_p(self):
"Returns this form rendered as HTML s."
- return self._html_output(u'
%(label)s %(field)s%(help_text)s
', u'%s
', '
', u' %s', True)
+ return self._html_output(u'%(label)s %(field)s%(help_text)s
', u'%s', '', u' %s', True)
def non_field_errors(self):
"""
diff --git a/django/newforms/models.py b/django/newforms/models.py
index 51d9a5c99e..2803de9675 100644
--- a/django/newforms/models.py
+++ b/django/newforms/models.py
@@ -20,9 +20,8 @@ def save_instance(form, instance, fields=None, fail_message='saved', commit=True
"""
Saves bound Form ``form``'s cleaned_data into model instance ``instance``.
- Assumes ``form`` has a field for every non-AutoField database field in
- ``instance``. If commit=True, then the changes to ``instance`` will be
- saved to the database. Returns ``instance``.
+ If commit=True, then the changes to ``instance`` will be saved to the
+ database. Returns ``instance``.
"""
from django.db import models
opts = instance.__class__._meta
diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py
index ae17d753bf..50de37074a 100644
--- a/django/newforms/widgets.py
+++ b/django/newforms/widgets.py
@@ -3,16 +3,15 @@ HTML Widget classes
"""
try:
- set # Only available in Python 2.4+
+ set
except NameError:
- from sets import Set as set # Python 2.3 fallback
-from itertools import chain
+ from sets import Set as set # Python 2.3 fallback
+from itertools import chain
from django.utils.datastructures import MultiValueDict
from django.utils.html import escape
from django.utils.translation import ugettext
from django.utils.encoding import StrAndUnicode, force_unicode
-
from util import flatatt
__all__ = (
--
cgit v1.3