Support lineNameInfo in final P1/11 imports

This commit is contained in:
D. Berge
2024-05-04 17:35:05 +02:00
parent 5aaad01238
commit e48c734ea9

View File

@@ -15,6 +15,7 @@ import re
import time import time
import configuration import configuration
import p111 import p111
import fwr
from datastore import Datastore from datastore import Datastore
def add_pending_remark(db, sequence): def add_pending_remark(db, sequence):
@@ -69,7 +70,11 @@ if __name__ == '__main__':
print("No final P1/11 configuration") print("No final P1/11 configuration")
exit(0) exit(0)
pattern = final_p111["pattern"]
lineNameInfo = final_p111.get("lineNameInfo")
pattern = final_p111.get("pattern")
rx = None
if pattern and pattern.get("regex"):
rx = re.compile(pattern["regex"]) rx = re.compile(pattern["regex"])
if "pending" in survey["final"]: if "pending" in survey["final"]:
@@ -98,6 +103,7 @@ if __name__ == '__main__':
print("Importing") print("Importing")
if rx:
match = rx.match(os.path.basename(logical_filepath)) match = rx.match(os.path.basename(logical_filepath))
if not match: if not match:
error_message = f"File path not match the expected format! ({logical_filepath} ~ {pattern['regex']})" error_message = f"File path not match the expected format! ({logical_filepath} ~ {pattern['regex']})"
@@ -108,6 +114,28 @@ if __name__ == '__main__':
file_info = dict(zip(pattern["captures"], match.groups())) file_info = dict(zip(pattern["captures"], match.groups()))
file_info["meta"] = {} 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
}
if pending: if pending:
print("Skipping / removing final file because marked as PENDING", logical_filepath) print("Skipping / removing final file because marked as PENDING", logical_filepath)
db.del_sequence_final(file_info["sequence"]) db.del_sequence_final(file_info["sequence"])