update kontor-api

(cherry picked from commit f42735326b4dd490351cebb0fc751d62b3a187d0)
This commit is contained in:
2026-01-28 17:20:11 +01:00
parent b2ce2172a2
commit 47df61af32
+17 -9
View File
@@ -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)