From 27962ad107cb4efdee48ce1d8952fb71c1687f75 Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Wed, 26 Oct 2011 01:38:28 +0200 Subject: [PATCH] Cleanup and regex enhancement of CurrencyField --- k4ever/main/fields.py | 43 +------------------------------------------ 1 file changed, 1 insertion(+), 42 deletions(-) diff --git a/k4ever/main/fields.py b/k4ever/main/fields.py index b2f1ea4..32a1baa 100644 --- a/k4ever/main/fields.py +++ b/k4ever/main/fields.py @@ -3,21 +3,6 @@ from django.core.exceptions import ValidationError import re from decimal import Decimal, InvalidOperation -#class CurrencyField(forms.IntegerField): -# default_error_message = { -# 'invalid': _(u'Enter a number.'), -# } -# def __init__(self, positive=True, *args, **kwargs): -# super(IntegerField, self).__init__(*args, **kwargs) -# self.positive = positive -# def to_python(self, value): -# value = super(IntegerField, self).to_python(value) -# if value in validators.EMPTY_VALUES: -# return None -# try: -# value = float(value.replace(",", ".")) -# except: -# pass class CurrencyInput (forms.TextInput): def render(self, name, value, attrs=None): @@ -32,41 +17,15 @@ class CurrencyInput (forms.TextInput): class CurrencyField (forms.RegexField): """ Represents a currency field for django forms... or something. """ widget = CurrencyInput - currencyRe = re.compile(r'^[0-9]{1,5}([,\.][0-9][0-9]?)?$') - - #currencyRe = re.compile(r'^[0-9]{1,5}(.[0-9][0-9]?)?$') -# currencyRe = re.compile(r"^[0-9]") + currencyRe = re.compile(r'^(\+|-)?[0-9]{1,5}([,\.][0-9][0-9]?)?$') def __init__(self, *args, **kwargs): super(CurrencyField, self).__init__( self.currencyRe, None, None, *args, **kwargs) - -#class CurrencyField(forms.FloatField): -# widget = CurrencyInput -# moneyre = re.compile(r"^[0-9]{1,5}([\.][0-9][0-9])?$") -# def __init__(self, positive=False, allowPerCent=False, *args, **kwargs): -# super(forms.FloatField, self).__init__(*args, **kwargs) -# self.positive = positive -# self.allowPerCent = allowPerCent def to_python(self, value): - #return super(forms.FloatField, self).to_python(value) - #raise ValidationError("WTF WTF WTF %s " % value) - #value = value.replace(",", ".") - #try: - # value = super(forms.FloatField, self).to_python(value) - #except ValidationError, e: - # raise NotImplementedError("%s %s" % (e, value)) - #return value - value = value.replace(",", ".") try: value = Decimal(value) except (ValueError, TypeError, InvalidOperation): raise ValidationError("Bitte gib eine Zahl ein") -# if not self.allowPerCent: -# tmpval = 100.0*value -# if tmpval == int(tmpval): -# raise ValidationError("Deine Zahl sollte nicht mehr als zwei Nachkommastellen haben. %s %s %s" % (tmpval, int(tmpval), tmpval-int(tmpval))) -# if self.positive and self.value < 0.0: -# raise ValidationError("Bitte gib eine positive Zahl an.") return value def clean(self, value): value = super(CurrencyField, self).clean(value)