From 0ba4dd4ef47eeeb8ef38b4c30b6d39649c56342a Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Wed, 13 May 2009 05:39:52 +0100 Subject: [svn] survey block object Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8199 by julian @ 1/19/2009 12:22 AM --- parsers/people.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'parsers/people.py') diff --git a/parsers/people.py b/parsers/people.py index c59d3d8..93d8a0e 100644 --- a/parsers/people.py +++ b/parsers/people.py @@ -120,3 +120,40 @@ def LoadPersonsExpos(): pyo = models.PersonExpedition(person = pObject, expedition = yo, nickname="", is_guest=is_guest) pyo.save() +# expedition name lookup cached for speed (it's a very big list) +Gpersonexpeditionnamelookup = { } +def GetPersonExpeditionNameLookup(expedition): + global Gpersonexpeditionnamelookup + res = Gpersonexpeditionnamelookup.get(expedition.name) + if res: + return res + + res = {} + duplicates = set() + + personexpeditions = models.PersonExpedition.objects.filter(expedition=expedition) + for personexpedition in personexpeditions: + possnames = [ ] + f = personexpedition.person.first_name.lower() + l = personexpedition.person.last_name.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: + possnames.append(personexpedition.nickname.lower()) + + for possname in possnames: + if possname in res: + duplicates.add(possname) + else: + res[possname] = personexpedition + + for possname in duplicates: + del res[possname] + + Gpersonexpeditionnamelookup[expedition.name] = res + return res + -- cgit v1.2.3