diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-01 16:24:09 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-01 16:24:09 +0200 |
commit | 952bf485126d9f0e3c2357288a31c10d99c9966f (patch) | |
tree | 164ba8b9ae802c89bfecdd2d3f102a291d4dba0a /ishtar_common/models.py | |
parent | c170779b752fbcf94d962be7a33a9f200d4f8ca9 (diff) | |
download | Ishtar-952bf485126d9f0e3c2357288a31c10d99c9966f.tar.bz2 Ishtar-952bf485126d9f0e3c2357288a31c10d99c9966f.zip |
Archive item to exclude them from merge detection mechanism
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 47f2017f2..e2142ef0c 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1384,8 +1384,8 @@ class Merge(models.Model): blank=True, null=True) merge_exclusion = models.ManyToManyField("self", blank=True, null=True) - exclude_from_merge = models.NullBooleanField(default=False, - blank=True, null=True) + archived = models.NullBooleanField(default=False, + blank=True, null=True) # 1 for one word similarity, 2 for two word similarity, etc. MERGE_CLEMENCY = None EMPTY_MERGE_KEY = '--' @@ -1394,7 +1394,7 @@ class Merge(models.Model): abstract = True def generate_merge_key(self): - if self.exclude_from_merge: + if self.archived: return self.merge_key = slugify(self.name if self.name else '') if not self.merge_key: @@ -1402,7 +1402,7 @@ class Merge(models.Model): self.merge_key = self.merge_key def generate_merge_candidate(self): - if self.exclude_from_merge: + if self.archived: return if not self.merge_key: self.generate_merge_key() @@ -1413,7 +1413,7 @@ class Merge(models.Model): .exclude(pk=self.pk)\ .exclude(merge_exclusion=self)\ .exclude(merge_candidate=self)\ - .exclude(exclude_from_merge=True) + .exclude(archived=True) if not self.MERGE_CLEMENCY: q = q.filter(merge_key=self.merge_key) else: @@ -1432,6 +1432,14 @@ class Merge(models.Model): self.generate_merge_candidate() return item + def archive(self): + self.archived = True + self.save() + for m in self.merge_candidate.all(): + m.delete() + for m in self.merge_exclusion.all(): + m.delete() + def merge(self, item): merge_model_objects(self, item) self.generate_merge_candidate() @@ -2260,6 +2268,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter): attached_to = models.ForeignKey( 'Organization', related_name='members', on_delete=models.SET_NULL, verbose_name=_(u"Is attached to"), blank=True, null=True) + history = HistoricalRecords() class Meta: verbose_name = _(u"Person") |