diff options
Diffstat (limited to 'parsers')
-rw-r--r-- | parsers/logbooks.py | 8 | ||||
-rw-r--r-- | parsers/people.py | 94 |
2 files changed, 51 insertions, 51 deletions
diff --git a/parsers/logbooks.py b/parsers/logbooks.py index 3bad8c4..8138953 100644 --- a/parsers/logbooks.py +++ b/parsers/logbooks.py @@ -12,6 +12,11 @@ import datetime import os
+#
+# When we edit logbook entries, allow a "?" after any piece of data to say we've frigged it and
+# it can be checked up later from the hard-copy if necessary; or it's not possible to determin (name, trip place, etc)
+#
+
#
# the logbook loading section
#
@@ -72,7 +77,7 @@ def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, logtime_ lplace = place.lower()
if lplace not in noncaveplaces:
lbo.cave=GetCaveLookup().get(lplace)
- print "pppp %s |%s|" % (lplace, str(lbo.cave))
+ #print "pppp %s |%s|" % (lplace, str(lbo.cave))
lbo.save()
#print "ttt", date, place
@@ -289,6 +294,7 @@ def SetDatesFromLogbookEntries(expedition): def LoadLogbookForExpedition(expedition):
+ print "deleting logbooks for", expedition
expedition.logbookentry_set.all().delete()
models.PersonTrip.objects.filter(person_expedition__expedition=expedition).delete()
expowebbase = os.path.join(settings.EXPOWEB, "years")
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 = [ ] |