Added a method Person.ascii_name() for use when generating 1id-*.txt files. Added caching for Person.plain_name(). Fixes a problem with non-ascii names in 1id-*.txt which lead to non-ascii names in xml2rfc reference files.

- Legacy-Id: 11510
This commit is contained in:
Henrik Levkowetz 2016-07-01 20:08:28 +00:00
parent 8642e8da5e
commit 5acff0e95f
2 changed files with 17 additions and 4 deletions

View file

@ -239,7 +239,7 @@ def active_drafts_index_by_group(extra_values=()):
if d: if d:
if "authors" not in d: if "authors" not in d:
d["authors"] = [] d["authors"] = []
d["authors"].append(unicode(a.author.person)) d["authors"].append(a.author.person.ascii_name())
# put docs into groups # put docs into groups
for d in docs_dict.itervalues(): for d in docs_dict.itervalues():

View file

@ -1,8 +1,9 @@
# Copyright The IETF Trust 2007, All Rights Reserved # Copyright The IETF Trust 2007, All Rights Reserved
import datetime import datetime
from urlparse import urljoin
from hashids import Hashids from hashids import Hashids
from unidecode import unidecode
from urlparse import urljoin
from django.conf import settings from django.conf import settings
@ -44,8 +45,20 @@ class PersonInfo(models.Model):
prefix, first, middle, last, suffix = self.ascii_parts() prefix, first, middle, last, suffix = self.ascii_parts()
return (first and first[0]+"." or "")+(middle or "")+" "+last+(suffix and " "+suffix or "") return (first and first[0]+"." or "")+(middle or "")+" "+last+(suffix and " "+suffix or "")
def plain_name(self): def plain_name(self):
prefix, first, middle, last, suffix = name_parts(self.name) if not hasattr(self, '_cached_plain_name'):
return u" ".join([first, last]) prefix, first, middle, last, suffix = name_parts(self.name)
self._cached_plain_name = u" ".join([first, last])
return self._cached_plain_name
def ascii_name(self):
if not hasattr(self, '_cached_ascii_name'):
if self.ascii:
# It's possibly overkill with unidecode() here, but needed until
# we're validating the content of the ascii field, and have
# verified that the field is ascii clean in the database:
self._cached_ascii_name = unidecode(self.ascii)
else:
self._cached_ascii_name = unidecode(self.plain_name())
return self._cached_ascii_name
def initials(self): def initials(self):
return initials(self.ascii or self.name) return initials(self.ascii or self.name)
def last_name(self): def last_name(self):