Cleanup and regex enhancement of CurrencyField
This commit is contained in:
parent
38068e1ebb
commit
27962ad107
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue