diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-01-25 22:28:32 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-01-25 22:28:32 +0100 |
commit | 5b1a9485d11ba80a2205f5235c5089146816c43a (patch) | |
tree | 4c269cf989e197f3d3313eaa33daa3a5ad8149a3 /ishtar_common/models.py | |
parent | aff65107f19f34a379c6519a8e5d1303b0eed89c (diff) | |
parent | 097c76b3e8c658c3798b922864ee2c6ba0606636 (diff) | |
download | Ishtar-5b1a9485d11ba80a2205f5235c5089146816c43a.tar.bz2 Ishtar-5b1a9485d11ba80a2205f5235c5089146816c43a.zip |
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 19 |
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 |