from philo.exceptions import AncestorDoesNotExist
from philo.utils import ContentTypeRegistryLimiter
from philo.signals import entity_class_prepared
+from philo.validators import json_validator
from UserDict import DictMixin
entity_object_id = models.PositiveIntegerField(verbose_name='Entity ID')
entity = generic.GenericForeignKey('entity_content_type', 'entity_object_id')
key = models.CharField(max_length=255)
- json_value = models.TextField(verbose_name='Value (JSON)', help_text='This value must be valid JSON.')
+ json_value = models.TextField(verbose_name='Value (JSON)', help_text='This value must be valid JSON.', validators=[json_validator])
def get_value(self):
return json.loads(self.json_value)
from django.utils.translation import ugettext_lazy as _
from django.core.validators import RegexValidator
+from django.core.exceptions import ValidationError
+from django.utils import simplejson as json
import re
r'|)' # also allow internal links
r'(?:/?|[/?#]?\S+)$', re.IGNORECASE)
message = _(u'Enter a valid absolute or relative redirect target')
+
+
+def json_validator(value):
+ try:
+ json.loads(value)
+ except:
+ raise ValidationError(u'\'%s\' is not valid JSON' % value)
\ No newline at end of file