diff --git a/bin/import_final_p111.py b/bin/import_final_p111.py new file mode 100755 index 0000000..c48b1eb --- /dev/null +++ b/bin/import_final_p111.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +""" +Import final p111. + +For each survey in configuration.surveys(), check for new +or modified final P1/11 files and (re-)import them into the +database. +""" + +import os +from glob import glob +import re +import configuration +import p111 +from datastore import Datastore + +if __name__ == '__main__': + + print("Reading configuration") + surveys = configuration.surveys() + + print("Connecting to database") + db = Datastore() + db.connect() + + print("Reading surveys") + for survey in surveys: + print(f'Survey: {survey["id"]} ({survey["schema"]})') + + db.set_survey(survey["schema"]) + + final_p111 = survey["final"]["p111"] + pattern = final_p111["pattern"] + rx = re.compile(pattern["regex"]) + + for fileprefix in final_p111["paths"]: + print(f"Path prefix: {fileprefix}") + + for globspec in final_p111["globs"]: + fullglob = os.path.join(fileprefix, globspec) + for filepath in glob(fullglob): + print(f"Found {filepath}") + + if not db.file_in_db(filepath): + print("Importing") + + match = rx.match(os.path.basename(filepath)) + file_info = dict(zip(pattern["captures"], match.groups())) + + p111_data = p111.from_file(filepath) + + print("Saving") + + p111_records = p111.p111_type("S", p111_data) + + db.save_final_p111(p111_records, file_info, filepath, survey["epsg"]) + else: + print("Already in DB") + + print("Done") +