2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-22 07:11:52 +00:00
This commit is contained in:
Philip Sargent 2024-07-02 12:23:33 +03:00
parent 208c0ffa1f
commit e4d3e33dec
3 changed files with 35 additions and 43 deletions

View File

@ -712,7 +712,7 @@ def GetCaveLookup():
("loveshack", "1626-2018-ad-03"),
("crushed-garlic", "1626-2018-ad-03"),
# Renaming cave ids which end in a letter NB targets must be LOWER CASE
# Renaming cave ids which end in a letter NB targets should be LOWER CASE for this code
("2002-XX", "1623-2002-fb-01"),
("2002-X09B", "1623-2002-xb09"),
("2007-neu", "1623-2007-neu-01"),
@ -720,6 +720,13 @@ def GetCaveLookup():
("2023-BuzzardHole", "1626-2023-bz-01"),
("1626-2023-BuzzardHole", "1626-2023-bz-01"),
("1626-2023-buzzardhole","1626-2023-bz-01"),
("Rentner","1623-rnt-01"),
("Blaubeer","1623-blb-01"),
("Haldenlock","1623-hld-01"),
("Juttahoehle","1623-jtt-01"),
("Loutotihoehle","1626-loutoti-01"),
("Casino","1626-casino-01"),
("Upside-down","1626-upside-down-01"),
]

View File

@ -408,7 +408,7 @@ def edit_cave(request, path="", slug=None):
We basically ignore the <path> as the <slug> is of the format 1624-114 and contains the area code
"""
#print(f"edit_cave(): {path=} {slug=}")
print(f"edit_cave(): {path=} {slug=}")
message = ""
if slug is not None:
try:
@ -463,7 +463,7 @@ def edit_cave(request, path="", slug=None):
try:
read_cave(cave.filename, cave=cave)
except Exception as e:
print(f"edit_cave(): EXCEPTION attempting to read_cave()\n{e}")
print(f"edit_cave(): EXCEPTION attempting to read_cave({cave.filename})\n{e}")
raise
form = CaveForm(instance=cave, initial={'cave_slug': cave.slug()})

View File

@ -479,12 +479,6 @@ def read_entrance(filename, ent=None):
contents = f.read()
context = filename
# validate filename, check areacode
ent_area = filename[:4]
if ent_area not in AREACODES:
message = f'! BAD AREA CODE in "{filename}". Not recognised.'
DataIssue.objects.create(parser="entrances", message=message, url=ent_edit_url)
print(message)
# Derive the letter, entrance slug and cave slug fromthe filename
@ -497,10 +491,16 @@ def read_entrance(filename, ent=None):
letter_fn = ""
cave_name_fn = caveslug_fn[5:] # remove initial "1623-"
ent_area = filename[:4]
ent_edit_url = f"/{caveslug_fn}:{entslug_fn}_entrance_edit"
cave_edit_url = f"/{ent_area}/{cave_name_fn}/{caveslug_fn}_cave_edit"
# validate filename, check areacode
if ent_area not in AREACODES:
message = f'! BAD AREA CODE in "{filename}". Not recognised.'
DataIssue.objects.create(parser="entrances", message=message, url=ent_edit_url)
print(message)
entrancecontentslist = getXML(contents, "entrance", maxItems=1, context=context)
@ -726,8 +726,7 @@ def read_cave(filename, mvf=None, cave=None):
def check_slug(areacode, kataster_number, unofficial_number, url):
"""There is a <caveslug> field in the .html file, but we now ignore it as we use the
filename itself to set the slug.
However we do check it for sanity, pending its removal eventually."""
# context = f"/{cave.areacode}/{slug}_cave_edit/"
However we do check it for sanity, if it is there, pending its removal eventually."""
if kataster_number:
if slug == f"{areacode}-{kataster_number}":
@ -764,48 +763,39 @@ def read_cave(filename, mvf=None, cave=None):
# Note: these are HTML files in the EXPOWEB repo, not from the loser repo.
fn = settings.CAVEDESCRIPTIONS / filename
context = f"/cave_data/{filename}_edit" # the expo html editor, not the specialist cave data editor. oops.FIX THIS
# print(f" - Reading Cave from cave descriptions file {fn}")
#print(f" - Reading Cave from cave descriptions file {fn}")
if not fn.exists():
message = f" ! Cave_data file reading problem filename:'cave_data/{filename}'"
DataIssue.objects.create(parser="caves", message=message, url=context)
DataIssue.objects.create(parser="caves", message=message, url="")
print(message)
return None
# ignore <caveslug> read from the filename
slug = filename[:-5] # strip off the ".html" at the end of the filename
slugs = [slug]
areacode = slug[:4]
context = f"/{areacode}/{slug}_cave_edit"
with open(fn) as f:
contents = f.read()
cavecontentslist = getXML(contents, "cave", maxItems=1, context=context)
if len(cavecontentslist) != 1:
message = f'! BAD CAVE DATA in "{filename}". More than one cave. Edit file manually, click.'
DataIssue.objects.create(parser="caves", message=message, url=context)
DataIssue.objects.create(parser="caves", message=message, url="")
print(message)
return None
cavecontents = cavecontentslist[0]
# This is ignored, we are using the filename not this <caveslug> field now
# New 2024 June 28th.
# slugs = getXML(cavecontents, "caveslug", maxItems=1, context=context)
# if len(slugs) > 1:
# message = f" ! - More than one slug for a cave: {cave}, slugs: {slugs}."
# DataIssue.objects.create(parser="caves", message=message, url=context)
# print(message)
# slug = slugs[0]
# but ignore <caveslug> read from the file
slug = filename[:-5] # strip off the ".html" at the end of the filename
slugs = [slug]
#print(f"{filename=} {slug=}")
#print(slug[-1].lower(), slug)
if slug[-1].lower() in LETTERS:
message = f" ! Cave name ends in a letter not a number. Fix this! in file {filename} "
DataIssue.objects.create(parser="caves", message=message, url=context) # url here is for where the file actually is, for editing
print(message)
non_public = getXMLmax1("non_public")
official_name = getXMLmax1("official_name")
kataster_code = getXMLmax1("kataster_code")
@ -822,14 +812,11 @@ def read_cave(filename, mvf=None, cave=None):
survex_file = getXMLmax1("survex_file")
description_file = getXMLmax1("description_file")
# Optional, but probably deprecated as we should just derive this from the survex data
length = getXMLmin0("length")
depth = getXMLmin0("depth")
extent = getXMLmin0("extent")
areacode = slug[:4]
contextguess = f"/{slug[0:4]}/{slug}_cave_edit/"
manual_edit = True
if not cave:
# we are parsing using databaseReset.py not an online edit
@ -843,7 +830,7 @@ def read_cave(filename, mvf=None, cave=None):
kaves = Cave.objects.all().filter(filename=filename) # replace with slug when CaveSlug tidied up
for k in kaves:
message = " ! - DUPLICATES in db. kataster:" + str(k.kataster_number) + ", slug:" + str(k.slug())
DataIssue.objects.create(parser="caves", message=message, url=contextguess)
DataIssue.objects.create(parser="caves", message=message, url=context)
print(message)
for k in kaves:
if k.slug() is not None:
@ -855,15 +842,13 @@ def read_cave(filename, mvf=None, cave=None):
do_caveslugstuff() # needs cave!=None
# We no longer need the <area> tag to define 1623 etc as we get that from the filename.
areas = getXML(cavecontents, "area", context=contextguess, minItems=0) # can be multiple <area> tags
areas = getXML(cavecontents, "area", context=context, minItems=0) # can be multiple <area> tags
for area_slug in areas:
if area_slug not in AREACODES: # only detect subareas
cave.subarea = area_slug
if not cave.areacode:
if areacode in AREACODES:
cave.areacode = areacode
context = f"/{cave.areacode}/{slug}_cave_edit/"
cave.non_public=boolify(non_public)
cave.official_name=official_name[0]
@ -886,13 +871,13 @@ def read_cave(filename, mvf=None, cave=None):
cave.extent=extent[0]
cave.survex_file=survex_file[0]
cave.description_file=description_file[0]
# cave.url=url[0] # set algorithically:
# cave.url=url[0] # set algorithically now:
cave.url = f"{cave.areacode}/{cave.number()}/{cave.number()}.html"
check_directory(cave.areacode, cave.number(), cave.url, cave)
slug = check_slug(cave.areacode, cave.kataster_number, cave.unofficial_number, cave.url) #NB cave.slug is not a field on Cave
# Thsi whole way of doing entrances can be replaced by simply knowing formthe entrance_data filename what the cave is.
# Thsi whole way of doing entrances can be replaced by simply knowing the entrance_data filename what the cave is. to do.
entrances = getXML(cavecontents, "entrance", context=context)
do_entrances()
# print(f"- {entrances_xslug=}")