summaryrefslogtreecommitdiffstats
path: root/parsers/people.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/people.py')
-rw-r--r--parsers/people.py94
1 files changed, 44 insertions, 50 deletions
diff --git a/parsers/people.py b/parsers/people.py
index 4a2ea11..2fda46e 100644
--- a/parsers/people.py
+++ b/parsers/people.py
@@ -52,81 +52,74 @@ def LoadPersonsExpos():
headers = personreader.next()
header = dict(zip(headers, range(len(headers))))
+ # make expeditions
+ print "Loading expeditions"
models.Expedition.objects.all().delete()
years = headers[5:]
years.append("2008")
for year in years:
- y = models.Expedition(year = year, name = "CUCC expo%s" % year)
- y.save()
- print "lll", years
+ expedition = models.Expedition(year = year, name = "CUCC expo%s" % year)
+ expedition.save()
+ # make persons
+ print "Loading personexpeditions"
models.Person.objects.all().delete()
models.PersonExpedition.objects.all().delete()
expoers2008 = """Edvin Deadman,Kathryn Hopkins,Djuke Veldhuis,Becka Lawson,Julian Todd,Natalie Uomini,Aaron Curtis,Tony Rooke,Ollie Stevens,Frank Tully,Martin Jahnke,Mark Shinwell,Jess Stirrups,Nial Peters,Serena Povia,Olly Madge,Steve Jones,Pete Harley,Eeva Makiranta,Keith Curtis""".split(",")
expomissing = set(expoers2008)
- for person in personreader:
- name = person[header["Name"]]
+ for personline in personreader:
+ name = personline[header["Name"]]
name = re.sub("<.*?>", "", name)
mname = re.match("(\w+)(?:\s((?:van |ten )?\w+))?(?:\s\(([^)]*)\))?", name)
-
- if mname.group(3):
- nickname = mname.group(3)
- else:
- nickname = ""
-
- firstname, lastname = mname.group(1), mname.group(2) or ""
-
- print firstname, lastname, "NNN", nickname
- #assert lastname == person[header[""]], person
-
- href = firstname.lower()
- if lastname:
- href += "_" + lastname.lower()
- pObject = models.Person(first_name = firstname,
- last_name = lastname, href=href,
- is_vfho = person[header["VfHO member"]],
- )
-
- is_guest = person[header["Guest"]] == "1" # this is really a per-expo catagory; not a permanent state
- pObject.save()
+ nickname = mname.group(3) or ""
+
+ person = models.Person(first_name=mname.group(1), last_name=(mname.group(2) or ""))
+ person.is_vfho = personline[header["VfHO member"]]
+ person.Sethref()
+ #print "NNNN", person.href
+ is_guest = (personline[header["Guest"]] == "1") # this is really a per-expo catagory; not a permanent state
+ person.save()
#parseMugShotAndBlurb(firstname, lastname, person, header, pObject)
- for year, attended in zip(headers, person)[5:]:
- yo = models.Expedition.objects.filter(year = year)[0]
+ # make person expedition from table
+ for year, attended in zip(headers, personline)[5:]:
+ expedition = models.Expedition.objects.get(year=year)
if attended == "1" or attended == "-1":
- pyo = models.PersonExpedition(person = pObject, expedition = yo, nickname=nickname, is_guest=is_guest)
- pyo.save()
-
- # error
- elif (firstname, lastname) == ("Mike", "Richardson") and year == "2001":
- print "Mike Richardson(2001) error"
- pyo = models.PersonExpedition(person = pObject, expedition = yo, nickname=nickname, is_guest=is_guest)
- pyo.save()
+ personexpedition = models.PersonExpedition(person=person, expedition=expedition, nickname=nickname, is_guest=is_guest)
+ personexpedition.save()
# this fills in those people for whom 2008 was their first expo
+ print "Loading personexpeditions 2008"
for name in expomissing:
firstname, lastname = name.split()
is_guest = name in ["Eeva Makiranta", "Keith Curtis"]
print "2008:", name
persons = list(models.Person.objects.filter(first_name=firstname, last_name=lastname))
if not persons:
- pObject = models.Person(first_name = firstname,
- last_name = lastname,
- is_vfho = False,
- mug_shot = "")
- pObject.href = firstname.lower()
- if lastname:
- pObject.href += "_" + lastname.lower()
- pObject.save()
+ person = models.Person(first_name=firstname, last_name = lastname, is_vfho = False, mug_shot = "")
+ person.Sethref()
+ person.save()
else:
- pObject = persons[0]
- yo = models.Expedition.objects.filter(year = "2008")[0]
- pyo = models.PersonExpedition(person = pObject, expedition = yo, nickname="", is_guest=is_guest)
- pyo.save()
-
+ person = persons[0]
+ expedition = models.Expedition.objects.get(year="2008")
+ personexpedition = models.PersonExpedition(person=person, expedition=expedition, nickname="", is_guest=is_guest)
+ personexpedition.save()
+
+ # could rank according to surveying as well
+ print "Setting person notability"
+ for person in models.Person.objects.all():
+ person.notability = 0.0
+ for personexpedition in person.personexpedition_set.all():
+ if not personexpedition.is_guest:
+ person.notability += 1.0 / (2012 - int(personexpedition.expedition.year))
+ person.bisnotable = person.notability > 0.3 # I don't know how to filter by this
+ person.save()
+
+
+# used in other referencing parser functions
# expedition name lookup cached for speed (it's a very big list)
Gpersonexpeditionnamelookup = { }
def GetPersonExpeditionNameLookup(expedition):
@@ -135,9 +128,10 @@ def GetPersonExpeditionNameLookup(expedition):
if res:
return res
- res = {}
+ res = { }
duplicates = set()
+ print "Calculating GetPersonExpeditionNameLookup for", expedition.year
personexpeditions = models.PersonExpedition.objects.filter(expedition=expedition)
for personexpedition in personexpeditions:
possnames = [ ]