summaryrefslogtreecommitdiffstats
path: root/parsers/logbooks.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/logbooks.py')
-rw-r--r--parsers/logbooks.py43
1 files changed, 32 insertions, 11 deletions
diff --git a/parsers/logbooks.py b/parsers/logbooks.py
index e2f0ba0..f0ae2fa 100644
--- a/parsers/logbooks.py
+++ b/parsers/logbooks.py
@@ -12,6 +12,7 @@ from django.template.defaultfilters import slugify
from django.utils.timezone import get_current_timezone, make_aware
import troggle.core.models as models
+import troggle.core.models_caves as models_caves
from parsers.people import GetPersonExpeditionNameLookup
from utils import save_carefully
@@ -49,23 +50,24 @@ def GetTripPersons(trippeople, expedition, logtime_underground):
author = res[-1][0]
return res, author
-def GetTripCave(place): #need to be fuzzier about matching here. Already a very slow function...
-# print "Getting cave for " , place
+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)))
+ katastNumRes=list(models_caves.Cave.objects.filter(kataster_number=int(place)))
except ValueError:
pass
- officialNameRes=list(models.Cave.objects.filter(official_name=place))
+ officialNameRes=list(models_caves.Cave.objects.filter(official_name=place))
tripCaveRes=officialNameRes+katastNumRes
if len(tripCaveRes)==1:
-# print "Place " , place , "entered as" , tripCaveRes[0]
+ # 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
+ elif models_caves.OtherCaveName.objects.filter(name=place):
+ tripCaveRes=models_caves.OtherCaveName.objects.filter(name__icontains=place)[0].cave
+ # print "Place " , place , "entered as" , tripCaveRes
return tripCaveRes
elif len(tripCaveRes)>1:
@@ -76,6 +78,25 @@ def GetTripCave(place): #need to be fuzzier about matching here. Already a very
print(("No cave found for place " , place))
return
+# lookup function modelled on GetPersonExpeditionNameLookup
+Gcavelookup = None
+def GetCaveLookup():
+ global Gcavelookup
+ if Gcavelookup:
+ return Gcavelookup
+ Gcavelookup = {"NONEPLACEHOLDER":None}
+ for cave in models_caves.Cave.objects.all():
+ Gcavelookup[cave.official_name.lower()] = cave
+ if cave.kataster_number:
+ Gcavelookup[cave.kataster_number] = cave
+ if cave.unofficial_number:
+ Gcavelookup[cave.unofficial_number] = cave
+
+ Gcavelookup["tunnocks"] = Gcavelookup["258"]
+ Gcavelookup["hauchhole"] = Gcavelookup["234"]
+ return Gcavelookup
+
+
logentries = [] # the entire logbook is a single object: a list of entries
noncaveplaces = [ "Journey", "Loser Plateau" ]
@@ -195,7 +216,6 @@ def Parseloghtmltxt(year, expedition, txt):
if logbook_entry_count == 0:
print(" - No trip entries found in logbook, check the syntax matches htmltxt format")
-
# main parser for 1991 - 2001. simpler because the data has been hacked so much to fit it
def Parseloghtml01(year, expedition, txt):
tripparas = re.findall(r"<hr[\s/]*>([\s\S]*?)(?=<hr)", txt)
@@ -381,6 +401,7 @@ def LoadLogbookForExpedition(expedition):
#return "TOLOAD: " + year + " " + str(expedition.personexpedition_set.all()[1].logbookentry_set.count()) + " " + str(models.PersonTrip.objects.filter(personexpedition__expedition=expedition).count())
+
def LoadLogbooks():
""" This is the master function for parsing all logbooks into the Troggle database. """
@@ -440,7 +461,7 @@ def parseAutoLogBookEntry(filename):
if caveMatch:
caveRef, = caveMatch.groups()
try:
- cave = models.getCaveByReference(caveRef)
+ cave = models_caves.getCaveByReference(caveRef)
except AssertionError:
cave = None
errors.append("Cave not found in database")
@@ -496,4 +517,4 @@ def parseAutoLogBookEntry(filename):
time_underground = TU,
logbook_entry = logbookEntry,
is_logbook_entry_author = author).save()
- print(logbookEntry)
+ print(logbookEntry) \ No newline at end of file