From c3941bd70cab9e202fac530c8af47fd2fbeca854 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Wed, 6 Dec 2017 19:16:24 +0100 Subject: [PATCH] Rebuild data on import command if required --- flatisfy/__main__.py | 19 ++++--------------- flatisfy/config.py | 3 +++ flatisfy/data.py | 2 ++ 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/flatisfy/__main__.py b/flatisfy/__main__.py index c6fd4d1..d373a86 100644 --- a/flatisfy/__main__.py +++ b/flatisfy/__main__.py @@ -158,21 +158,10 @@ def main(): cmds.purge_db(config) return - # Build data files - try: - force = False - if args.cmd == "build-data": - force = True - - if data.preprocess_data(config, force=force): - LOGGER.info("Done building data!") - - if args.cmd == "build-data": - sys.exit(0) - except flatisfy.exceptions.DataBuildError as exc: - LOGGER.error("%s", exc) - sys.exit(1) - + # Build data files command + if args.cmd == "build-data": + data.preprocess_data(config, force=True) + return # Fetch command if args.cmd == "fetch": # Fetch and filter flats list diff --git a/flatisfy/config.py b/flatisfy/config.py index 5dc969c..37c10f2 100644 --- a/flatisfy/config.py +++ b/flatisfy/config.py @@ -168,6 +168,9 @@ def validate_config(config, check_with_data): assert constraint["postal_codes"] assert all(isinstance(x, str) for x in constraint["postal_codes"]) if check_with_data: + # Ensure data is built into db + data.preprocess_data(config, force=False) + # Check postal codes opendata_postal_codes = [ x.postal_code for x in data.load_data(PostalCode, constraint, config) diff --git a/flatisfy/data.py b/flatisfy/data.py index bc8faba..7f3209f 100644 --- a/flatisfy/data.py +++ b/flatisfy/data.py @@ -60,6 +60,7 @@ def preprocess_data(config, force=False): session.query(PostalCode).delete() # Build all opendata files + LOGGER.info("Rebuilding data...") for preprocess in data_files.PREPROCESSING_FUNCTIONS: data_objects = preprocess() if not data_objects: @@ -68,6 +69,7 @@ def preprocess_data(config, force=False): ) with get_session() as session: session.add_all(data_objects) + LOGGER.info("Done building data!") return True