diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-06 11:59:49 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-06 11:59:49 +0200 |
commit | 36ba076c4f622a2a1446627a165fff6d1fc94094 (patch) | |
tree | 6ebe2c30763a4dd72396f395719e9e830463633b /ishtar_common/models.py | |
parent | 0d654b36a5870882ae5971396b89456c34fff959 (diff) | |
download | Ishtar-36ba076c4f622a2a1446627a165fff6d1fc94094.tar.bz2 Ishtar-36ba076c4f622a2a1446627a165fff6d1fc94094.zip |
Prevent circular save (refs #2981)
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 087e772e7..eda26cd97 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1448,7 +1448,7 @@ class Merge(models.Model): return if not self.merge_key: self.generate_merge_key() - self.save() + self.save(merge_key_generated=True) if not self.pk or self.merge_key == self.EMPTY_MERGE_KEY: return q = self.__class__.objects\ @@ -1469,9 +1469,14 @@ class Merge(models.Model): self.merge_candidate.add(item) def save(self, *args, **kwargs): + # prevent circular save + merge_key_generated = False + if 'merge_key_generated' in kwargs: + merge_key_generated = kwargs.pop('merge_key_generated') self.generate_merge_key() item = super(Merge, self).save(*args, **kwargs) - self.generate_merge_candidate() + if not merge_key_generated: + self.generate_merge_candidate() return item def archive(self): |