From f757d7632c24ba251c7042c16f2d4fa77ba2493f Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Wed, 5 Feb 2025 17:35:37 +0000 Subject: moving i/l/t folders --- core/views/cave_kataster.py | 122 ++++++++++++++++++++++++++++++++------------ 1 file changed, 89 insertions(+), 33 deletions(-) (limited to 'core') diff --git a/core/views/cave_kataster.py b/core/views/cave_kataster.py index 6ad3059..13c6dc3 100644 --- a/core/views/cave_kataster.py +++ b/core/views/cave_kataster.py @@ -32,16 +32,27 @@ def fix(request, areacode="1626"): ents_html = settings.ENTRANCEDESCRIPTIONS caves_html = settings.CAVEDESCRIPTIONS - to_move = set() + to_move = [] - caves_in_area = Cave.objects.filter(areacode=areacode, kataster_number="") + caves_in_area = list(Cave.objects.filter(areacode=areacode, kataster_number="")) caves_nodir=[] ents = [] print(f"\n---------- {areacode}") + + # hack because some caves in 1623 have already been katastered. Bugger. That screws things up. + for i in range(303,316): + more = Cave.objects.filter(areacode=areacode, kataster_number=f"{i}") + # print(more) + caves_in_area.append(more[0]) + for c in caves_in_area: - c_html = caves_html / f"{c.areacode}-{c.unofficial_number}.html" + cave_id = f"{c.areacode}-{c.unofficial_number}" + c_html = caves_html / f"{cave_id}.html" if not c_html.is_file(): - raise + cave_id = f"{c.areacode}-{c.kataster_number}" + c_html = caves_html / f"{cave_id}.html" + if not c_html.is_file(): + raise ents.append(c.entrances()) with open(c_html, 'r') as f: for line in f: @@ -50,51 +61,96 @@ def fix(request, areacode="1626"): # print(c, search_term, match, line) for m in match: dir, filename = m - to_move.add(("c", c.unofficial_number, dir,filename)) - + to_move.append(("c", dir, cave_id[5:], c_html.name, filename)) + # for item in to_move: + # print(item) for ce in ents: + cc = ce[0].cave + # print(cc) + original_number = cc.unofficial_number for e in ce: - print(e.entrance.slug, e.entrance.filename) + # print(" ",e.entrance.slug, e.entrance.filename) e_html = ents_html / e.entrance.filename + print(range(303,316), cc.kataster_number) + if cc.kataster_number and int(cc.kataster_number) in range(303,316): + original_number = cc.kataster_number + u = cc.unofficial_number + k = cc.kataster_number + print(u,k) + e_html = ents_html / e_html.name.replace(f"{cc.unofficial_number}",f"{cc.kataster_number}") + if not e_html.is_file(): + e_html = ents_html / e_html.name.replace(f"{original_number}",f"{cc.kataster_number}") + original_number = cc.kataster_number + if not e_html.is_file(): + raise with open(e_html, 'r') as f: for line in f: search_term = f"{areacode}" + "/(l|t|i)/([^'\"]*)" if match := re.findall(search_term, line): - # print(c, search_term, match, line) + print(c, search_term, match, line) for m in match: dir, filename = m - to_move.add(("e", c.unofficial_number, dir,filename)) - - for c in caves_in_area: - cave_dir = settings.EXPOWEB / areacode / c.unofficial_number - if cave_dir.is_dir(): - print(f"YES {c.unofficial_number}") - for subfile in cave_dir.iterdir(): - if subfile.name not in triple: - print(f" ---- {subfile.name}") - else: - print(f" ++++ {subfile.name}") - else: - # print(f"NO {c.unofficial_number}") - caves_nodir.append(c.unofficial_number) + to_move.append(("e", dir, original_number, e.entrance.filename, filename)) + to_move = list(set(to_move)) + to_move.sort(key=lambda tup: tup[2]) + # for c in caves_in_area: + # cave_dir = settings.EXPOWEB / areacode / c.unofficial_number + # if cave_dir.is_dir(): + # print(f"YES {c.unofficial_number}") + # for subfile in cave_dir.iterdir(): + # if subfile.name not in triple: + # print(f" ---- {subfile.name}") + # else: + # print(f" ++++ {subfile.name}") + # else: + # # print(f"NO {c.unofficial_number}") + # caves_nodir.append(c.unofficial_number) - for item in to_move: - print(item) - - caves_nodir.sort() - print("\n Caves with no description directories") - for c in caves_nodir: - print(f"{c}, ", end="") + for key, dir, cave_id, filename, target in to_move: + if key == "c": + print((key, dir, cave_id, filename, target)) print("") + for key, dir, cave_id, filename, target in to_move: + if key == "e": + print((key, dir, cave_id, filename, target)) + + newdirs = set() + for key, dir, cave_id, filename, target in to_move: + newdirs.add(cave_id) + + x_script = f"cd {settings.EXPOWEB / areacode}\n" + for id in newdirs: + # PATH.mkdir(parents=True, exist_ok=True) + for d in triple: + x_script += f"mkdir -p {id}/{d}\n" + + # This duplicates things horribly: every individual /l/ means a whole set of duplicate sed lines + # simplify with a set somehow.. + # don't trigger this on seeing a /l/, just do it at the end on all the cave_data and entrance_data files we have seen. + x_script += f"cd {settings.EXPOWEB / areacode}\n" + for key, dir, cave_id, filename, target in to_move: + x_script += f"mv {dir}/\"{target}\" {cave_id}/{dir}\n" + if dir =="t": + x_script += f"mv i/\"{target}\" {cave_id}/i\n" + if dir =="l": + x_script += f"sed -i 's|\/{areacode}\/i\/|/{areacode}/{cave_id}/i/|g' {cave_id}/l/*.html\n" + x_script += f"sed -i \"s|\/{areacode}\/i\/|/{areacode}/{cave_id}/i/|g\" {cave_id}/l/*.html\n" + for q in triple: + if key =="e": + x_script += f"sed -i 's|\/{areacode}\/{q}\/|/{areacode}/{cave_id}/{q}/|g' ../entrance_data/'{filename}'\n" + x_script += f"sed -i \"s|\/{areacode}\/{q}\/|/{areacode}/{cave_id}/{q}/|g\" ../entrance_data/'{filename}'\n" + if key == "c": + x_script += f"sed -i 's|\/{areacode}\/{q}\/|/{areacode}/{cave_id}/{q}/|g' ../cave_data/'{filename}'\n" + x_script += f"sed -i \"s|\/{areacode}\/{q}\/|/{areacode}/{cave_id}/{q}/|g\" ../cave_data/'{filename}'\n" - + script_rows = str(max(35,3+x_script.count('\n'))) return render( request, - "cave_fix.html", - {"areacode": areacode, "caves_nodir": caves_nodir, + "cave_fix.html", + {"areacode": areacode, "caves_nodir": caves_nodir, + "x_script": x_script, "rows": script_rows, }, ) - return HttpResponseRedirect("/caves") def misplaced_html_files(cave): -- cgit v1.2.3