From 05dddabbe2e9e0ea64ec3ec3f7bf3db1161a9315 Mon Sep 17 00:00:00 2001 From: David Gelvin Date: Tue, 7 Sep 2010 13:40:50 +0000 Subject: [PATCH] More validation --- fields.py | 9 ++++----- models.py | 8 ++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/fields.py b/fields.py index 2c6d239..a7daab8 100644 --- a/fields.py +++ b/fields.py @@ -30,14 +30,13 @@ class EavSlugField(models.SlugField): # Remove non alphanumeric characters return re.sub('[^\w]', '', name) -''' + class EavDatatypeField(models.SlugField): - """ + def validate(self, value, instance): + from .models import EavAttribute if not instance.pk: return - if value != EavAttribute.objects.get(instance.pk).datatype: + if value != EavAttribute.objects.get(pk=instance.pk).datatype: raise ValidationError(_(u"You cannot change the datatype of an " u"existing attribute.")) - """ -''' diff --git a/models.py b/models.py index 39765ca..07dd466 100644 --- a/models.py +++ b/models.py @@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _ from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic -from .fields import EavSlugField +from .fields import EavSlugField, EavDatatypeField class EavAttributeLabel(models.Model): @@ -59,7 +59,7 @@ class EavAttribute(models.Model): blank=True, null=True, help_text=_(u"Short description")) - datatype = models.CharField(_(u"data type"), max_length=6, + datatype = EavDatatypeField(_(u"data type"), max_length=6, choices=DATATYPE_CHOICES) created = models.DateTimeField(_(u"created"), default=datetime.now) @@ -72,10 +72,6 @@ class EavAttribute(models.Model): def save(self, *args, **kwargs): if not self.slug: self.slug = EavSlugField.create_slug_from_name(self.name) - if self.pk and \ - self.datatype != EavAttribute.objects.get(pk=self.pk).datatype: - raise ValidationError(_(u"You cannot change the datatype of an " - u"existing attribute.")) self.full_clean() super(EavAttribute, self).save(*args, **kwargs)