summaryrefslogtreecommitdiffstats
path: root/parsers/caves.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/caves.py')
-rw-r--r--parsers/caves.py34
1 files changed, 23 insertions, 11 deletions
diff --git a/parsers/caves.py b/parsers/caves.py
index f1c8c4f..808c2c0 100644
--- a/parsers/caves.py
+++ b/parsers/caves.py
@@ -556,10 +556,12 @@ def read_entrance(filename, ent=None):
ent.save()
return ent
-def read_cave(filename, cave=None):
+def read_cave(filename, mvf, cave=None):
"""Reads an entrance description from the .html file
Convoluted. Sorry. Needs rewriting
+ mvf is a file handle for misnamed files
+
If not called as part of initial import, then the global lists will not be correct
but this is OK, a search will find them in the db.
@@ -685,18 +687,25 @@ def read_cave(filename, cave=None):
if kataster_number:
if slug == f"{areacode}-{kataster_number}":
return slug
- message = f" ! Cave Slug mismatch (kataster): '{slug}' != '{areacode}-{kataster_number}' {url=} in file {filename}. Adjusting.."
+ message = f" ! Cave Slug mismatch (kataster): '{slug}' != '{areacode}-{kataster_number}' {url=} in file {filename}. CHANGE caveslug field in the .html file."
correctslug = f"{areacode}-{kataster_number}"
+
else:
if slug == f"{areacode}-{unofficial_number}":
return slug
if slug.lower() == f"{areacode}-{unofficial_number.lower()}":
- message = f" ! Cave Slug capitalisation incorrect (unofficial): '{slug}' != '{areacode}-{unofficial_number}' {url=} in file {filename}"
+ message = f" ! Cave Slug capitalisation incorrect (unofficial): '{slug}' != '{areacode}-{unofficial_number}' {url=} in file {filename}."
correctslug = slug.lower()
else:
- message = f" ! Cave Slug mismatch (unofficial): '{slug}' != '{areacode}-{unofficial_number}' {url=} in file {filename}"
+ message = f" ! Cave Slug mismatch (unofficial): '{slug}' != '{areacode}-{unofficial_number}' {url=} in file {filename} CHANGE caveslug field in the .html file."
correctslug = slug # hack to stopit crashing
- DataIssue.objects.create(parser="caves", message=message, url=f"{cave.slug}_cave_edit/")
+ DataIssue.objects.create(parser="caves", message=message, url=f"{slug}_cave_edit/") # url here is for where the file actually is, for editing
+ mvtext = f"mv {filename} {correctslug}.html"
+ #print(mvtext)
+ if filename != f"{correctslug}.html" :
+ message = f" ! Filename is not the same as the cave slug '{slug}' != '{areacode}-{unofficial_number}' {url=} in file {filename} so use troggle/mvscript.sh to fix."
+ DataIssue.objects.create(parser="caves", message=message, url=f"{slug}_cave_edit/") # url here is for where the file actually is, for editing
+ mvf.write(mvtext + "\n")
print(message)
return correctslug
@@ -716,7 +725,7 @@ def read_cave(filename, cave=None):
DataIssue.objects.create(parser="caves", message=message, url=context)
print(message)
return None
-
+
with open(fn) as f:
contents = f.read()
cavecontentslist = getXML(contents, "cave", maxItems=1, context=context)
@@ -814,8 +823,8 @@ def read_cave(filename, cave=None):
cave.url = f"{cave.areacode}/{cave.number()}/{cave.number()}.html"
check_directory(cave.areacode, cave.number(), cave.url, cave)
- # This next line has no effect because the cave slug is not actually a field on the Cave object so we can't fix it here. to-do.
- slug = check_slug(cave.areacode,cave.kataster_number, cave.unofficial_number, cave.url)
+ # This next line has no effect because the cave slug is not actually a field on the Cave object so we can't fix it here. to-do!
+ slug = check_slug(cave.areacode, cave.kataster_number, cave.unofficial_number, cave.url)
entrances = getXML(cavecontents, "entrance", context=context)
do_entrances()
@@ -905,9 +914,12 @@ def readcaves():
with transaction.atomic():
print(" - Reading Caves from cave descriptions xml files")
- for filename in next(os.walk(CAVEDESCRIPTIONS))[2]: # Should be a better way of getting a list of files
- if filename.endswith(".html"):
- read_cave(filename)
+ mvscript = "mvscript.sh"
+ with open(mvscript, "w") as mvf: # overwrite
+ mvf.write(f"cd {CAVEDESCRIPTIONS}\n")
+ for filename in next(os.walk(CAVEDESCRIPTIONS))[2]: # Should be a better way of getting a list of files
+ if filename.endswith(".html"):
+ read_cave(filename, mvf)
print(" - Setting up all the variously useful alias names")
GetCaveLookup()