Moved philo files into a philo subdirectory and added a setup.py file. Philo can...
[philo.git] / philo / forms / fields.py
diff --git a/philo/forms/fields.py b/philo/forms/fields.py
new file mode 100644 (file)
index 0000000..b148947
--- /dev/null
@@ -0,0 +1,19 @@
+from django import forms
+from django.core.exceptions import ValidationError
+from django.utils import simplejson as json
+from philo.validators import json_validator
+
+
+__all__ = ('JSONFormField',)
+
+
+class JSONFormField(forms.Field):
+       default_validators = [json_validator]
+       
+       def clean(self, value):
+               if value == '' and not self.required:
+                       return None
+               try:
+                       return json.loads(value)
+               except Exception, e:
+                       raise ValidationError(u'JSON decode error: %s' % e)
\ No newline at end of file