# -*- coding: utf-8 -*-
from django.forms import fields
from django.utils.currency import Currency, NumberFormatError
from django.forms.util import ValidationError
from django.forms import widgets_special
class CurrencyField(fields.DecimalField):
widget = widgets_special.CurrencyInput
def __init__(self, max_value=None, min_value=None, max_digits=None, *args, **kwargs):
kwargs["decimal_places"] = 2
fields.DecimalField.__init__(self, max_value, min_value, max_digits, *args, **kwargs)
def clean(self, value):
if value is None: return None
try:
value = Currency(value, parse_string=True)
except NumberFormatError, e:
raise ValidationError(e.message)
return Currency(super(CurrencyField, self).clean(value))
Comments