summaryrefslogtreecommitdiff
path: root/django/oldforms
diff options
context:
space:
mode:
authorJeremy Dunck <jdunck@gmail.com>2007-06-18 16:48:27 +0000
committerJeremy Dunck <jdunck@gmail.com>2007-06-18 16:48:27 +0000
commitbdcc95e5cce2754d78055f86d561ba2be92ba854 (patch)
tree08a7e4c86244cb42fe577aec5c03a57b023822c2 /django/oldforms
parent48c9f87e1f3ba9523d79c09f52c0ccc6221f08bf (diff)
gis: Merged revisions 4786-5490 via svnmerge from
http://code.djangoproject.com/svn/django/trunk git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@5492 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/oldforms')
-rw-r--r--django/oldforms/__init__.py39
1 files changed, 32 insertions, 7 deletions
diff --git a/django/oldforms/__init__.py b/django/oldforms/__init__.py
index 56101984f5..ea1f425ad3 100644
--- a/django/oldforms/__init__.py
+++ b/django/oldforms/__init__.py
@@ -309,6 +309,10 @@ class FormField(object):
return data
html2python = staticmethod(html2python)
+ def iter_render(self, data):
+ # this even needed?
+ return (self.render(data),)
+
def render(self, data):
raise NotImplementedError
@@ -329,7 +333,7 @@ class FormField(object):
def convert_post_data(self, new_data):
name = self.get_member_name()
- if new_data.has_key(self.field_name):
+ if self.field_name in new_data:
d = new_data.getlist(self.field_name)
try:
converted_data = [self.__class__.html2python(data) for data in d]
@@ -750,14 +754,27 @@ class PositiveSmallIntegerField(IntegerField):
raise validators.CriticalValidationError, gettext("Enter a whole number between 0 and 32,767.")
class FloatField(TextField):
+ def __init__(self, field_name, is_required=False, validator_list=None):
+ if validator_list is None: validator_list = []
+ validator_list = [validators.isValidFloat] + validator_list
+ TextField.__init__(self, field_name, is_required=is_required, validator_list=validator_list)
+
+ def html2python(data):
+ if data == '' or data is None:
+ return None
+ return float(data)
+ html2python = staticmethod(html2python)
+
+class DecimalField(TextField):
def __init__(self, field_name, max_digits, decimal_places, is_required=False, validator_list=None):
if validator_list is None: validator_list = []
self.max_digits, self.decimal_places = max_digits, decimal_places
- validator_list = [self.isValidFloat] + validator_list
- TextField.__init__(self, field_name, max_digits+2, max_digits+2, is_required, validator_list)
+ validator_list = [self.isValidDecimal] + validator_list
+ # Initialise the TextField, making sure it's large enough to fit the number with a - sign and a decimal point.
+ super(DecimalField, self).__init__(field_name, max_digits+2, max_digits+2, is_required, validator_list)
- def isValidFloat(self, field_data, all_data):
- v = validators.IsValidFloat(self.max_digits, self.decimal_places)
+ def isValidDecimal(self, field_data, all_data):
+ v = validators.IsValidDecimal(self.max_digits, self.decimal_places)
try:
v(field_data, all_data)
except validators.ValidationError, e:
@@ -766,7 +783,14 @@ class FloatField(TextField):
def html2python(data):
if data == '' or data is None:
return None
- return float(data)
+ try:
+ import decimal
+ except ImportError:
+ from django.utils import _decimal as decimal
+ try:
+ return decimal.Decimal(data)
+ except decimal.InvalidOperation, e:
+ raise ValueError, e
html2python = staticmethod(html2python)
####################
@@ -923,7 +947,8 @@ class FilePathField(SelectField):
for root, dirs, files in os.walk(path):
for f in files:
if match is None or match_re.search(f):
- choices.append((os.path.join(root, f), f))
+ f = os.path.join(root, f)
+ choices.append((f, f.replace(path, "", 1)))
else:
try:
for f in os.listdir(path):