From 5aaad01238129243f39451e4b5166c2986636459 Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Sat, 4 May 2024 17:33:50 +0200 Subject: [PATCH] Support `lineNameInfo` in raw P1/11 imports --- bin/import_raw_p111.py | 46 +++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/bin/import_raw_p111.py b/bin/import_raw_p111.py index c6a38ab..4e00dd0 100755 --- a/bin/import_raw_p111.py +++ b/bin/import_raw_p111.py @@ -15,6 +15,7 @@ import re import time import configuration import p111 +import fwr from datastore import Datastore if __name__ == '__main__': @@ -38,8 +39,11 @@ if __name__ == '__main__': print("No raw P1/11 configuration") exit(0) - pattern = raw_p111["pattern"] - rx = re.compile(pattern["regex"]) + lineNameInfo = raw_p111.get("lineNameInfo") + pattern = raw_p111.get("pattern") + rx = None + if pattern and pattern.get("regex"): + rx = re.compile(pattern["regex"]) if "ntbp" in survey["raw"]: ntbpRx = re.compile(survey["raw"]["ntbp"]["pattern"]["regex"]) @@ -68,16 +72,38 @@ if __name__ == '__main__': print("Importing") - match = rx.match(os.path.basename(logical_filepath)) - if not match: - error_message = f"File path not matching the expected format! ({logical_filepath} ~ {pattern['regex']})" - print(error_message, file=sys.stderr) - print("This file will be ignored!") - continue + if rx: + match = rx.match(os.path.basename(logical_filepath)) + if not match: + error_message = f"File path not matching the expected format! ({logical_filepath} ~ {pattern['regex']})" + print(error_message, file=sys.stderr) + print("This file will be ignored!") + continue - file_info = dict(zip(pattern["captures"], match.groups())) - file_info["meta"] = {} + file_info = dict(zip(pattern["captures"], match.groups())) + file_info["meta"] = {} + if lineNameInfo: + basename = os.path.basename(physical_filepath) + fields = lineNameInfo.get("fields", {}) + fixed = lineNameInfo.get("fixed") + try: + parsed_line = fwr.parse_line(basename, fields, fixed) + except ValueError as err: + parsed_line = "Line format error: " + str(err) + if type(parsed_line) == str: + print(parsed_line, file=sys.stderr) + print("This file will be ignored!") + continue + + file_info = {} + file_info["sequence"] = parsed_line["sequence"] + file_info["line"] = parsed_line["line"] + del(parsed_line["sequence"]) + del(parsed_line["line"]) + file_info["meta"] = { + "fileInfo": parsed_line + } p111_data = p111.from_file(physical_filepath) print("Saving")