#!/usr/bin/python3 """ Import raw 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 import pathlib 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"]) try: raw_p111 = survey["raw"]["p111"] except KeyError: print("No raw P1/11 configuration") exit(0) pattern = raw_p111["pattern"] rx = re.compile(pattern["regex"]) for fileprefix in raw_p111["paths"]: print(f"Path prefix: {fileprefix}") for globspec in raw_p111["globs"]: for filepath in pathlib.Path(fileprefix).glob(globspec): filepath = str(filepath) 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_raw_p111(p111_records, file_info, filepath, survey["epsg"]) else: print("Already in DB") print("Done")