from django import forms
import dateutil.parser
class FuzzyDateTimeField(forms.Field):
'''Like a DateTimeField, but uses dateutil.parser to parse datetime.'''
def __init__(self, widget=forms.DateTimeInput, fuzzy=True, **kwargs):
forms.Field.__init__(self, widget=widget, **kwargs)
self.fuzzy = fuzzy
def clean(self, val):
super(FuzzyDateTimeField, self).clean(val)
if not val:
return None
elif isinstance(val, datetime.datetime):
return val
try:
return dateutil.parser.parse(val.strip(), fuzzy=self.fuzzy)
except ValueError, err:
raise forms.ValidationError(*err.args)
Comments