Add plain_name() helper to Person with only first name + last name, switch proxies over to using that

- Legacy-Id: 3848
This commit is contained in:
Ole Laursen 2012-01-23 20:20:48 +00:00
parent 9a18341f2a
commit 36a3e99417
9 changed files with 23 additions and 23 deletions

View file

@ -320,7 +320,7 @@ class DocEvent(models.Model):
desc = models.TextField()
def __unicode__(self):
return u"%s %s at %s" % (self.by.name, self.get_type_display().lower(), self.time)
return u"%s %s at %s" % (self.by.plain_name(), self.get_type_display().lower(), self.time)
class Meta:
ordering = ['-time', '-id']

View file

@ -795,11 +795,11 @@ class DocumentComment(DocEvent):
def get_absolute_url(self):
return "/doc/%s/" % self.doc.name
def get_author(self):
return self.by.name
return self.by.plain_name()
def get_username(self):
return unicode(self.by)
def get_fullname(self):
return self.by.name
return self.by.plain_name()
def datetime(self):
return self.time
def doc_id(self):

View file

@ -25,7 +25,7 @@ class GroupAdmin(admin.ModelAdmin):
roles = Role.objects.filter(group=obj).order_by("name", "person__name").select_related('person')
res = []
for r in roles:
res.append(u'<a href="../../person/person/%s/">%s</a> (<a href="../../group/role/%s/">%s)' % (r.person.pk, escape(r.person.name), r.pk, r.name.name))
res.append(u'<a href="../../person/person/%s/">%s</a> (<a href="../../group/role/%s/">%s)' % (r.person.pk, escape(r.person.plain_name()), r.pk, r.name.name))
return ", ".join(res)
role_list.short_description = "Persons"
role_list.allow_tags = True

View file

@ -97,7 +97,7 @@ class GroupEvent(models.Model):
desc = models.TextField()
def __unicode__(self):
return u"%s %s at %s" % (self.by.name, self.get_type_display().lower(), self.time)
return u"%s %s at %s" % (self.by.plain_name(), self.get_type_display().lower(), self.time)
class Meta:
ordering = ['-time', 'id']
@ -111,10 +111,10 @@ class Role(models.Model):
person = models.ForeignKey(Person)
email = models.ForeignKey(Email, help_text="Email address used by person for this role")
def __unicode__(self):
return u"%s is %s in %s" % (self.email.get_name(), self.name.name, self.group.acronym or self.group.name)
return u"%s is %s in %s" % (self.person.plain_name(), self.name.name, self.group.acronym or self.group.name)
def formatted_email(self):
return u'"%s" <%s>' % (self.person.name, self.email.address)
return u'"%s" <%s>' % (self.person.plain_name(), self.email.address)
class RoleHistory(models.Model):
# RoleHistory doesn't have a time field as it's not supposed to be
@ -126,7 +126,7 @@ class RoleHistory(models.Model):
person = models.ForeignKey(Person)
email = models.ForeignKey(Email, help_text="Email address used by person for this role")
def __unicode__(self):
return u"%s is %s in %s" % (self.email.get_name(), self.name.name, self.group.acronym)
return u"%s is %s in %s" % (self.person.plain_name(), self.name.name, self.group.acronym)
class Meta:
verbose_name_plural = "role histories"

View file

@ -300,7 +300,7 @@ def import_from_idinternal(d, idinternal):
e = BallotPositionDocEvent()
e.type = "changed_ballot_position"
e.ad = ad
e.desc = "[Ballot Position Update] New position, Yes, has been recorded by %s" % e.ad.name
e.desc = u"[Ballot Position Update] New position, Yes, has been recorded for %s" % e.ad.plain_name()
e.pos = ballot_position_mapping["Yes"]
e.discuss = last_pos.discuss if last_pos else ""
@ -669,9 +669,9 @@ def import_from_idinternal(d, idinternal):
e.comment = last_pos.comment if last_pos else ""
e.comment_time = last_pos.comment_time if last_pos else None
if last_pos:
e.desc = "[Ballot Position Update] Position for %s has been changed to %s from %s" % (ad.name, pos.name, last_pos.pos.name)
e.desc = u"[Ballot Position Update] Position for %s has been changed to %s from %s" % (ad.plain_name(), pos.name, last_pos.pos.name)
else:
e.desc = "[Ballot Position Update] New position, %s, has been recorded for %s" % (pos.name, ad.name)
e.desc = u"[Ballot Position Update] New position, %s, has been recorded for %s" % (pos.name, ad.plain_name())
e.save()
# make sure we got the ballot issued event

View file

@ -129,7 +129,7 @@ def get_or_create_email(o, create_fake):
Alias.objects.create(name=p.name, person=p)
if p.ascii != p.name:
Alias.objects.create(name=p.ascii, person=p)
e.person = p
e.time = calc_email_import_time(priority)
e.save()

View file

@ -17,7 +17,7 @@ class PersonInfo(models.Model):
affiliation = models.CharField(max_length=255, blank=True)
def __unicode__(self):
return self.name
return self.plain_name()
def name_parts(self):
return name_parts(self.name)
def ascii_parts(self):
@ -28,6 +28,9 @@ class PersonInfo(models.Model):
else:
prefix, first, middle, last, suffix = self.ascii_parts()
return (first and first[0]+"." or "")+(middle or "")+" "+last+(suffix and " "+suffix or "")
def plain_name(self):
prefix, first, middle, last, suffix = name_parts(self.name)
return u" ".join([first, last])
def role_email(self, role_name, group=None):
"""Lookup email for role for person, optionally on group which
may be an object or the group acronym."""
@ -58,8 +61,7 @@ class PersonInfo(models.Model):
return ""
def full_name_as_key(self):
# this is mostly a remnant from the old views, needed in the menu
prefix, first, middle, last, suffix = name_parts(self.name)
return (u"%s %s" % (first, last)).lower().replace(" ", ".")
return self.plain_name().lower().replace(" ", ".")
class Meta:
abstract = True
@ -96,11 +98,11 @@ class Email(models.Model):
return self.address
def get_name(self):
return self.person.name if self.person else self.address
return self.person.plain_name() if self.person else self.address
def formatted_email(self):
if self.person and self.person.name:
return u'"%s" <%s>' % (self.person.name, self.address)
return u'"%s" <%s>' % (self.person.plain_name(), self.address)
else:
return self.address

View file

@ -44,11 +44,9 @@ class IESGLogin(Person):
#default_search = models.NullBooleanField()
def __str__(self):
return self.name
def __unicode__(self):
return self.name
return self.plain_name()
def is_current_ad(self):
return self in Person.objects.filter(role__name="ad", role__group__state="active").distinct()
return bool(self.role_set.filter(name="ad", group__state="active"))
@staticmethod
def active_iesg():
return IESGLogin.objects.filter(role__name="ad", role__group__state="active").distinct().order_by('name')

View file

@ -4,12 +4,12 @@ from django.db.models.query import QuerySet
def proxy_personify_role(role):
"""Turn role into person with email() method using email from role."""
p = role.person
p.email = lambda: (p.name, role.email.address)
p.email = lambda: (p.plain_name(), role.email.address)
return p
def proxy_role_email(e):
"""Add email() method to person on email."""
e.person.email = lambda: (e.person.name, e.address)
e.person.email = lambda: (e.person.plain_name(), e.address)
return e
def chunks(l, n):