From f229ff35f909d7afea62ba2e1021a12cb0e16b22 Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Wed, 13 May 2009 05:35:59 +0100 Subject: [svn] Julian playing with the logbooks and expoyears Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8180 by julian @ 1/18/2009 3:59 PM --- parsers/people.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 parsers/people.py (limited to 'parsers/people.py') diff --git a/parsers/people.py b/parsers/people.py new file mode 100644 index 0000000..c0e512b --- /dev/null +++ b/parsers/people.py @@ -0,0 +1,119 @@ +#.-*- coding: utf-8 -*- + +import settings +import expo.models as models +import csv +import re +import datetime +import os + +# Julian: the below code was causing errors and it seems like a duplication of the above. Hope I haven't broken anything by commenting it. -Aaron +# +# if name in expoers2008: +# print "2008:", name +# expomissing.discard(name) # I got an error which I think was caused by this -- python complained that a set changed size during iteration. +# yo = models.Expedition.objects.filter(year = "2008")[0] +# pyo = models.PersonExpedition(person = pObject, expedition = yo, is_guest=is_guest) +# pyo.save() + +def parseMugShotAndBlurb(firstname, lastname, person, header, pObject): + #create mugshot Photo instance + mugShotPath = os.path.join(settings.EXPOWEB, "folk", person[header["Mugshot"]]) + if mugShotPath[-3:]=='jpg': #if person just has an image, add it + mugShotObj = models.Photo( + caption="Mugshot for "+firstname+" "+lastname, + is_mugshot=True, + file=mugShotPath, + ) + mugShotObj.save() + mugShotObj.contains_person.add(pObject) + mugShotObj.save() + elif mugShotPath[-3:]=='htm': #if person has an html page, find the image(s) and add it. Also, add the text from the html page to the "blurb" field in his model instance. + personPageOld=open(mugShotPath,'r').read() + pObject.blurb=re.search('.*", "", 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 + + pObject = models.Person(first_name = firstname, + last_name = lastname, + 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() + parseMugShotAndBlurb(firstname, lastname, person, header, pObject) + + for year, attended in zip(headers, person)[5:]: + yo = models.Expedition.objects.filter(year = year)[0] + 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() + + + # this fills in those people for whom 2008 was their first expo + for name in expomissing: + firstname, lastname = name.split() + is_guest = name in ["Eeva Makiranta", "Keith Curtis"] + print "2008:", name + pObject = models.Person(first_name = firstname, + last_name = lastname, + is_vfho = False, + mug_shot = "") + pObject.save() + yo = models.Expedition.objects.filter(year = "2008")[0] + pyo = models.PersonExpedition(person = pObject, expedition = yo, nickname="", is_guest=is_guest) + pyo.save() + -- cgit v1.2.3