summaryrefslogtreecommitdiffstats
path: root/parsers/people.py
diff options
context:
space:
mode:
authorsubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 05:39:52 +0100
committersubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 05:39:52 +0100
commit0ba4dd4ef47eeeb8ef38b4c30b6d39649c56342a (patch)
tree7a806015bda042e5d13d55e6d52a37924fb4e11e /parsers/people.py
parent39ab4d25147a8e115fc4f6f05c8246dbe51c3ca0 (diff)
downloadtroggle-0ba4dd4ef47eeeb8ef38b4c30b6d39649c56342a.tar.gz
troggle-0ba4dd4ef47eeeb8ef38b4c30b6d39649c56342a.tar.bz2
troggle-0ba4dd4ef47eeeb8ef38b4c30b6d39649c56342a.zip
[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
Diffstat (limited to 'parsers/people.py')
-rw-r--r--parsers/people.py37
1 files changed, 37 insertions, 0 deletions
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
+