mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-15 12:27:05 +00:00
finding the right survex file for a cave
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import os
|
||||
import re
|
||||
import string
|
||||
|
||||
import sys
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
@@ -103,15 +103,37 @@ def set_dummy_entrance(id, slug, cave, msg="DUMMY"):
|
||||
# print(message)
|
||||
|
||||
|
||||
def create_new_cave(svxpath, msg=None):
|
||||
def create_new_cave(svxpath, svxid=None, msg=None):
|
||||
"""This is called only when a new survex file is edited online which has a path on the
|
||||
:loser: repo which is not recognised as a known cave.
|
||||
ALSO called by survex parser when it finds a cave it doesn't recognise
|
||||
"""
|
||||
# e.g. svxpath = "caves-1623/666/beast" .svx
|
||||
# e.g. svxpath = "caves-1623/666/beast" .svx - from the *inlcude tree
|
||||
# e.g. svxid = "caves-1623/666/beast"
|
||||
print(f"Create new cave at {svxpath} - {msg}")
|
||||
#
|
||||
survex_file = svxpath.replace("caves-","") + ".svx"
|
||||
survex_file = ""
|
||||
if svxid:
|
||||
sv = Path(settings.SURVEX_DATA, svxid + ".svx")
|
||||
if sv.is_file:
|
||||
survex_file = svxid + ".svx"
|
||||
else:
|
||||
sv = Path(settings.SURVEX_DATA, svxpath + ".svx")
|
||||
if sv.is_file:
|
||||
survex_file = svxpath + ".svx"
|
||||
|
||||
if survex_file:
|
||||
# message = f"Found a survex file {survex_file=} {svxpath=} {svxid=} "
|
||||
# DataIssue.objects.create(parser="caves", message=message)
|
||||
# print(message, file=sys.stderr)
|
||||
# print(message)
|
||||
pass
|
||||
else:
|
||||
message = f"NOT found a survex file {svxpath=} {svxid=}"
|
||||
DataIssue.objects.create(parser="caves", message=message)
|
||||
print(message, file=sys.stderr)
|
||||
print(message)
|
||||
|
||||
parts = svxpath.split("/")
|
||||
a = parts[0][-4:]
|
||||
caveid = parts[1]
|
||||
@@ -142,9 +164,8 @@ def create_new_cave(svxpath, msg=None):
|
||||
print(message)
|
||||
raise
|
||||
|
||||
# we know what the survex file is, we don't need to use the guess.
|
||||
# But this sets the survex file on the cave from the first one we find, not necessarily the best survex file for this cave
|
||||
cave.survex_file=survex_file
|
||||
# But this sets the survex file on the Cave from the first one we find, not necessarily the best survex file for this cave
|
||||
cave.survex_file=survex_file # primary survex file for Cave
|
||||
cave.areacode=areacode
|
||||
cave.save()
|
||||
return cave
|
||||
@@ -230,6 +251,9 @@ def do_pending_cave(slug, caveid, url, areacode, msg=None):
|
||||
"""Guesses at and finds a survex file for this pending cave.
|
||||
Convoluted. Needs rewriting.
|
||||
Pointless if this cave is being created because we found a survex file...
|
||||
|
||||
On problem is that the Cave name may have different capitalisation from the survex filename,
|
||||
e.g. 2018-NTU-02 has a survex file 2018-ntu-02.svx
|
||||
"""
|
||||
if k[0:3] == "162":
|
||||
id = Path(k[5:])
|
||||
@@ -244,6 +268,7 @@ def do_pending_cave(slug, caveid, url, areacode, msg=None):
|
||||
if Path(settings.SURVEX_DATA, survex_file).is_file():
|
||||
return survex_file
|
||||
|
||||
# This should find the file even if the capitalisation is different, or if the directory name is totaly different
|
||||
survex_file = ""
|
||||
d = Path(settings.SURVEX_DATA, f"caves-{areacode}/{id}")
|
||||
if d.is_dir():
|
||||
@@ -257,10 +282,12 @@ def do_pending_cave(slug, caveid, url, areacode, msg=None):
|
||||
prime_suspect = survex_file
|
||||
if prime_suspect:
|
||||
survex_file = prime_suspect
|
||||
# message = f" ! {k:14} Found a survex file which might be the right one: {survex_file} - {msg}"
|
||||
# DataIssue.objects.create(parser='caves', message=message, url=url)
|
||||
# print(message)
|
||||
return survex_file
|
||||
# message = f" ! {k:14} Found a survex file which might be the right one: {survex_file} - {msg}"
|
||||
# DataIssue.objects.create(parser='caves', message=message, url=url)
|
||||
# print(message)
|
||||
if Path(settings.SURVEX_DATA, survex_file).is_file():
|
||||
return survex_file
|
||||
return ""
|
||||
|
||||
g = GetCaveLookup()
|
||||
with transaction.atomic():
|
||||
@@ -324,7 +351,7 @@ def do_pending_cave(slug, caveid, url, areacode, msg=None):
|
||||
)
|
||||
if cave:
|
||||
cave.save() # must save to have id before foreign keys work. This is also a ManyToMany key.
|
||||
message = f" ! {slug:18} Pending cave write-up url: {url} - {msg}"
|
||||
message = f" ! {slug:18} Pending cave write-up url: {url} - {survex_file=} - {msg}"
|
||||
DataIssue.objects.create(parser="caves", message=message, url=url)
|
||||
print(message)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user