summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit87d8129d6259722d2e3b159390f0ab8876b1e1ce (patch)
tree5a2c1eeb4abbd069023c5122d5dd06a027a6082e /ishtar_common
parentf468cb6bc7bde671b78c076daaf73a92a8f33a69 (diff)
downloadIshtar-87d8129d6259722d2e3b159390f0ab8876b1e1ce.tar.bz2
Ishtar-87d8129d6259722d2e3b159390f0ab8876b1e1ce.zip
GeneralType keys: fix management of changed label
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py30
-rw-r--r--ishtar_common/tests.py1
2 files changed, 11 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)
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index b22d27169..06d0ca3ec 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -123,6 +123,7 @@ class ImportKeyTest(TestCase):
# modification
label_3 = "Yop"
ot_2.label = label_3
+ ot_2.txt_idx = slugify(label_3)
ot_2.save()
# old label not referenced anymore
self.assertEqual(models.ItemKey.objects.filter(object_id=ot_2.pk,