summaryrefslogtreecommitdiffstats
path: root/parsers/survex.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/survex.py')
-rw-r--r--parsers/survex.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/parsers/survex.py b/parsers/survex.py
index 5eee625..39d42dc 100644
--- a/parsers/survex.py
+++ b/parsers/survex.py
@@ -184,6 +184,7 @@ class LoadingSurvex():
currentcave = None
caverndate = None
currentpersonexped = []
+ pending = []
def __init__(self):
self.caveslist = GetCaveLookup()
@@ -721,6 +722,15 @@ class LoadingSurvex():
def ReportNonCaveIncludes(self, headpath, includelabel, depth):
"""Ignore surface, kataser and gpx *include survex files
"""
+ if not self.pending:
+ self.pending = set()
+ fpending = Path(settings.CAVEDESCRIPTIONS, "pendingcaves.txt")
+ if fpending.is_file():
+ with open(fpending, "r") as fo:
+ cids = fo.readlines()
+ for cid in cids:
+ self.pending.add(cid.rstrip('\n').upper())
+
if headpath in self.ignorenoncave:
message = f" - {headpath} is <ignorenoncave> (while creating '{includelabel}' sfile & sdirectory)"
#print("\n"+message)
@@ -732,20 +742,26 @@ class LoadingSurvex():
# print("\n"+message)
# print("\n"+message,file=sys.stderr)
return
- message = f" ! Error: not a cave nor ignorable. headpath:'{headpath}' while creating '{includelabel=}' at depth:[{len(depth)}]. ignore prefix list:'{self.ignoreprefix}'"
- # getting this triggered for gpx/2018 (cavern error) but not for gpx/2017 (no content).
+ caveid = f'{headpath[6:10]}-{headpath[11:]}'.upper()
+ if caveid in self.pending:
+ # Yes we didn't find this cave, but we know it is a pending one. So not an error.
+ # print(f'! ALREADY PENDING {caveid}',file=sys.stderr)
+ return
+
+ message = f" ! Error: not a cave nor ignorable. headpath:'{headpath}' while parsing '{includelabel=}.svx' at depth:[{len(depth)}]. ignore prefix list:'{self.ignoreprefix}'"
print("\n"+message)
print("\n"+message,file=sys.stderr)
DataIssue.objects.create(parser='survex', message=message, url=get_offending_filename(headpath))
print(f' # datastack in LoadSurvexFile:{includelabel} type:', end="",file=sys.stderr)
for dict in self.datastack:
- print(f'{dict["type"].upper()} ', end="",file=sys.stderr)
+ print(f'<{dict["type"].upper()} >', end="",file=sys.stderr)
def LoadSurvexFile(self, svxid):
"""Creates SurvexFile in the database, and SurvexDirectory if needed
with links to 'cave'
Creates a new current survexfile and valid .survexdirectory
+ Inspects the parent folder of the survexfile and uses that to decide if this is a cave we know
The survexblock passed-in is not necessarily the parent. FIX THIS.
"""
if debugprint: