X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/21abe382ad825e1383dfb1299efc1201ddd1e1c0..946f2dc5728e293dd7fc55bac7a8cf8d3dcc5722:/philo/models/base.py diff --git a/philo/models/base.py b/philo/models/base.py index 0218261..f9c22f9 100644 --- a/philo/models/base.py +++ b/philo/models/base.py @@ -1,7 +1,7 @@ from django import forms from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic -from django.core.exceptions import ObjectDoesNotExist +from django.core.exceptions import ValidationError from django.core.validators import RegexValidator from django.db import models from django.utils import simplejson as json @@ -522,6 +522,15 @@ class SlugTreeEntity(TreeEntity): return super(SlugTreeEntity, self).get_path(root, pathsep, field) path = property(get_path) + def clean(self): + if self.parent is None: + try: + self._default_manager.exclude(pk=self.pk).get(slug=self.slug, parent__isnull=True) + except self.DoesNotExist: + pass + else: + raise ValidationError(self.unique_error_message(self.__class__, ('parent', 'slug'))) + class Meta: unique_together = ('parent', 'slug') abstract = True \ No newline at end of file