diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2024-07-02 10:55:11 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2024-07-02 10:55:11 +0300 |
commit | a6730b1b3a2552b152aaa558c256a669d09b8cc3 (patch) | |
tree | fcea6fe74bbbfbf270891e2fccddc09ebdc42c2c /parsers/caves.py | |
parent | c51f76ed830d6caca59642c7fa2414b4930d716e (diff) | |
download | troggle-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.py | 31 |
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: |