summaryrefslogtreecommitdiffstats
path: root/parsers/people.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/people.py')
-rw-r--r--parsers/people.py117
1 files changed, 70 insertions, 47 deletions
diff --git a/parsers/people.py b/parsers/people.py
index 12fba14..a58167e 100644
--- a/parsers/people.py
+++ b/parsers/people.py
@@ -126,11 +126,6 @@ def load_people_expos():
save_carefully(PersonExpedition, lookupAttribs, nonLookupAttribs)
print("", flush=True)
-
-# used in other referencing parser functions
-# expedition name lookup cached for speed (it's a very big list)
-# should have a LIST of nicknames, just populate the first entry from folk.csv
-
def who_is_this(year,possibleid):
expo = Expedition.objects.filter(year=year)
personexpedition = GetPersonExpeditionNameLookup(expo)[possibleid.lower()]
@@ -145,7 +140,23 @@ def who_is_this(year,possibleid):
Gpersonexpeditionnamelookup = { }
def GetPersonExpeditionNameLookup(expedition):
global Gpersonexpeditionnamelookup
+
+ def apply_variations(f, l):
+ f = f.lower()
+ l = l.lower()
+ variations = []
+ variations.append(f)
+ variations.append(l)
+ variations.append(f + " " + l)
+ variations.append(f + " " + l[0])
+ variations.append(f + l[0])
+ variations.append(f[0] + " " + l)
+ variations.append(f[0] + l)
+ variations.append(f[0] + l[0]) # initials e.g. gb or bl
+ return variations
+
res = Gpersonexpeditionnamelookup.get(expedition.name)
+
if res:
return res
@@ -161,47 +172,62 @@ def GetPersonExpeditionNameLookup(expedition):
f = unidecode(unescape(personexpedition.person.first_name.lower()))
l = unidecode(unescape(personexpedition.person.last_name.lower()))
full = unidecode(unescape(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[0] + l[0]) # initials e.g. gb or bl
- possnames.append(f)
-
- # But these aliases do not take advantage of the variations above
- if f'{f} {l}' == "Phil Underwood":
- possnames.append("Phil Underpants")
- if f'{f} {l}' == "Naomi Griffiths":
- possnames.append("Naomi Makin")
- if f'{f} {l}' == "Cat Hulse":
- possnames.append("Catherine Hulse")
- possnames.append("Cat Henry")
- if f'{f} {l}' == "Jess Stirrups":
- possnames.append("Jessica Stirrups")
- if f'{f} {l}' == "Nat Dalton":
- possnames.append("Nathaniel Dalton")
-
- lim = min(4, len(f)+1) # short form, e.g. Dan for Daniel. May be duplicate, e.g. several Dave
- if f[:lim] not in short:
- short[f[:lim]]= personexpedition
- else:
- dellist.append(f[:lim])
+ n = unidecode(unescape(personexpedition.nickname.lower()))
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 S is adding Phil Sargent to the list
- n = personexpedition.nickname.lower()
- if str(n + " " + l) not in possnames:
- possnames.append(n + " " + l)
- if str(n + " " + l[0]) not in possnames:
- possnames.append(n + " " + l[0])
- if str(n + l[0]) not in possnames:
- possnames.append(n + l[0])
+ if n not in possnames:
+ possnames.append(n)
+ if l:
+ possnames += apply_variations(f,l)
+
+ if n:
+ possnames += apply_variations(n, l)
+ if f == "Robert".lower():
+ possnames += apply_variations("Bob", l)
+ if f == "Andrew".lower():
+ possnames += apply_variations("Andy", l)
+ if f == "Andy".lower():
+ possnames += apply_variations("Andrew", l)
+ if f == "Michael".lower():
+ possnames += apply_variations("Mike", l)
+ if f == "David".lower():
+ possnames += apply_variations("Dave", l)
+ if f == "Peter".lower():
+ possnames += apply_variations("Pete", l)
+
+ if f == "Becka".lower():
+ possnames += apply_variations("Rebecca", l)
+
+ if f'{f} {l}' == "Andy Waddington".lower():
+ possnames += apply_variations("AER", "Waddington")
+ if f'{f} {l}' == "Phil Underwood".lower():
+ possnames += apply_variations("Phil", "Underpants")
+ if f'{f} {l}' == "Naomi Griffiths".lower():
+ possnames += apply_variations("Naomi", "Makin")
+ if f'{f} {l}' == "Cat Hulse".lower():
+ possnames += apply_variations("Catherine", "Hulse")
+ possnames += apply_variations("Cat", "Henry")
+ if f'{f} {l}' == "Jess Stirrups".lower():
+ possnames += apply_variations("Jessica", "Stirrups")
+ if f'{f} {l}' == "Nat Dalton".lower():
+ possnames += apply_variations("Nathaniel", "Dalton")
+ if f'{f} {l}' == "Mike Richardson".lower():
+ possnames.append("MTA")
+ possnames.append("Mike the Animal")
+ possnames.append("Animal")
+ if f'{f} {l}' == "Eric Landgraf".lower():
+ possnames.append("Eric C.Landgraf")
+ possnames.append("Eric C. Landgraf")
+
+ for i in [4, 5, 6]:
+ lim = min(i, len(f)+1) # short form, e.g. Dan for Daniel.
+ if f[:lim] not in short:
+ short[f[:lim]]= personexpedition
+ else:
+ dellist.append(f[:lim])
+
+ possnames = set(possnames) # remove duplicates
for possname in possnames:
if possname in res:
duplicates.add(possname)
@@ -216,11 +242,8 @@ def GetPersonExpeditionNameLookup(expedition):
del short[possname]
for shortname in short:
res[shortname] = short[shortname]
+
- print(f'{expedition.name}', end= ' ')
- for n in res:
- print(f'{n},', end= ' ')
- print('')
Gpersonexpeditionnamelookup[expedition.name] = res
return res