update kontor-api
(cherry picked from commit f42735326b4dd490351cebb0fc751d62b3a187d0)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user