From 47df61af32bdd488fe5f9688d29309fe526f1aab Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Wed, 28 Jan 2026 17:20:11 +0100 Subject: [PATCH] update kontor-api (cherry picked from commit f42735326b4dd490351cebb0fc751d62b3a187d0) --- kontor-scripts/import.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/kontor-scripts/import.py b/kontor-scripts/import.py index b37c6a8..4a5304b 100644 --- a/kontor-scripts/import.py +++ b/kontor-scripts/import.py @@ -1,13 +1,15 @@ """ import data from json file to PostgreSQL """ -from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter from datetime import datetime, date from typing import Any, AnyStr, Dict, List import os import json - +import os +from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser +from datetime import date, datetime +from logging import Logger from pathlib import Path from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, Session @@ -28,7 +30,9 @@ DB_PASSWORD: str = os.getenv("DB_PASSWORD", "kontor") DB_SERVER: str = os.getenv("DB_SERVER", "127.0.0.1") DB_PORT: int = int(os.getenv("DB_PORT", 5432)) DB_DBNAME: str = os.getenv("DB_DBNAME", "kontor") -DATABASE_URL: str = f"postgresql://{DB_USER}:{DB_PASSWORD}@{DB_SERVER}:{DB_PORT}/{DB_DBNAME}" +DATABASE_URL: str = ( + f"postgresql://{DB_USER}:{DB_PASSWORD}@{DB_SERVER}:{DB_PORT}/{DB_DBNAME}" +) def cleanup_database(db: Session, log, dry_run: bool): @@ -50,7 +54,7 @@ def load_data(filename: str, log) -> Dict[AnyStr, Dict[AnyStr, Any]]: log.info(f"File {filename} does not exist. Do nothing.") raise FileNotFoundError() log.info("read json file") - with open(filename, 'r') as json_file: + with open(filename, "r") as json_file: json_load = json.load(json_file) return json_load @@ -64,12 +68,12 @@ def update_item(db: Session, import_data: Dict[AnyStr, Any], item: Any, dry_run: for (key, value) in import_data.items(): existing_value = getattr(item, str(key)) update: bool = has_changed(existing_value, value, log) - #if key == 'published_on': + # if key == 'published_on': # log.info(f"{type(value)}:{value} != {type(existing_value)}:{existing_value} : {update}") if update: log.info(f"update {key}({existing_value}) with {value}") if not dry_run: - if value == 'None': + if value == "None": setattr(item, str(key), None) else: setattr(item, str(key), value) @@ -84,11 +88,15 @@ def has_changed(existing_data: Any, import_data: AnyStr, log) -> bool: if isinstance(existing_data, date): if len(import_data) > 19: import_date = datetime.strptime(import_data, "%Y-%m-%d %H:%M:%S.%f") - log.debug(f"{type(existing_data)}:{existing_data} == {import_date} : {existing_data != import_date}") + log.debug( + f"{type(existing_data)}:{existing_data} == {import_date} : {existing_data != import_date}" + ) return existing_data != import_date if len(import_data) > 10: import_date = datetime.strptime(import_data, "%Y-%m-%d %H:%M:%S") - log.debug(f"{type(existing_data)}:{existing_data} == {import_date} : {existing_data != import_date}") + log.debug( + f"{type(existing_data)}:{existing_data} == {import_date} : {existing_data != import_date}" + ) return existing_data != import_date return existing_data.strftime("%Y-%m-%d") != import_data return existing_data != import_data @@ -110,7 +118,7 @@ def item_import(db: Session, import_data: Dict[AnyStr, Any], dry_run: bool, log) log.info(f"import failed: {error}") -if __name__ == '__main__': +if __name__ == "__main__": logger = get_logger(args.verbose, "kontor") logger.info('kontor.import started') engine = create_engine(DATABASE_URL)