summaryrefslogtreecommitdiffstats
path: root/parsers/people.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/people.py')
-rw-r--r--parsers/people.py36
1 files changed, 31 insertions, 5 deletions
diff --git a/parsers/people.py b/parsers/people.py
index 4bf84a0..eb877f2 100644
--- a/parsers/people.py
+++ b/parsers/people.py
@@ -65,11 +65,27 @@ def LoadPersonsExpos():
for personline in personreader:
name = personline[header["Name"]]
name = re.sub(r"<.*?>", "", name)
- mname = re.match(r"(\w+)(?:\s((?:van |ten )?\w+))?(?:\s\(([^)]*)\))?", name)
- nickname = mname.group(3) or ""
- lookupAttribs={'first_name':mname.group(1), 'last_name':(mname.group(2) or "")}
- nonLookupAttribs={'is_vfho':personline[header["VfHO member"]],}
+ firstname = ""
+ nickname = ""
+
+ rawlastname = personline[header["Lastname"]].strip()
+ matchlastname = re.match(r"^([\w&;\s]+)(?:\(([^)]*)\))?", rawlastname)
+ lastname = matchlastname.group(1).strip()
+
+ splitnick = re.match(r"^([\w&;\s]+)(?:\(([^)]*)\))?", name)
+ fullname = splitnick.group(1)
+
+ nickname = splitnick.group(2) or ""
+
+ fullname = fullname.strip()
+ names = fullname.split(' ')
+ firstname = names[0]
+ if len(names) == 1:
+ lastname = ""
+
+ lookupAttribs={'first_name':firstname, 'last_name':(lastname or "")}
+ nonLookupAttribs={'is_vfho':personline[header["VfHO member"]], 'fullname':fullname}
person, created = save_carefully(models.Person, lookupAttribs, nonLookupAttribs)
parseMugShotAndBlurb(personline=personline, header=header, person=person)
@@ -120,14 +136,24 @@ def GetPersonExpeditionNameLookup(expedition):
possnames = [ ]
f = personexpedition.person.first_name.lower()
l = personexpedition.person.last_name.lower()
+ full = personexpedition.person.fullname.lower()
if l:
possnames.append(f + " " + l)
possnames.append(f + " " + l[0])
possnames.append(f + l[0])
possnames.append(f[0] + " " + l)
possnames.append(f)
- if personexpedition.nickname:
+ if full not in possnames:
+ possnames.append(full)
+ if personexpedition.nickname not in possnames:
possnames.append(personexpedition.nickname.lower())
+ if l:
+ # This allows for nickname to be used for short name eg Phil
+ # adding Phil Sargent to the list
+ if str(personexpedition.nickname.lower() + " " + l) not in possnames:
+ possnames.append(personexpedition.nickname.lower() + " " + l)
+ if str(personexpedition.nickname.lower() + " " + l[0]) not in possnames:
+ possnames.append(personexpedition.nickname.lower() + " " + l[0])
for possname in possnames:
if possname in res: