summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 7491f5704..c900e028e 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1110,12 +1110,12 @@ class Address(BaseHistorizedItem):
class Merge(models.Model):
- merge_key = models.CharField(_("Merge key"), max_length=300,
- blank=True, null=True)
+ merge_key = models.TextField(_("Merge key"), blank=True, null=True)
merge_candidate = models.ManyToManyField("self",
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 = '--'
@@ -1124,12 +1124,16 @@ class Merge(models.Model):
abstract = True
def generate_merge_key(self):
- self.merge_key = slugify(self.name if self.name else '')[:300]
+ 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[:300]
+ 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()
@@ -1138,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:
@@ -1917,7 +1922,8 @@ class Organization(Address, Merge, OwnPerms, ValueGetter):
self.merge_key = self.EMPTY_MERGE_KEY
if self.town:
self.merge_key += "-" + slugify(self.town or '')
- self.merge_key = self.merge_key[:300]
+ if self.address:
+ self.merge_key += "-" + slugify(self.address or '')
@property
def associated_filename(self):
@@ -2023,7 +2029,6 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
self.merge_key = self.EMPTY_MERGE_KEY
if self.merge_key != self.EMPTY_MERGE_KEY and self.attached_to:
self.merge_key += "-" + self.attached_to.merge_key
- self.merge_key = self.merge_key[:300]
def is_natural(self):
return not self.attached_to