diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-01-25 22:26:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-01-25 22:26:43 +0100 |
commit | 097c76b3e8c658c3798b922864ee2c6ba0606636 (patch) | |
tree | bbb74ffb1d74b7ffde348444955156a24f723a20 /ishtar_common/models.py | |
parent | cf6f304ef9c93413f57f93754eb0247e9454a01c (diff) | |
download | Ishtar-097c76b3e8c658c3798b922864ee2c6ba0606636.tar.bz2 Ishtar-097c76b3e8c658c3798b922864ee2c6ba0606636.zip |
Merge: allow to exclude some items from merging process
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 943995e0b..c900e028e 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1115,6 +1115,7 @@ class Merge(models.Model): blank=True, null=True) merge_exclusion = models.ManyToManyField("self", blank=True, null=True) + exclude_from_merge = models.BooleanField(default=False) # 1 for one word similarity, 2 for two word similarity, etc. MERGE_CLEMENCY = None EMPTY_MERGE_KEY = '--' @@ -1123,12 +1124,16 @@ class Merge(models.Model): abstract = True def generate_merge_key(self): + if self.exclude_from_merge: + return self.merge_key = slugify(self.name if self.name else '') if not self.merge_key: self.merge_key = self.EMPTY_MERGE_KEY self.merge_key = self.merge_key def generate_merge_candidate(self): + if self.exclude_from_merge: + return if not self.merge_key: self.generate_merge_key() self.save() @@ -1137,7 +1142,8 @@ class Merge(models.Model): q = self.__class__.objects\ .exclude(pk=self.pk)\ .exclude(merge_exclusion=self)\ - .exclude(merge_candidate=self) + .exclude(merge_candidate=self)\ + .exclude(exclude_from_merge=True) if not self.MERGE_CLEMENCY: q = q.filter(merge_key=self.merge_key) else: |