diff options
author | Philip Sargent <philip.sargent@klebos.com> | 2020-06-15 03:28:51 +0100 |
---|---|---|
committer | Philip Sargent <philip.sargent@klebos.com> | 2020-06-15 03:28:51 +0100 |
commit | 453af2851b72e495733f023fe443e368017c8452 (patch) | |
tree | 5902eda1787ecf2a4327b8237ed0d85001012041 /parsers/survex.py | |
parent | 30e560d808bf149eee6f932195925d282241b3b3 (diff) | |
download | troggle-453af2851b72e495733f023fe443e368017c8452.tar.gz troggle-453af2851b72e495733f023fe443e368017c8452.tar.bz2 troggle-453af2851b72e495733f023fe443e368017c8452.zip |
Stop storing all SurvexStations
Diffstat (limited to 'parsers/survex.py')
-rw-r--r-- | parsers/survex.py | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/parsers/survex.py b/parsers/survex.py index fe9f729..8908f67 100644 --- a/parsers/survex.py +++ b/parsers/survex.py @@ -24,6 +24,7 @@ rx_braskets= re.compile(r"[()]") rx_line_length = re.compile(r"[\d\-+.]+$") survexlegsalllength = 0.0 survexlegsnumber = 0 +survexblockroot = None def LoadSurvexLineLeg(survexblock, stardata, sline, comment, cave): global survexlegsalllength @@ -550,6 +551,8 @@ def LoadPos(): posfile = open("%s.pos" % (topdata)) posfile.readline() #Drop header + + survexblockroot = models_survex.SurvexBlock.objects.get(id=1) for line in posfile.readlines(): r = poslineregex.match(line) if r: @@ -559,25 +562,54 @@ def LoadPos(): else: for sid in mappoints: if id.endswith(sid): + notfoundnow.append(id) + # Now that we don't import any stations, we create it rather than look it up + # ss = models_survex.SurvexStation.objects.lookup(id) + + # need to set block_id which means doing a search on all the survex blocks.. + # remove dot at end and add one at beginning + blockpath = "." + id[:-len(sid)].strip(".") + try: + sbqs = models_survex.SurvexBlock.objects.filter(survexpath=blockpath) + if len(sbqs)==1: + sb = sbqs[0] + if len(sbqs)>1: + message = ' ! MULTIPLE SurvexBlocks matching Entrance point {} {}'.format(blockpath, sid) + print(message) + models.DataIssue.objects.create(parser='survex', message=message) + sb = sbqs[0] + elif len(sbqs)<=0: + message = ' ! ZERO SurvexBlocks matching Entrance point {} {}'.format(blockpath, sid) + print(message) + models.DataIssue.objects.create(parser='survex', message=message) + sb = survexblockroot + except: + message = ' ! FAIL in getting SurvexBlock matching Entrance point {} {}'.format(blockpath, sid) + print(message) + models.DataIssue.objects.create(parser='survex', message=message) try: - ss = models_survex.SurvexStation.objects.lookup(id) + ss = models_survex.SurvexStation(name=id, block=sb) ss.x = float(x) ss.y = float(y) ss.z = float(z) ss.save() found += 1 except: - notfoundnow.append(id) - print(" - %s failed lookups of SurvexStation.objects. %s found. %s skipped." % (len(notfoundnow),found, len(skip))) + message = ' ! FAIL to create SurvexStation Entrance point {} {}'.format(blockpath, sid) + print(message) + models.DataIssue.objects.create(parser='survex', message=message) + raise + + #print(" - %s failed lookups of SurvexStation.objects. %s found. %s skipped." % (len(notfoundnow),found, len(skip))) if found > 10: # i.e. a previous cave import has been done try: with open(cachefile, "w") as f: c = len(notfoundnow)+len(skip) for i in notfoundnow: - f.write("%s\n" % i) + pass #f.write("%s\n" % i) for j in skip: - f.write("%s\n" % j) # NB skip not notfoundbefore + pass #f.write("%s\n" % j) # NB skip not notfoundbefore print((' Not-found cache file written: %s entries' % c)) except: print(" FAILURE WRITE opening cache file %s" % (cachefile)) |