update kontor-api
(cherry picked from commit f42735326b4dd490351cebb0fc751d62b3a187d0)
This commit is contained in:
@@ -1,13 +1,15 @@
|
|||||||
"""
|
"""
|
||||||
import data from json file to PostgreSQL
|
import data from json file to PostgreSQL
|
||||||
"""
|
"""
|
||||||
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
|
|
||||||
|
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
from typing import Any, AnyStr, Dict, List
|
from typing import Any, AnyStr, Dict, List
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
|
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
|
||||||
|
from datetime import date, datetime
|
||||||
|
from logging import Logger
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker, Session
|
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_SERVER: str = os.getenv("DB_SERVER", "127.0.0.1")
|
||||||
DB_PORT: int = int(os.getenv("DB_PORT", 5432))
|
DB_PORT: int = int(os.getenv("DB_PORT", 5432))
|
||||||
DB_DBNAME: str = os.getenv("DB_DBNAME", "kontor")
|
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):
|
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.")
|
log.info(f"File {filename} does not exist. Do nothing.")
|
||||||
raise FileNotFoundError()
|
raise FileNotFoundError()
|
||||||
log.info("read json file")
|
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)
|
json_load = json.load(json_file)
|
||||||
return json_load
|
return json_load
|
||||||
|
|
||||||
@@ -69,7 +73,7 @@ def update_item(db: Session, import_data: Dict[AnyStr, Any], item: Any, dry_run:
|
|||||||
if update:
|
if update:
|
||||||
log.info(f"update {key}({existing_value}) with {value}")
|
log.info(f"update {key}({existing_value}) with {value}")
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
if value == 'None':
|
if value == "None":
|
||||||
setattr(item, str(key), None)
|
setattr(item, str(key), None)
|
||||||
else:
|
else:
|
||||||
setattr(item, str(key), value)
|
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 isinstance(existing_data, date):
|
||||||
if len(import_data) > 19:
|
if len(import_data) > 19:
|
||||||
import_date = datetime.strptime(import_data, "%Y-%m-%d %H:%M:%S.%f")
|
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
|
return existing_data != import_date
|
||||||
if len(import_data) > 10:
|
if len(import_data) > 10:
|
||||||
import_date = datetime.strptime(import_data, "%Y-%m-%d %H:%M:%S")
|
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 != import_date
|
||||||
return existing_data.strftime("%Y-%m-%d") != import_data
|
return existing_data.strftime("%Y-%m-%d") != import_data
|
||||||
return existing_data != 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}")
|
log.info(f"import failed: {error}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == "__main__":
|
||||||
logger = get_logger(args.verbose, "kontor")
|
logger = get_logger(args.verbose, "kontor")
|
||||||
logger.info('kontor.import started')
|
logger.info('kontor.import started')
|
||||||
engine = create_engine(DATABASE_URL)
|
engine = create_engine(DATABASE_URL)
|
||||||
|
|||||||
Reference in New Issue
Block a user