From 4a0496b3b4946e8e13130107040c8f235f30f488 Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Fri, 31 Jan 2025 01:51:22 +0000 Subject: begun to do fields, blue --- core/views/cave_kataster.py | 71 +++++++++++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 21 deletions(-) (limited to 'core/views/cave_kataster.py') diff --git a/core/views/cave_kataster.py b/core/views/cave_kataster.py index 08aced6..48aad7d 100644 --- a/core/views/cave_kataster.py +++ b/core/views/cave_kataster.py @@ -1,3 +1,4 @@ +import re from pathlib import Path import django.forms as forms @@ -23,6 +24,38 @@ is 'katastered', ie.e moves from an informal number, such as """ 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(): + + global cavefilename, cave_data, entrance_data, loser_name, loser_data + + 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" + + ent_dir = settings.ENTRANCEDESCRIPTIONS # settings.EXPOWEB / "entrance_data" + + 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) + + loser_name = f"caves-{str(cave.areacode)}/{str(cave.unofficial_number)}" + loser_dir = settings.SURVEX_DATA / loser_name + loser_data = [] + if (loser_dir).is_dir(): + print(loser_dir) + for svx in loser_dir.iterdir(): + print(svx) + loser_data.append(Path(loser_dir , svx).name) + + + if cave := get_cave_from_slug(slug.lower()): pass elif cave := get_cave_from_slug(slug.upper()): @@ -31,29 +64,25 @@ def kataster(request, slug): return HttpResponseRedirect("/caves") knum = 9999 - filename = str(cave) + ".html" - - cave_data = Path( "cave_data", filename ) - if not (settings.EXPOWEB / cave_data).is_file: - cave_data = "does not exist" - - ent_dir = settings.EXPOWEB / "entrance_data" + do_file_finding() - 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) + try: + # this is a python generator idiom. + # see https://realpython.com/introduction-to-python-generators/ + with open(settings.CAVEDESCRIPTIONS / cavefilename, 'r') as f: + for line in f: + if match := re.search(r'(.*?)', line): + entrance = match.group(1) + print(entrance) + + except PermissionError as e: + msg=f"CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {filepath}. Ask a nerd to fix this: {e}" + print(msg) + raise + except Exception as e: + msg=f"CANNOT write this file {filepath}. Ask a nerd to fix this: {e}" + print(msg) - loser_name = f"caves-{str(cave.areacode)}/{str(cave.unofficial_number)}" - loser_dir = settings.SURVEX_DATA / loser_name - loser_data = [] - if (loser_dir).is_dir(): - print(loser_dir) - for svx in loser_dir.iterdir(): - print(svx) - loser_data.append(Path(loser_dir , svx).name) - 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(): -- cgit v1.2.3