# -*- 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))