libs.functions.tools.unification
libs/functions/tools/unification.py
1""" 2libs/functions/tools/unification.py 3""" 4 5import configparser 6import logging 7 8import libs.global_value as g 9from libs.data import modify 10from libs.functions import configuration 11from libs.utils import dbutil, textutil, validator 12 13 14def main(): 15 """ゲストメンバーの名前を統一する""" 16 rename_conf = configparser.ConfigParser() 17 rename_conf.read(g.args.unification, encoding="utf-8") 18 configuration.read_memberslist(False) 19 20 modify.db_backup() 21 if "rename" in rename_conf.sections(): 22 name_table: dict = {} 23 for name, alias in rename_conf["rename"].items(): 24 name_table.setdefault(name, [x.strip() for x in alias.split(",")]) 25 26 db = dbutil.get_connection() 27 for name, alias_list in name_table.items(): 28 count = 0 29 chk, msg = validator.check_namepattern(name, "member") 30 if chk: 31 for alias in alias_list: 32 chk, msg = validator.check_namepattern(alias, "member") 33 if chk: 34 db.execute("update result set p1_name=? where p1_name=?;", (name, alias,)) 35 count += db.execute("select changes();").fetchone()[0] 36 db.execute("update result set p2_name=? where p2_name=?;", (name, alias,)) 37 count += db.execute("select changes();").fetchone()[0] 38 db.execute("update result set p3_name=? where p3_name=?;", (name, alias,)) 39 count += db.execute("select changes();").fetchone()[0] 40 db.execute("update result set p4_name=? where p4_name=?;", (name, alias,)) 41 count += db.execute("select changes();").fetchone()[0] 42 db.execute("update remarks set name=? where name=?;", (name, alias,)) 43 count += db.execute("select changes();").fetchone()[0] 44 else: 45 logging.warning("remove: %s -> %s (%s)", name, alias, msg) 46 alias_list.remove(alias) 47 continue 48 logging.notice("rename: %s -> %s changed: %s", alias_list, name, count) # type: ignore 49 else: 50 logging.warning("skip: %s (%s)", name, msg) 51 continue 52 db.commit() 53 db.close() 54 else: 55 db = dbutil.get_connection() 56 for alias, name in g.member_list.items(): 57 check_list: list = [ 58 textutil.str_conv(name, "k2h"), 59 textutil.str_conv(name, "h2k"), 60 textutil.str_conv(alias, "k2h"), 61 textutil.str_conv(alias, "h2k"), 62 ] 63 for check in list(set(check_list)): 64 if check == name: 65 continue 66 rows = db.execute("select ts, p1_name, p2_name, p3_name, p4_name from result where ? in (p1_name, p2_name, p3_name, p4_name);", (check,)) 67 for row in rows: 68 match check: 69 case check if check == row["p1_name"]: 70 logging.notice("ts=%s, p1_name(%s -> %s)", row["ts"], check, name) # type: ignore 71 db.execute("update result set p1_name=? where p1_name=? and ts=?;", (name, check, row["ts"])) 72 case check if check == row["p2_name"]: 73 logging.notice("ts=%s, p2_name(%s -> %s)", row["ts"], check, name) # type: ignore 74 db.execute("update result set p2_name=? where p2_name=? and ts=?;", (name, check, row["ts"])) 75 case check if check == row["p3_name"]: 76 logging.notice("ts=%s, p3_name(%s -> %s)", row["ts"], check, name) # type: ignore 77 db.execute("update result set p3_name=? where p3_name=? and ts=?;", (name, check, row["ts"])) 78 case check if check == row["p4_name"]: 79 logging.notice("ts=%s, p4_name(%s -> %s)", row["ts"], check, name) # type: ignore 80 db.execute("update result set p4_name=? where p4_name=? and ts=?;", (name, check, row["ts"])) 81 82 db.commit() 83 db.close()
def
main():
15def main(): 16 """ゲストメンバーの名前を統一する""" 17 rename_conf = configparser.ConfigParser() 18 rename_conf.read(g.args.unification, encoding="utf-8") 19 configuration.read_memberslist(False) 20 21 modify.db_backup() 22 if "rename" in rename_conf.sections(): 23 name_table: dict = {} 24 for name, alias in rename_conf["rename"].items(): 25 name_table.setdefault(name, [x.strip() for x in alias.split(",")]) 26 27 db = dbutil.get_connection() 28 for name, alias_list in name_table.items(): 29 count = 0 30 chk, msg = validator.check_namepattern(name, "member") 31 if chk: 32 for alias in alias_list: 33 chk, msg = validator.check_namepattern(alias, "member") 34 if chk: 35 db.execute("update result set p1_name=? where p1_name=?;", (name, alias,)) 36 count += db.execute("select changes();").fetchone()[0] 37 db.execute("update result set p2_name=? where p2_name=?;", (name, alias,)) 38 count += db.execute("select changes();").fetchone()[0] 39 db.execute("update result set p3_name=? where p3_name=?;", (name, alias,)) 40 count += db.execute("select changes();").fetchone()[0] 41 db.execute("update result set p4_name=? where p4_name=?;", (name, alias,)) 42 count += db.execute("select changes();").fetchone()[0] 43 db.execute("update remarks set name=? where name=?;", (name, alias,)) 44 count += db.execute("select changes();").fetchone()[0] 45 else: 46 logging.warning("remove: %s -> %s (%s)", name, alias, msg) 47 alias_list.remove(alias) 48 continue 49 logging.notice("rename: %s -> %s changed: %s", alias_list, name, count) # type: ignore 50 else: 51 logging.warning("skip: %s (%s)", name, msg) 52 continue 53 db.commit() 54 db.close() 55 else: 56 db = dbutil.get_connection() 57 for alias, name in g.member_list.items(): 58 check_list: list = [ 59 textutil.str_conv(name, "k2h"), 60 textutil.str_conv(name, "h2k"), 61 textutil.str_conv(alias, "k2h"), 62 textutil.str_conv(alias, "h2k"), 63 ] 64 for check in list(set(check_list)): 65 if check == name: 66 continue 67 rows = db.execute("select ts, p1_name, p2_name, p3_name, p4_name from result where ? in (p1_name, p2_name, p3_name, p4_name);", (check,)) 68 for row in rows: 69 match check: 70 case check if check == row["p1_name"]: 71 logging.notice("ts=%s, p1_name(%s -> %s)", row["ts"], check, name) # type: ignore 72 db.execute("update result set p1_name=? where p1_name=? and ts=?;", (name, check, row["ts"])) 73 case check if check == row["p2_name"]: 74 logging.notice("ts=%s, p2_name(%s -> %s)", row["ts"], check, name) # type: ignore 75 db.execute("update result set p2_name=? where p2_name=? and ts=?;", (name, check, row["ts"])) 76 case check if check == row["p3_name"]: 77 logging.notice("ts=%s, p3_name(%s -> %s)", row["ts"], check, name) # type: ignore 78 db.execute("update result set p3_name=? where p3_name=? and ts=?;", (name, check, row["ts"])) 79 case check if check == row["p4_name"]: 80 logging.notice("ts=%s, p4_name(%s -> %s)", row["ts"], check, name) # type: ignore 81 db.execute("update result set p4_name=? where p4_name=? and ts=?;", (name, check, row["ts"])) 82 83 db.commit() 84 db.close()
ゲストメンバーの名前を統一する