diff options
Diffstat (limited to 'parsers/survex.py')
-rw-r--r-- | parsers/survex.py | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/parsers/survex.py b/parsers/survex.py index 127bb70..1f93a4e 100644 --- a/parsers/survex.py +++ b/parsers/survex.py @@ -114,7 +114,7 @@ class LoadingSurvex(): rx_names = re.compile(r'(?i)names') rx_flagsnot= re.compile(r"not\s") rx_linelen = re.compile(r"[\d\-+.]+$") - instruments = "(waiting_patiently|slacker|Useless|nagging|unknown|Inst|instrument|rig|rigger|rigging|helper|something| compass|comp|clino|Notes|sketch|book|Tape|Dog|Pics|photo|drawing|Helper|GPS|Disto|Distox|Distox2|topodroid|point|Consultant|nail|polish|varnish|bitch|monkey|PowerDrill|drill)" + instruments = "(waiting_patiently|slacker|Useless|nagging|unknown|Inst|instrument|rig|rigger|rigging|helper|something| compass|comp|clino|Notes|sketch|book|Tape|Dog|Pics|photo|drawing|Helper|GPS|Disto|Distox|Distox2|topodroid|point|Consultant|nail|polish|nail_polish_bitch|nail_polish_monkey|varnish|nail_polish|nail_varnish|bitch|monkey|PowerDrill|drill)" rx_teammem = re.compile(r"(?i)"+instruments+"?(?:es|s)?\s+(.*)"+instruments+"?(?:es|s)?$") rx_person = re.compile(r"(?i) and | / |, | & | \+ |^both$|^none$") rx_qm = re.compile(r'(?i)^\s*QM(\d)\s+?([a-dA-DxX])\s+([\w\-]+)\.(\d+)\s+(([\w\-]+)\.(\d+)|\-)\s+(.+)$') @@ -448,27 +448,27 @@ class LoadingSurvex(): def LoadSurvexRef(self, survexblock, args): #print(self.insp+ "*REF ---- '"+ args +"'") - + url=f'/survexfile/{survexblock.survexfile.path}' # *REF but also ; Ref years from 1960 to 2039 refline = self.rx_ref_text.match(args) if refline: # a textual reference such as "1996-1999 Not-KH survey book pp 92-95" - # print(self.insp+ "*REF quoted text so ignored:"+ args) + print(self.insp+ "*REF quoted text so ignored:"+ args) return if len(args)< 4: message = " ! Empty or BAD *REF statement '{}' in '{}'".format(args, survexblock.survexfile.path) print((self.insp+message)) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) return argsgps = self.rx_argsref.match(args) if argsgps: yr, letterx, wallet = argsgps.groups() else: - message = " ! BAD *REF statement '{}' in '{}'".format(args, survexblock.survexfile.path) + message = " ! Wallet *REF '{}' in '{}' ".format(args, survexblock.survexfile.path) print(self.insp+message) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) return if not letterx: @@ -480,31 +480,31 @@ class LoadingSurvex(): if not (int(yr)>1960 and int(yr)<2039): message = " ! Wallet year out of bounds {yr} '{refscan}' {survexblock.survexfile.path}" print((self.insp+message)) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) refscan = "%s#%s%s" % (yr, letterx, wallet) try: if int(wallet)>100: message = " ! Wallet *REF {} - too big in '{}'".format(refscan, survexblock.survexfile.path) print((self.insp+message)) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) except: - message = " ! Wallet *REF {} - not numeric in '{}'".format(refscan, survexblock.survexfile.path) + message = " ! Wallet *REF {} - not numeric in '{}' -- parsing continues".format(refscan, survexblock.survexfile.path) print((self.insp+message)) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) manywallets = Wallet.objects.filter(walletname=refscan) if manywallets: survexblock.scanswallet = manywallets[0] # this is a ForeignKey field print(manywallets[0]) survexblock.save() if len(manywallets) > 1: - message = " ! Wallet *REF {} - {} scan folders from DB search in {}".format(refscan, len(manywallets), survexblock.survexfile.path) + message = " ! Wallet *REF {} - {} scan folders from DB search in {} -- parsing continues".format(refscan, len(manywallets), survexblock.survexfile.path) print((self.insp+message)) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) else: - message = " ! Wallet *REF '{}' - NOT found in DB search '{}'".format(refscan, survexblock.survexfile.path) + message = " ! Wallet *REF '{}' - NOT found in DB search '{}' -- parsing continues".format(refscan, survexblock.survexfile.path) print((self.insp+message)) - DataIssue.objects.create(parser='survex', message=message) + DataIssue.objects.create(parser='survex', message=message, url=url) def LoadSurvexQM(self, survexblock, qmline): insp = self.insp @@ -668,7 +668,7 @@ class LoadingSurvex(): return self.svxdirs[headpath.lower()] def ReportNonCaveIncludes(self, headpath, includelabel): - """Ignore surface, kataser and gps *include survex files + """Ignore surface, kataser and gpx *include survex files """ if headpath in self.ignorenoncave: #message = f" - {headpath} is <ignorenoncave> (while creating '{includelabel}' sfile & sdirectory)" @@ -677,11 +677,12 @@ class LoadingSurvex(): return for i in self.ignoreprefix: if headpath.startswith(i): - #message = f" - {headpath} starts with <ignoreprefix> (while creating '{includelabel}' sfile & sdirectory)" - #print("\n"+message) + message = f" - {headpath} starts with <ignoreprefix> (while creating '{includelabel}' sfile & sdirectory)" + print("\n"+message) #print("\n"+message,file=sys.stderr) return - message = f" ! Error: '{headpath}' not a cave or in the ignore list of surface surveys. (while creating '{includelabel}')" + message = f" ! Error: '{headpath}' not a cave or in the ignore list of surface surveys. (while creating '{includelabel}' in db)" + # getting this triggered for gpx/2018 but not for gpx/2017 ?! print("\n"+message) print("\n"+message,file=sys.stderr) DataIssue.objects.create(parser='survex', message=message) @@ -725,7 +726,7 @@ class LoadingSurvex(): if cave: newdirectory.cave = cave newfile.cave = cave - #print("\n"+str(newdirectory.cave),file=sys.stderr) + print("\n"+str(newdirectory.cave),file=sys.stderr) else: # probably a surface survey self.ReportNonCaveIncludes(headpath, svxid) @@ -1214,8 +1215,9 @@ class LoadingSurvex(): sp = subprocess.run([settings.CAVERN, "--log", f'--output={outputdir}', f'{fullpath}.svx'], capture_output=True, check=False, text=True) if sp.returncode != 0: - message = f' ! Error running {settings.CAVERN}: {fullpath}' - DataIssue.objects.create(parser='entrances', message=message) + message = f' ! Error running {settings.CAVERN}: {fullpath}' + url = f'/survexfile{fullpath}.svx'.replace(settings.SURVEX_DATA, "") + DataIssue.objects.create(parser='xEntrances', message=message, url=url) print(message) print(f'stderr:\n\n' + str(sp.stderr) + '\n\n' + str(sp.stdout) + '\n\nreturn code: ' + str(sp.returncode)) self.caverncount += 1 @@ -1408,6 +1410,7 @@ def LoadSurvexBlocks(): DataIssue.objects.filter(parser='survexleg').delete() DataIssue.objects.filter(parser='survexunits').delete() DataIssue.objects.filter(parser='entrances').delete() + DataIssue.objects.filter(parser='xEntrances').delete() survexfileroot = MakeSurvexFileRoot() # this next makes a block_object assciated with a file_object.path = SURVEX_TOPNAME |