summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
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
commit952bf485126d9f0e3c2357288a31c10d99c9966f (patch)
tree164ba8b9ae802c89bfecdd2d3f102a291d4dba0a /ishtar_common/models.py
parentc170779b752fbcf94d962be7a33a9f200d4f8ca9 (diff)
downloadIshtar-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.py19
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")