diff options
author | Philip Sargent <philip.sargent@klebos.com> | 2022-10-06 21:02:15 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@klebos.com> | 2022-10-06 21:02:15 +0300 |
commit | 70709c505c69e8deb627698d276a7cf431b6116b (patch) | |
tree | cb87c4b515da920fbff49c0ff9d5e64efd1b43a8 /parsers/survex.py | |
parent | 8d08a67302c88c00e42959cdabcc73ec3f478dd0 (diff) | |
download | troggle-70709c505c69e8deb627698d276a7cf431b6116b.tar.gz troggle-70709c505c69e8deb627698d276a7cf431b6116b.tar.bz2 troggle-70709c505c69e8deb627698d276a7cf431b6116b.zip |
Fixing bugs and better error msgs
Diffstat (limited to 'parsers/survex.py')
-rw-r--r-- | parsers/survex.py | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/parsers/survex.py b/parsers/survex.py index 3789cb7..406f08a 100644 --- a/parsers/survex.py +++ b/parsers/survex.py @@ -523,7 +523,7 @@ class LoadingSurvex(): yr, letterx, wallet = argsgps.groups() else: perps = get_people_on_trip(survexblock) - message = f" ! Wallet *REF '{args}' malformed id in '{survexblock.survexfile.path}' {perps}" + message = f" ! Wallet *REF bad in '{survexblock.survexfile.path}' malformed id '{args}' {perps}" print(self.insp+message) DataIssue.objects.create(parser='survex', message=message, url=url) return @@ -549,19 +549,25 @@ class LoadingSurvex(): message = " ! Wallet *REF {} - not numeric in '{}'".format(refscan, survexblock.survexfile.path) print(self.insp+message) DataIssue.objects.create(parser='survex', message=message, url=url) + manywallets = Wallet.objects.filter(walletname=refscan) # assumes all wallets found in earlier pass of data import if manywallets: - survexblock.scanswallet = manywallets[0] # this is a ForeignKey field - message = f' - Wallet {manywallets[0]=} successfully found in db. *ref in {survexblock.survexfile.path}' - # print(self.insp+message) - survexblock.save() if len(manywallets) > 1: - message = " ! Wallet *REF {} - more than one found {} wallets in block {}".format(refscan, len(manywallets), survexblock.survexfile.path) + message = " ! Wallet *REF {} - more than one found {} wallets in db with same id {}".format(refscan, len(manywallets), survexblock.survexfile.path) print(self.insp+message) DataIssue.objects.create(parser='survex', message=message, url=url) + + if survexblock.scanswallet: + if survexblock.scanswallet.walletname != refscan: + message = f" ! Wallet *REF {refscan} in {survexblock.survexfile.path} - Already a DIFFERENT wallet is set for this block '{survexblock.scanswallet.walletname}'" + print(self.insp+message) + DataIssue.objects.create(parser='survex', message=message, url=url) + else: + survexblock.scanswallet = manywallets[0] # this is a ForeignKey field + survexblock.save() else: perps = get_people_on_trip(survexblock) - message = f" ! Wallet *REF '{refscan}' in '{survexblock.survexfile.path}' {perps} NOT in database i.e. wallet does not exist." + message = f" ! Wallet *REF bad in '{survexblock.survexfile.path}' '{refscan}' NOT in database i.e. wallet does not exist {perps}." print(self.insp+message) DataIssue.objects.create(parser='survex', message=message, url=url) @@ -994,7 +1000,7 @@ class LoadingSurvex(): blockcount +=1 if blockcount % 20 ==0 : print(".", file=sys.stderr,end='') - if blockcount % 400 ==0 : + if blockcount % 800 ==0 : print("\n", file=sys.stderr,end='') mem=get_process_memory() print(" - MEM:{:7.3f} MB in use".format(mem),file=sys.stderr) @@ -1603,16 +1609,12 @@ def FindAndLoadSurvex(survexblockroot): - - # Before doing this, it would be good to identify the *equate and *entrance we need that are relevant to the # entrance locations currently loaded after this by LoadPos(), but could better be done before ? # look in MapLocations() for how we find the entrances print('\n - Loading All Survex Blocks (LinearLoad)',file=sys.stderr) svx_load = LoadingSurvex() - mem1 = get_process_memory() - print(" - MEM:{:7.2f} MB after creating empty loading object.".format(mem1),file=sys.stderr) svx_load.survexdict[survexfileroot.survexdirectory] = [] svx_load.survexdict[survexfileroot.survexdirectory].append(survexfileroot) @@ -1624,6 +1626,8 @@ def FindAndLoadSurvex(survexblockroot): svxlines = fcollate.read().splitlines() #pr2 = cProfile.Profile() #pr2.enable() + mem1 = get_process_memory() + print(f" - MEM:{mem1:7.2f} MB immediately after reading '{collatefilename}' into memory.",file=sys.stderr) print(" ", file=sys.stderr,end='') #---------------------------------------------------------------- svx_load.LinearLoad(survexblockroot,survexfileroot.path, svxlines) @@ -1633,6 +1637,7 @@ def FindAndLoadSurvex(survexblockroot): # ps = pstats.Stats(pr2, stream=f) # ps.sort_stats(SortKey.CUMULATIVE) # ps.print_stats() + svxlines = [] # empty 30MB of stashed file mem1 = get_process_memory() print("\n - MEM:{:7.2f} MB STOP".format(mem1),file=sys.stderr) print(" - MEM:{:7.3f} MB ADDITIONALLY USED".format(mem1-mem0),file=sys.stderr) @@ -1748,24 +1753,24 @@ def LoadPositions(): capture_output=True, check=False, text=True) #check=False means exception not raised if sp.returncode != 0: message = f' ! Error: cavern: creating {file3d} in runcavern3()' - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='entrances', message=message) print(message) # find the errors in the 1623.log file sp = subprocess.run(["grep", "error:", f"{topdata}.log"], capture_output=True, check=False, text=True) #check=False means exception not raised - message = f' ! Error: cavern: {sp.stdout}' - DataIssue.objects.create(parser='survex', message=message) + message = f' ! Error: cavern: {sp.stdout} creating {file3d} ' + DataIssue.objects.create(parser='entrances', message=message) print(message) except: - message = " ! CalledProcessError 'cavern' in runcavern3() at {topdata}." - DataIssue.objects.create(parser='survex', message=message) + message = f" ! CalledProcessError 'cavern' in runcavern3() at {topdata}." + DataIssue.objects.create(parser='entrances', message=message) print(message) if file3d.is_file(): - message = " ! CalledProcessError. File permissions {file3d.stat().st_mode} on {str(file3d)}" - DataIssue.objects.create(parser='survex', message=message) + message = f" ! CalledProcessError. File permissions {file3d.stat().st_mode} on {str(file3d)}" + DataIssue.objects.create(parser='entrances', message=message) print(message) if file3d.is_file(): # might be an old one though @@ -1776,7 +1781,7 @@ def LoadPositions(): if sp.returncode != 0: print(f' ! Error: survexport creating {topdata}.pos in runcavern3().\n\n' + str(sp.stdout) + '\n\nreturn code: ' + str(sp.returncode)) except: - message = " ! CalledProcessError 'survexport' in runcavern3() at {file3d}." + message = f" ! CalledProcessError 'survexport' in runcavern3() at {file3d}." DataIssue.objects.create(parser='entrances', message=message) print(message) else: @@ -1837,9 +1842,9 @@ def LoadPositions(): try: survexblockroot = SurvexBlock.objects.get(id=1) except: - message = ' ! FAILED to find root SurvexBlock' + message = f' ! FAILED to find root SurvexBlock' print(message) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='entrances', message=message) raise for line in posfile.readlines(): r = poslineregex.match(line) @@ -1859,17 +1864,17 @@ def LoadPositions(): if len(sbqs)>1: message = " ! MULTIPLE SurvexBlocks {:3} matching Entrance point {} {} '{}'".format(len(sbqs), blockpath, sid, id) print(message) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='entrances', message=message) sb = sbqs[0] elif len(sbqs)<=0: message = " ! ZERO SurvexBlocks matching Entrance point {} {} '{}'".format(blockpath, sid, id) print(message) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='entrances', message=message) sb = survexblockroot except: message = ' ! FAIL in getting SurvexBlock matching Entrance point {} {}'.format(blockpath, sid) print(message) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='entrances', message=message) try: ss = SurvexStation(name=id, block=survexblockroot) ss.x = float(x) @@ -1880,7 +1885,7 @@ def LoadPositions(): except: message = ' ! FAIL to create SurvexStation Entrance point {} {}'.format(blockpath, sid) print(message) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='entrances', message=message) raise print(" - {} SurvexStation entrances found.".format(found)) |