diff --git a/troggle/databaseReset.py b/troggle/databaseReset.py index 212c59015..e58f3fc3c 100644 --- a/troggle/databaseReset.py +++ b/troggle/databaseReset.py @@ -17,7 +17,7 @@ user.is_staff = True user.is_superuser = True user.save() -import parsers.logbooks import parsers.cavetab +import parsers.logbooks import parsers.QMs import parsers.survex diff --git a/troggle/expo/models.py b/troggle/expo/models.py index 324d478ce..1723f4aba 100644 --- a/troggle/expo/models.py +++ b/troggle/expo/models.py @@ -162,7 +162,7 @@ class LogbookEntry(models.Model): place = models.CharField(max_length=100,blank=True,null=True) text = models.TextField() class Meta: - verbose_name_plural = "LogbookEntries" + verbose_name_plural = "Logbook Entries" # several PersonTrips point in to this object def __unicode__(self): diff --git a/troggle/media/css/main2.css b/troggle/media/css/main2.css index b0810c64e..6ac3a3ece 100644 --- a/troggle/media/css/main2.css +++ b/troggle/media/css/main2.css @@ -9,7 +9,17 @@ body, td, center, ul, p, input { body { background-color: #000; } - +#expoHeader { + position: relative; + display: inline; + top:60px; +} +#expoFinalDate { + display: inline; +} +h1 { + display: inline; +} a:link, a:visited { text-decoration: none; } div.centre img { vertical-align: middle; } diff --git a/troggle/parsers/logbooks.py b/troggle/parsers/logbooks.py index 75caeaf79..82ad29b22 100644 --- a/troggle/parsers/logbooks.py +++ b/troggle/parsers/logbooks.py @@ -1,11 +1,16 @@ #.-*- coding: utf-8 -*- - -import settings -import expo.models as models +import sys +import os +sys.path.append('C:\\Expo\\expoweb') +from troggle import * +os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings' +import troggle.settings as settings +import troggle.expo.models as models import csv import re -import os import datetime +from django.db.models import Q + persontab = open(os.path.join(settings.EXPOWEB, "noinfo", "folk.csv")) personreader = csv.reader(persontab) @@ -39,43 +44,18 @@ def LoadPersons(): firstname, lastname = mname.group(1), mname.group(2) or "" - #print firstname, lastname, "NNN", nickname + 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() - - #create mugshot Photo instance - mugShotPath = 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('<body>.*<hr',personPageOld,re.DOTALL).group() #this needs to be refined, take care of the HTML and make sure it doesn't match beyond the blurb - for photoFilename in re.findall('i/.*?jpg',personPageOld,re.DOTALL): - mugShotPath=settings.EXPOWEB+"folk/"+photoFilename - mugShotObj = models.Photo( - caption="Mugshot for "+firstname+" "+lastname, - is_mugshot=True, - file=mugShotPath, - ) - mugShotObj.save() - mugShotObj.contains_person.add(pObject) - mugShotObj.save() - 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": @@ -89,18 +69,14 @@ def LoadPersons(): pyo.save() - if name in expoers2008: - print "2008:", name - expomissing.discard(name) - yo = models.Expedition.objects.filter(year = "2008")[0] - pyo = models.PersonExpedition(person = pObject, expedition = yo, is_guest=is_guest) - pyo.save() + # this fills in those peopl 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, @@ -110,6 +86,41 @@ def LoadPersons(): pyo = models.PersonExpedition(person = pObject, expedition = yo, nickname="", is_guest=is_guest) pyo.save() +# 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 = 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('<body>.*<hr',personPageOld,re.DOTALL).group() #this needs to be refined, take care of the HTML and make sure it doesn't match beyond the blurb + for photoFilename in re.findall('i/.*?jpg',personPageOld,re.DOTALL): + mugShotPath=settings.EXPOWEB+"folk/"+photoFilename + mugShotObj = models.Photo( + caption="Mugshot for "+firstname+" "+lastname, + is_mugshot=True, + file=mugShotPath, + ) + mugShotObj.save() + mugShotObj.contains_person.add(pObject) + mugShotObj.save() + pObject.save() # # the logbook loading section @@ -134,9 +145,40 @@ def GetTripPersons(trippeople, expedition): author = res[-1] return res, author +def GetTripCave(place): #need to be fuzzier about matching here. Already a very slow function... +# print "Getting cave for " , place + try: + katastNumRes=[] + katastNumRes=list(models.Cave.objects.filter(kataster_number=int(place))) + except ValueError: + pass + officialNameRes=list(models.Cave.objects.filter(official_name=place)) + tripCaveRes=officialNameRes+katastNumRes + + if len(tripCaveRes)==1: +# print "Place " , place , "entered as" , tripCaveRes[0] + return tripCaveRes[0] + + elif models.OtherCaveName.objects.filter(name=place): + tripCaveRes=models.OtherCaveName.objects.filter(name__icontains=place)[0].cave +# print "Place " , place , "entered as" , tripCaveRes + return tripCaveRes + + elif len(tripCaveRes)>1: + print "Ambiguous place " + str(place) + " entered. Choose from " + str(tripCaveRes) + correctIndex=input("type list index of correct cave") + return tripCaveRes[correctIndex] + else: + print "No cave found for place " , place + return + def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, tu): trippersons, author = GetTripPersons(trippeople, expedition) + tripCave = GetTripCave(place) + lbo = models.LogbookEntry(date=date, place=place, title=title[:50], text=text, author=author) + if tripCave: + lbo.cave=tripCave lbo.save() print "ttt", date, place for tripperson in trippersons: @@ -281,8 +323,8 @@ def LoadLogbooks(): models.LogbookEntry.objects.all().delete() expowebbase = os.path.join(settings.EXPOWEB, "years") yearlinks = [ - ("2008", "2008/logbook/2008logbook.txt", Parselogwikitxt), - ("2007", "2007/logbook/2007logbook.txt", Parselogwikitxt), + ("2008", "2008/2008logbook.txt", Parselogwikitxt), + ("2007", "2007/2007logbook.txt", Parselogwikitxt), ("2006", "2006/logbook/logbook_06.txt", Parselogwikitxt), ("2005", "2005/logbook.html", Parseloghtmltxt), ("2004", "2004/logbook.html", Parseloghtmltxt),