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.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index af63cb7c1..1aaa44b59 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -2619,6 +2619,8 @@ 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)
+ cached_label = models.TextField(_(u"Cached name"), null=True, blank=True,
+ db_index=True)
history = HistoricalRecords()
class Meta:
@@ -2661,16 +2663,19 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
return u" ".join(values)
def __unicode__(self):
- values = [unicode(getattr(self, attr)) for attr in ('surname', 'name')
- if getattr(self, attr)]
- if not values and self.raw_name:
- values = [self.raw_name]
+ if self.cached_label:
+ return self.cached_label
+ self.save()
+ return self.cached_label
+
+ def _generate_cached_label(self):
+ lbl = get_external_id('person_raw_name', self)
+ if not lbl:
+ return u"-"
if self.attached_to:
attached_to = unicode(self.attached_to)
- if values:
- values.append(u'-')
- values.append(attached_to)
- return u" ".join(values)
+ lbl += u" ({})".format(attached_to)
+ return lbl
def fancy_str(self):
values = ["<strong>"]
@@ -2829,6 +2834,9 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
=user.ishtaruser)
+post_save.connect(cached_label_changed, sender=Person)
+
+
class ProfileType(GeneralType):
groups = models.ManyToManyField(Group, verbose_name=_(u"Groups"),
blank=True)