mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2026-05-18 20:53:31 +01:00
sed basics done for survex files in :loser:
This commit is contained in:
+43
-16
@@ -23,6 +23,17 @@ is 'katastered', ie.e moves from an informal number, such as
|
||||
1623-2024-BL-10 to 1623-999
|
||||
"""
|
||||
|
||||
def get_loser_dir(cave):
|
||||
""" Copes with capitalisation mismatch between declared loser diretory and actual
|
||||
"""
|
||||
loser_name = f"{str(cave.unofficial_number)}"
|
||||
parent = settings.SURVEX_DATA / f"caves-{str(cave.areacode)}"
|
||||
|
||||
for dn in [loser_name, loser_name.lower(), loser_name.upper()]:
|
||||
if ( parent / dn).is_dir():
|
||||
return parent / dn, Path(f"caves-{str(cave.areacode)}") / dn
|
||||
return None, None
|
||||
|
||||
def kataster(request, slug):
|
||||
"""Create the page which analyses how to rename a cave and all the files from the unofficial_number
|
||||
identifier, e.g. 1623-2023-mg-03 to the kataster number e.g. 1623-999
|
||||
@@ -48,11 +59,9 @@ def kataster(request, slug):
|
||||
if str(ent.name).startswith(str(cave)):
|
||||
print(ent.name)
|
||||
entrance_data.append("entrance_data/"+ent.name)
|
||||
mvscript += f"mv {ent.name} {ent.name.replace(str(cave),str(knum))}\n"
|
||||
|
||||
loser_name = f"caves-{str(cave.areacode)}/{str(cave.unofficial_number)}"
|
||||
loser_dir = settings.SURVEX_DATA / loser_name
|
||||
mvscript += f"mv {ent.name} {ent.name.replace(str(cave.unofficial_number),str(knum))}\n"
|
||||
loser_data = []
|
||||
loser_dir, loser_name = get_loser_dir(cave)
|
||||
if (loser_dir).is_dir():
|
||||
print(loser_dir)
|
||||
for svx in loser_dir.iterdir():
|
||||
@@ -63,13 +72,24 @@ def kataster(request, slug):
|
||||
def script_loser(knum):
|
||||
global cavefilename, cave_data, entrance_data, loser_name, loser_data
|
||||
|
||||
target= f"caves-{cave.areacode}/{str(knum)}"
|
||||
loser_dir, loser_name = get_loser_dir(cave) #/home/philip/expo/loser/caves-1623/2024-jc-01 , caves-1623/2024-jc-01
|
||||
target = loser_name.parent / str(knum)
|
||||
survex_name = str(loser_name.name)
|
||||
l_script = f"\ncd {settings.SURVEX_DATA}\n"
|
||||
l_script += f'sed -i "/^*include/s/{survex_name}/{knum}/g" {loser_name.parent}/caves.svx\n'
|
||||
|
||||
l_script += f'sed -i "/^*equate/s/{survex_name}/{knum}/g" {loser_name}/{survex_name}.svx\n'
|
||||
l_script += f'sed -i "/^*begin/s/{survex_name}/{knum}/" {loser_name}/{survex_name}.svx\n'
|
||||
l_script += f'sed -i "/^*end/s/{survex_name}/{knum}/" {loser_name}/{survex_name}.svx\n'
|
||||
l_script +=f"# These 'sed' edits will not do everything in all cases, but they do the basics\n\n"
|
||||
|
||||
l_script +=f"mv {loser_name} {target}\n"
|
||||
l_script +=f"cd {target}\n# But note that git ignores .log and .3d files\n"
|
||||
l_script +=f"cd {target}\n"
|
||||
for filename in loser_data:
|
||||
l_script +=f"mv {filename} {filename.replace(str(cave.unofficial_number),str(knum))}\n"
|
||||
l_script +=f"mv {filename} {filename.replace(survex_name,str(knum))}\n"
|
||||
l_script +=f"# But note that git ignores .log and .3d files\n"
|
||||
|
||||
|
||||
return l_script
|
||||
|
||||
|
||||
@@ -90,6 +110,8 @@ def kataster(request, slug):
|
||||
entrances.append(e.entrance)
|
||||
_ = do_file_finding(knum)
|
||||
|
||||
alias = f'(\\"{cave.slug()}\\", \\"{cave.areacode}-{knum}\\"),'
|
||||
aliasfile = settings.CAVEDESCRIPTIONS / "cavealiases.txt"
|
||||
try:
|
||||
# this is a python generator idiom.
|
||||
# see https://realpython.com/introduction-to-python-generators/
|
||||
@@ -111,32 +133,37 @@ def kataster(request, slug):
|
||||
print(msg)
|
||||
|
||||
# Restart script with POST data
|
||||
script = "# Conversion script\n# When doing it by hand, it is less error-prone to do the file re-namings last,\n"
|
||||
script += "# but in a script it does not matter so much, so long as everything is consistent and tested,\n"
|
||||
script += "# except that reversing changes using git does not always restore directories exactly.\n\n"
|
||||
script = "# Conversion script - VERY INCOMPLETE AS YET\n# When doing it by hand, it is less error-prone to do the file re-namings last,\n"
|
||||
script += "# but in a script it does not matter so much so long as everything is consistent and tested.\n"
|
||||
script += "# Except that reversing changes using git does not always restore directories exactly\n# (because of .gitignore).\n\n"
|
||||
script += "# Be careful with the directory names, they might not be the same on your PC as on the server\n\n"
|
||||
|
||||
warning =""
|
||||
|
||||
if request.method == "POST": # If the form has been submitted...
|
||||
form = KatasterForm(request.POST) # A form bound to the POST data
|
||||
if form.is_valid():
|
||||
clean = form.cleaned_data
|
||||
knum = clean['kataster_number']
|
||||
print(f" # kataster_number {clean['kataster_number']}")
|
||||
|
||||
# DETECT if this is an LAREADY USED kataster number in this area ! If so, WARNING!!
|
||||
# (we might be half-way through, so it might exist)
|
||||
if test := get_cave_from_slug(f"{cave.areacode}-{knum}"):
|
||||
warning = "<br /><br />DANGER DANGER You will overwrite an existing katastered cave !!!<br />"
|
||||
warning += "resetting proposed new kataster number to 666.<br /><br />"
|
||||
knum = 666
|
||||
else: # GET and fall-through if POST is not valid
|
||||
form = KatasterForm()
|
||||
|
||||
script += do_file_finding(knum)
|
||||
script += script_loser(knum)
|
||||
script_rows = str(min(35,3+script.count('\n')))
|
||||
|
||||
|
||||
|
||||
script += f'\necho "{alias}" >> {aliasfile}'
|
||||
script_rows = str(min(35,3+script.count('\n')))
|
||||
return render(
|
||||
request,
|
||||
"cave_kataster.html",
|
||||
{
|
||||
"form": form,
|
||||
"form": form, "warning": warning,
|
||||
"cave": cave, "entrances": entrances,
|
||||
"cave_data": cave_data, "entrance_data": entrance_data,
|
||||
"loser_name": loser_name, "loser_data": loser_data,
|
||||
|
||||
Reference in New Issue
Block a user