add removal of remaining items by calling API
This commit is contained in:
@@ -4,22 +4,25 @@ import data from json file to PostgreSQL
|
||||
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
|
||||
|
||||
from datetime import datetime, date
|
||||
from logging import Logger
|
||||
from typing import Any, Dict, List
|
||||
import os
|
||||
import json
|
||||
|
||||
from pathlib import Path
|
||||
import requests
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker, Session
|
||||
from db.models.base import Base
|
||||
from db.models import registry
|
||||
from psycopg2.errors import NotNullViolation
|
||||
from config import get_logger
|
||||
from config import get_api_config, get_logger
|
||||
|
||||
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument('--verbose', '-v', action='count', default=0)
|
||||
parser.add_argument("--config", "-c", default="kontor-docker")
|
||||
parser.add_argument('--dry-run', '-m', action='store_true')
|
||||
parser.add_argument('--cleanup', '-c', action='store_true')
|
||||
parser.add_argument('--cleanup', '-d', action='store_true')
|
||||
parser.add_argument('--file', '-f', default='~/data.json')
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -109,10 +112,26 @@ def item_import(db: Session, import_data: Dict[str, Any], dry_run: bool, log):
|
||||
except Exception as error:
|
||||
log.info(f"import failed: {error}")
|
||||
|
||||
def item_delete(table_name: str, item_id: str, api_data: Dict[str, Any], log: Logger):
|
||||
log.info(f"delete item {item_id} from {table_name}")
|
||||
host = api_data["host"]
|
||||
port = api_data["port"]
|
||||
token = api_data['token']
|
||||
url = ""
|
||||
match table_name:
|
||||
case "media_file":
|
||||
url = f"http://{host}:{port}/api/media/files/{item_id}"
|
||||
case "media_actor_file":
|
||||
url = f"http://{host}:{port}/api/media/actorfiles/{item_id}"
|
||||
headers: Dict[str, str] = {"Authorization": f"Bearer {token}"}
|
||||
response = requests.delete(url, headers=headers)
|
||||
log.debug(f"Status: {response.status_code}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
logger = get_logger(args.verbose, "kontor")
|
||||
logger.info('kontor.import started')
|
||||
api_data = get_api_config(logger, args.config)
|
||||
engine = create_engine(DATABASE_URL)
|
||||
Base.metadata.create_all(bind=engine, checkfirst=True)
|
||||
SessionLocal = sessionmaker(bind=engine)
|
||||
@@ -142,4 +161,13 @@ if __name__ == '__main__':
|
||||
logger.debug(f"remaining items for {tablename}: {len(existing_ids)}")
|
||||
if len(existing_ids) > 0:
|
||||
logger.info(f"remaining items for {tablename}: {existing_ids}")
|
||||
for item_id in existing_ids:
|
||||
match tablename:
|
||||
case "media_file":
|
||||
item_delete(table_name=tablename, item_id=item_id, api_data=api_data, log=logger)
|
||||
case "media_actor_file":
|
||||
item_delete(table_name=tablename, item_id=item_id, api_data=api_data, log=logger)
|
||||
case _:
|
||||
logger.info("Method to remove remaining item not implemented")
|
||||
|
||||
logger.info('kontor.import finished')
|
||||
|
||||
Reference in New Issue
Block a user