From e53967a6f6a84948ca678e081f981cea131a07b7 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 25 Jan 2016 22:26:43 +0100 Subject: Merge: allow to exclude some items from merging process --- ishtar_common/models.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'ishtar_common/models.py') 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: -- cgit v1.2.3