diff --git a/parsers/caves.py b/parsers/caves.py
index 8e967b1..4a14725 100644
--- a/parsers/caves.py
+++ b/parsers/caves.py
@@ -82,6 +82,8 @@ def set_dummy_entrance(id, slug, cave, msg="DUMMY"):
DataIssue.objects.create(parser="caves", message=message, url=f"{cave.url}")
print(message)
+def create_new_cave():
+ pass
def do_pending_cave(k, url, area):
"""
diff --git a/parsers/survex.py b/parsers/survex.py
index e7340a4..a1cab9a 100644
--- a/parsers/survex.py
+++ b/parsers/survex.py
@@ -1473,32 +1473,6 @@ class LoadingSurvex:
cave = getCaveByReference(pos_cave)
return cave
return None
-
- # def LoadSurvexSetup(self, survexblock, survexfile):
- # """REFACTOR to use get_cave()
-
- # This does not seem to get run at all ?!
- # """
- # self.depthbegin = 0
- # self.datastar = self.datastardefault
- # print(
- # self.insp
- # + f" - MEM:{get_process_memory():.3f} Reading. parent:{survexblock.survexfile.path} <> {survexfile.path} "
- # )
- # self.lineno = 0
- # sys.stderr.flush()
- # self.callcount += 1
- # if self.callcount % 10 == 0:
- # print(".", file=sys.stderr, end="")
- # if self.callcount % 500 == 0:
- # print("\n", file=sys.stderr, end="")
- # # Try to find the cave in the DB if not use the string as before
- # path_match = re.search(r"caves-(\d\d\d\d)/(\d+|\d\d\d\d-?\w+-\d+)/", survexblock.survexfile.path)
- # if path_match:
- # pos_cave = f"{path_match.group(1)}-{path_match.group(2)}"
- # cave = getCaveByReference(pos_cave)
- # if cave:
- # survexfile.cave = cave
def LinearLoad(self, survexblock, path, collatefilename):
"""Loads a single survex file. Usually used to import all the survex files which have been collated
@@ -2327,16 +2301,18 @@ def parse_one_file(fpath): # --------------------------------------in progress--
in an earlier stange than LinearLoad(). By the time LinearLoad() is called,
all the *include expansion has happened.
"""
- def parse_new_svx(fpath, svx_load, cave, svxfileroot=None):
+ def parse_new_svx(fpath, svx_load, svxfileroot=None):
"""We need a dummy survex block which has the survexfile being parsed
as its .survexfile field. But it is used in two ways, it is also
set as the parent block for the new blocks being created. This has to be fixed
later.
This all needs refactoring.
+
+ We also need to re-plumb the fileroot after importing, so that
+ the new survexfile appears in the survexdirectory lists
"""
if svxfileroot == None:
-
- svxfileroot = MakeFileRoot(fpath, cave)
+ svxfileroot = MakeFileRoot(fpath)
svxfileroot.save()
# It is vital that the block has attached the survexfile object which is being parsed.
@@ -2362,6 +2338,8 @@ def parse_one_file(fpath): # --------------------------------------in progress--
# Now we don't need or want the dummy any more
block_dummy.delete()
+ #svxfile.survexdirectory =
+
global svx_load
print(f"\n - Loading One Survex file '{fpath}'", file=sys.stderr)
svx_load = LoadingSurvex()
@@ -2411,7 +2389,7 @@ def parse_one_file(fpath): # --------------------------------------in progress--
# Logic is that we need an SB which links to the survexfile we are parsing for the parser
# to work, but we delete all those before we start parsing. Urk.
#===========
- parse_new_svx(fpath, svx_load, existingsvx, svxfileroot=existingsvx)
+ parse_new_svx(fpath, svx_load, svxfileroot=existingsvx)
#===========
print(f" - survexfile id={existingsvx.id} update ")
@@ -2429,7 +2407,7 @@ def parse_one_file(fpath): # --------------------------------------in progress--
else:
print(f" - Not seen this survexfile before '{fpath}' Loading. ..")
#===========
- parse_new_svx(fpath,svx_load, IdentifyCave(fpath))
+ parse_new_svx(fpath,svx_load)
#===========
# print(f" - Number of SurvexDirectories: {len(svx_load.survexdict):,}")
@@ -2460,18 +2438,49 @@ def MakeSurvexFileRoot():
return fileroot
-def MakeFileRoot(fn, cave):
+def MakeFileRoot(fn):
"""Returns a file_object.path = _unseens.svx associated with directory_object.path = SURVEX_DATA
-
- CHANGE THIS to just use the same block root as for SURVEX_TOPNAME ?
+ or tries to find the primary survex file for this cave
"""
- print(f" - Making a new root survexfile for this import: {fn}")
- fileroot = SurvexFile(path=fn, cave=cave)
- fileroot.survexdirectory = SurvexDirectory.objects.get(id=1) # just re-use the first thing we made
- fileroot.save()
cave = IdentifyCave(fn)
+
+ print(f" - Making/finding a new root survexfile for this import: {fn}")
+
+ #this doesn't work. Using the cave primary survex file as the fileroot
+ # 1. does not parse the file correctly and does not attach the blocks in it to the surfvexfile
+ # 2. it still doesn't appear on the http://localhost:8000/survexfile/107 list
+ # 3. it does make the sb appear on http://localhost:8000/survexfile/caves-1623/107/107.svx when it shouldnt.
+
+ # if cave == None:
+ # fileroot = SurvexFile(path=fn, cave=cave)
+ # fileroot.survexdirectory = SurvexDirectory.objects.get(id=1) # just re-use the first thing we made
+ # fileroot.save()
+ # fileroot.cave = cave
+ # print(f" - new fileroot {type(fileroot)} for {fn} with cave {cave} - {fileroot}")
+ # else:
+ # print(f" - {cave.survexdirectory_set.all()}")
+ # print(f" - {cave.survexdirectory_set.filter(cave=cave)}")
+ # for sd in cave.survexdirectory_set.filter(cave=cave):
+ # print(f" - {sd.cave} {sd.primarysurvexfile}")
+ # if f"{sd.primarysurvexfile}".replace("caves-","").startswith(f"{sd.cave}"[:4]):
+ # print(f" - USE THIS ONE {sd.cave} {sd.primarysurvexfile}")
+ # fileroot = sd.primarysurvexfile
+ # print(f" - old fileroot {type(fileroot)} for {fn} with cave {cave} - {fileroot}")
+
+ fileroot = SurvexFile(path=fn, cave=cave)
+ fileroot.survexdirectory = SurvexDirectory.objects.get(id=1) # default
+
+ if cave:
+ # But setting the SurvexDirectory does work !
+ # The fluffy stuff is because of errors in the original setting of survex directories
+ # which needs to be cleaned up..
+ for sd in cave.survexdirectory_set.filter(cave=cave):
+ if f"{sd.primarysurvexfile}".replace("caves-","").startswith(f"{sd.cave}"[:4]):
+ fileroot.survexdirectory = sd
+ fileroot.save()
fileroot.cave = cave
- print(f" - new fileroot {type(fileroot)} for {fn} with cave {cave}")
+ print(f" - new fileroot {type(fileroot)} for {fn} with cave {cave} - {fileroot}")
+
return fileroot
@@ -2521,7 +2530,7 @@ def LoadSurvexBlocks():
# sudo service mariadb start
survexblockroot.save()
- omitsfileroot = MakeFileRoot(UNSEENS, None)
+ omitsfileroot = MakeFileRoot(UNSEENS)
survexomitsroot = SurvexBlock(
name=OMITBLOCK, survexpath="", survexfile=omitsfileroot, legsall=0, legslength=0.0
)
diff --git a/templates/svxfile.html b/templates/svxfile.html
index 428d143..db420cc 100644
--- a/templates/svxfile.html
+++ b/templates/svxfile.html
@@ -81,9 +81,10 @@ LOGMESSAGES
{% endif %}
underground survey length: {{svxlength|floatformat:2}} metres
-parent survex file {{survexfile.cave.survex_file}} for this cave {{survexfile.cave}}
+parent survex file {{survexfile.cave.survex_file}} for this cave
+survex directory {{survexfile.survexdirectory}}
{% for sb in svxblocks %}
-block:({{sb}}) has parent block:({{sb.parent}})
+block {{sb}} has parent block {{sb.parent}}
{% empty %}
Cannot find any dated survex blocks in this survex file (not looking at *include files).
Report this to a nerd if you think this is incorrect.