From e9e849a722cfb91df4e3b15e206eccbba76c772e Mon Sep 17 00:00:00 2001 From: Joseph Spiros Date: Wed, 8 Sep 2010 13:26:15 -0400 Subject: [PATCH] Added JSON validator to Attributes. --- models/base.py | 3 ++- validators.py | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/models/base.py b/models/base.py index 27c45dc..33c994c 100644 --- a/models/base.py +++ b/models/base.py @@ -6,6 +6,7 @@ from django.core.exceptions import ObjectDoesNotExist 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 @@ -36,7 +37,7 @@ class Attribute(models.Model): 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) diff --git a/validators.py b/validators.py index 637dba8..e4c32d0 100644 --- a/validators.py +++ b/validators.py @@ -1,5 +1,7 @@ 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 @@ -28,3 +30,10 @@ class URLLinkValidator(RegexValidator): 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 -- 2.20.1