summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
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
commit097c76b3e8c658c3798b922864ee2c6ba0606636 (patch)
treebbb74ffb1d74b7ffde348444955156a24f723a20 /ishtar_common/models.py
parentcf6f304ef9c93413f57f93754eb0247e9454a01c (diff)
downloadIshtar-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.py8
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: