diff options
| author | Étienne Loks <etienne.loks@proxience.com> | 2015-01-26 12:35:29 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@proxience.com> | 2015-01-26 12:35:29 +0100 | 
| commit | 87d8129d6259722d2e3b159390f0ab8876b1e1ce (patch) | |
| tree | 5a2c1eeb4abbd069023c5122d5dd06a027a6082e /ishtar_common/models.py | |
| parent | f468cb6bc7bde671b78c076daaf73a92a8f33a69 (diff) | |
| download | Ishtar-87d8129d6259722d2e3b159390f0ab8876b1e1ce.tar.bz2 Ishtar-87d8129d6259722d2e3b159390f0ab8876b1e1ce.zip | |
GeneralType keys: fix management of changed label
Diffstat (limited to 'ishtar_common/models.py')
| -rw-r--r-- | ishtar_common/models.py | 30 | 
1 files changed, 10 insertions, 20 deletions
| diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 75d2ea544..e7e188911 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -35,8 +35,7 @@ from django.core.validators import validate_slug  from django.core.urlresolvers import reverse, NoReverseMatch  from django.db.utils import DatabaseError  from django.db.models import Q, Max, Count -from django.db.models.signals import post_save, pre_save -from django.dispatch import receiver +from django.db.models.signals import post_save  from django.utils.translation import ugettext_lazy as _, ugettext  from django.utils.safestring import SafeUnicode, mark_safe  from django.template.defaultfilters import slugify @@ -354,18 +353,19 @@ class GeneralType(models.Model):              self.txt_idx = slugify(self.label)          # clean old keys -        pre_label = getattr(self, 'pre_label', None) -        pre_txt_idx = getattr(self, 'pre_txt_idx', None) -        content_type = ContentType.objects.get_for_model(self.__class__) -        if pre_label and self.label != pre_label: -            ItemKey.objects.filter(object_id=self.pk, key=slugify(pre_label), +        if self.pk: +            old = self.__class__.objects.get(pk=self.pk) +            content_type = ContentType.objects.get_for_model(self.__class__) +            if slugify(self.label) != slugify(old.label): +                ItemKey.objects.filter(object_id=self.pk, key=slugify(old.label),                                     content_type=content_type).delete() -        if pre_txt_idx and self.txt_idx != pre_txt_idx: -            ItemKey.objects.filter(object_id=self.pk, key=pre_txt_idx, +            if self.txt_idx != old.txt_idx: +                ItemKey.objects.filter(object_id=self.pk, key=old.txt_idx,                                     content_type=content_type).delete() +        obj = super(GeneralType, self).save(*args, **kwargs)          self.generate_key(force=True) -        return super(GeneralType, self).save(*args, **kwargs) +        return obj      def add_key(self, key, force=False):          content_type = ContentType.objects.get_for_model(self.__class__) @@ -396,16 +396,6 @@ class GeneralType(models.Model):          for item in cls.objects.all():              item.generate_key() -@receiver(pre_save) -def pre_save_general_type(sender, **kwargs): -    if not issubclass(sender, GeneralType) or not 'instance' in kwargs \ -      or not kwargs['instance']: -       return -    instance = kwargs['instance'] -    instance.pre_label = instance.label -    instance.pre_txt_idx = instance.txt_idx - -  class ItemKey(models.Model):      key = models.CharField(_(u"Key"), max_length=100)      content_type = models.ForeignKey(ContentType) | 
