k4ever/k4ever/main/fields.py

33 lines
976 B
Python
Raw Normal View History

2010-10-16 17:33:18 +02:00
from django import forms
from django.core.exceptions import ValidationError
import re
from decimal import Decimal, InvalidOperation
2010-10-16 17:33:18 +02:00
class CurrencyInput (forms.TextInput):
def render(self, name, value, attrs=None):
if value != '':
try:
value = u"%.2f" % value
except TypeError:
pass
return super(CurrencyInput, self).render(name, value, attrs)
class CurrencyField (forms.RegexField):
2011-10-06 18:09:35 +02:00
""" Represents a currency field for django forms... or something. """
2010-10-16 17:33:18 +02:00
widget = CurrencyInput
currencyRe = re.compile(r'^(\+|-)?[0-9]{1,5}([,\.][0-9][0-9]?)?$')
2010-10-16 17:33:18 +02:00
def __init__(self, *args, **kwargs):
super(CurrencyField, self).__init__(
self.currencyRe, None, None, *args, **kwargs)
def to_python(self, value):
try:
value = Decimal(value)
except (ValueError, TypeError, InvalidOperation):
2010-10-16 17:33:18 +02:00
raise ValidationError("Bitte gib eine Zahl ein")
return value
def clean(self, value):
value = super(CurrencyField, self).clean(value)
return Decimal(value)