summaryrefslogtreecommitdiffstats
path: root/parsers/caves.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2024-07-02 10:55:11 +0300
committerPhilip Sargent <philip.sargent@gmail.com>2024-07-02 10:55:11 +0300
commita6730b1b3a2552b152aaa558c256a669d09b8cc3 (patch)
treefcea6fe74bbbfbf270891e2fccddc09ebdc42c2c /parsers/caves.py
parentc51f76ed830d6caca59642c7fa2414b4930d716e (diff)
downloadtroggle-a6730b1b3a2552b152aaa558c256a669d09b8cc3.tar.gz
troggle-a6730b1b3a2552b152aaa558c256a669d09b8cc3.tar.bz2
troggle-a6730b1b3a2552b152aaa558c256a669d09b8cc3.zip
deal with absent uneeded items
Diffstat (limited to 'parsers/caves.py')
-rw-r--r--parsers/caves.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/parsers/caves.py b/parsers/caves.py
index ff54c41..0bf3520 100644
--- a/parsers/caves.py
+++ b/parsers/caves.py
@@ -464,6 +464,9 @@ def read_entrance(filename, ent=None):
Returns:
The entrance object, or a new entrance object if `ent` is None.
"""
+ def getXMLmin0(field):
+ return getXML(entrancecontents, field, minItems=0, maxItems=1, context=context)
+
def getXMLmax1(field):
return getXML(entrancecontents, field, maxItems=1, context=context)
@@ -508,7 +511,7 @@ def read_entrance(filename, ent=None):
return None
entrancecontents = entrancecontentslist[0]
- slugs = getXML(entrancecontents, "slug", context=context)
+ slugs = getXMLmin0("slug")
# we ignore all these, because we now just use the filename. But if they are there, we validate them.
if len(slugs) > 0 :
slug = slugs[0]
@@ -519,8 +522,8 @@ def read_entrance(filename, ent=None):
DataIssue.objects.create(parser="entrances", message=message, url=cave_edit_url)
print(message)
- if slug != entslug_fn:
- message = f" ! - Warning, mismatch between entrance slug and filename: {slug=} {filename=}. Ignoring slug field, using filename."
+ if slug and slug != entslug_fn:
+ message = f" ! - Warning, mismatch between entrance slug (or unofficial name) and filename: {slug=} {filename=}. Ignoring slug field, using filename."
DataIssue.objects.create(parser="xEntrances", message=message, url=cave_edit_url)
print(message)
slug = entslug_fn # force
@@ -604,8 +607,11 @@ def read_cave(filename, mvf=None, cave=None):
elements = xml_root.findall(t)
"""
+ def getXMLmin0(field):
+ return getXML(cavecontents, field, minItems=0, maxItems=1, context=context)
+
def getXMLmax1(field):
- return getXML(cavecontents, field, maxItems=1, context=context)
+ return getXML(cavecontents, field, minItems=0, maxItems=1, context=context)
def do_entrances():
"""For both bulk import and individual re-reading of cave_data file,
@@ -813,11 +819,13 @@ def read_cave(filename, mvf=None, cave=None):
#kataster_status = getXMLmax1("kataster_status")
#underground_centre_line = getXMLmax1("underground_centre_line")
notes = getXMLmax1("notes")
- length = getXMLmax1("length")
- depth = getXMLmax1("depth")
- extent = getXMLmax1("extent")
survex_file = getXMLmax1("survex_file")
description_file = getXMLmax1("description_file")
+
+ length = getXMLmin0("length")
+ depth = getXMLmin0("depth")
+ extent = getXMLmin0("extent")
+
areacode = slug[:4]
contextguess = f"/{slug[0:4]}/{slug}_cave_edit/"
@@ -870,9 +878,12 @@ def read_cave(filename, mvf=None, cave=None):
#cave.kataster_status=kataster_status[0]
#cave.underground_centre_line=underground_centre_line[0]
cave.notes=notes[0]
- cave.length=length[0]
- cave.depth=depth[0]
- cave.extent=extent[0]
+ if length:
+ cave.length=length[0]
+ if depth:
+ cave.depth=depth[0]
+ if extent:
+ cave.extent=extent[0]
cave.survex_file=survex_file[0]
cave.description_file=description_file[0]
# cave.url=url[0] # set algorithically: