Merge remote-tracking branch 'lapilofu/hotfix/manifest' into release
[philo.git] / philo / forms / fields.py
1 from django import forms
2 from django.core.exceptions import ValidationError
3 from django.utils import simplejson as json
4
5 from philo.validators import json_validator
6
7
8 __all__ = ('JSONFormField',)
9
10
11 class JSONFormField(forms.Field):
12         """A form field which is validated by :func:`philo.validators.json_validator`."""
13         default_validators = [json_validator]
14         
15         def clean(self, value):
16                 if value == '' and not self.required:
17                         return None
18                 try:
19                         return json.loads(value)
20                 except Exception, e:
21                         raise ValidationError(u'JSON decode error: %s' % e)