diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 24 |
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) |