From 43634fb47547a5fbfbc2af1ead93f8597f4925a3 Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Fri, 31 Jan 2025 18:30:22 +0000 Subject: initial rename script textarea --- core/views/cave_kataster.py | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'core/views/cave_kataster.py') diff --git a/core/views/cave_kataster.py b/core/views/cave_kataster.py index a682870..96bfe6a 100644 --- a/core/views/cave_kataster.py +++ b/core/views/cave_kataster.py @@ -7,7 +7,7 @@ from django.http import HttpResponseRedirect from django.shortcuts import redirect, render import troggle.settings as settings - +#from troggle.core.models.caves import Entrance, Cave from troggle.core.utils import ( COOKIE_MAX_AGE, WriteAndCommitError, @@ -27,23 +27,27 @@ 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 """ - def do_file_finding(): + + def do_file_finding(knum): global cavefilename, cave_data, entrance_data, loser_name, loser_data + mvscript = f"cd {settings.CAVEDESCRIPTIONS }\n" cavefilename = str(cave) + ".html" cave_data = Path( "cave_data", cavefilename ) if not (settings.CAVEDESCRIPTIONS / cavefilename).is_file: # settings.EXPOWEB / cave_data cave_data = "does not exist" + mvscript += f"mv {cavefilename} {cave.areacode}-{str(knum)}.html\n" ent_dir = settings.ENTRANCEDESCRIPTIONS # settings.EXPOWEB / "entrance_data" - + mvscript += f"cd {settings.ENTRANCEDESCRIPTIONS }\n" entrance_data = [] for ent in ent_dir.iterdir(): 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 @@ -52,8 +56,10 @@ def kataster(request, slug): print(loser_dir) for svx in loser_dir.iterdir(): print(svx) - loser_data.append(Path(loser_dir , svx).name) + loser_data.append(Path(loser_dir , svx).name) + return mvscript + knum = 9999 if cave := get_cave_from_slug(slug.lower()): @@ -63,14 +69,18 @@ def kataster(request, slug): else: return HttpResponseRedirect("/caves") - knum = 9999 - do_file_finding() + entrances = [] + for e in cave.entrances(): # horrid CaveAndEntrance indirection we need to refactor out in due course + if e.entrance.best_station(): + entrances.append(e.entrance) + _ = do_file_finding(knum) try: # this is a python generator idiom. # see https://realpython.com/introduction-to-python-generators/ # THIS IS VERY SILLY. We have this in the databse fom when this file was parsed. Don't read it again ! + # However we will need to parse the href= and src= strings in the cave description text, notes etc. with open(settings.CAVEDESCRIPTIONS / cavefilename, 'r') as f: for line in f: if match := re.search(r'(.*?)', line): @@ -85,24 +95,31 @@ def kataster(request, slug): msg=f"CANNOT write this file {filepath}. Ask a nerd to fix this: {e}" print(msg) + script = "" + 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) else: # GET and fall-through if POST is not valid form = KatasterForm() + script += do_file_finding(knum) + return render( request, "cave_kataster.html", { "form": form, - "cave": cave, + "cave": cave, "entrances": entrances, "cave_data": cave_data, "entrance_data": entrance_data, "loser_name": loser_name, "loser_data": loser_data, - "knum": knum, + "knum": knum, "script": script, }, ) class KatasterForm(forms.Form): -- cgit v1.2.3