From 403dce43730cac0bcbfd8e8a98546507999523fb Mon Sep 17 00:00:00 2001 From: fly <merspieler@airmail.cc> Date: Thu, 25 Jun 2020 01:17:54 +1000 Subject: [PATCH] import-progress.py Signed-off-by: fly <merspieler@airmail.cc> --- import-progress.py | 100 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 import-progress.py diff --git a/import-progress.py b/import-progress.py new file mode 100755 index 0000000..f36c942 --- /dev/null +++ b/import-progress.py @@ -0,0 +1,100 @@ +#! /usr/bin/python3 +# Copyright (C) 2018-2020 Merspieler, merspieler _at_ airmail.cc +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +import sys +import json +import os +import pymysql + +from common import norm + +verbose = False +dbuser = "" +dbpw = "" +fname = "" + +argc = len(sys.argv) +i = 1 +while i < argc: + if sys.argv[i] == "--port": + i += 1 + port = int(sys.argv[i]) + elif sys.argv[i] == "--host": + i += 1 + host = sys.argv[i] + elif sys.argv[i] == "-f" or sys.argv[i] == "--file": + i += 1 + fname = sys.argv[i] + elif sys.argv[i] == "-u" or sys.argv[i] == "--user": + i += 1 + dbuser = sys.argv[i] + elif sys.argv[i] == "-p" or sys.argv[i] == "--password": + i += 1 + dbpw = sys.argv[i] + elif sys.argv[i] == "-v": + verbose = True + elif sys.argv[i] == "-h" or sys.argv[i] == "--help": + print("usage: import-progress.py [OPTIONS]") + print("Imports the procgress from a json file") + print("") + print("OPTIONS") + print(" -f, --file Input file") + print(" -u, --user Database user") + print(" -p, --password Database password") + print(" -v, --verbose Verbose printouts") + print(" -h, --help Shows this help and exit") + sys.exit(0) + else: + print("Unknown option " + sys.argv[i]) + sys.exit(1) + i += 1 + +if dbuser == "": + print("ERROR: No database user given") + sys.exit(1) + +if dbpw == "": + print("ERROR: No database password given") + sys.exit(1) + +if fname == "": + print("ERROR: No file name given") + sys.exit(1) + +db = pymysql.connect("localhost", dbuser, dbpw, "worldbuild") + +cursor = db.cursor() + +try: + with open(fname) as json_data: + status = json.load(json_data) +except ValueError: + print("ERROR: Invalid status file") + sys.exit(1) +except IOError: + print("ERROR: Unable to read file") + sys.exit(1) + +for top in status: + if isinstance(status[top], dict): + for second in status[top]: + if isinstance(status[top][second], dict) and "status" in status[top][second]: + sql = "UPDATE secondLevel SET status_id = (SELECT id FROM status WHERE name = '" + status[top][second]["status"] + "') WHERE name = '" + second + "'" + cursor.execute(sql) + if verbose: + print("Imported " + second + " as " + status[top][second]["status"]) +db.commit()