about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-06-28 10:32:34 -0500
committerFrederick Muriuki Muriithi2024-06-28 10:32:34 -0500
commit7051fa73c6745033950090436cfd30b02d02ba4f (patch)
tree3c26436aca69d6a313ca3a068d65d88c03dc4a42
parentc8658a764cf30605c6e5a1361dcd09ddd422e371 (diff)
downloadgn-auth-7051fa73c6745033950090436cfd30b02d02ba4f.tar.gz
Enable logging in script.
-rw-r--r--scripts/migrate_existing_data.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/scripts/migrate_existing_data.py b/scripts/migrate_existing_data.py
index 336ce72..1261462 100644
--- a/scripts/migrate_existing_data.py
+++ b/scripts/migrate_existing_data.py
@@ -6,6 +6,7 @@ import sys
 import json
 import time
 import random
+import logging
 from pathlib import Path
 from uuid import UUID, uuid4
 
@@ -24,9 +25,11 @@ from gn_auth.auth.authorisation.resources.groups.models import (
 from gn_auth.auth.authorisation.resources.models import (
     Resource, ResourceCategory, __assign_resource_owner_role__)
 
+
 class DataNotFound(Exception):
     """Raise if no admin user exists."""
 
+
 def sys_admins(conn: authdb.DbConnection) -> tuple[User, ...]:
     """Retrieve all the existing system admins."""
     with authdb.cursor(conn) as cursor:
@@ -38,6 +41,7 @@ def sys_admins(conn: authdb.DbConnection) -> tuple[User, ...]:
         return tuple(User.from_sqlite3_row(row) for row in cursor.fetchall())
     return tuple()
 
+
 def choose_admin(enum_admins: dict[int, User]) -> int:
     """Prompt and read user choice."""
     while True:
@@ -54,6 +58,7 @@ def choose_admin(enum_admins: dict[int, User]) -> int:
                 sys.exit(0)
             print(f"\nERROR: Invalid choice '{choice}'!")
 
+
 def select_sys_admin(admins: tuple[User, ...]) -> User:
     """Pick one admin out of list."""
     if len(admins) > 0:
@@ -67,6 +72,7 @@ def select_sys_admin(admins: tuple[User, ...]) -> User:
     raise DataNotFound(
         "No administrator user found. Create an administrator user first.")
 
+
 def admin_group(conn: authdb.DbConnection, admin: User) -> Group:
     """Retrieve the admin's user group. If none exist, create one."""
     with authdb.cursor(conn) as cursor:
@@ -114,6 +120,7 @@ def admin_group(conn: authdb.DbConnection, admin: User) -> Group:
             cursor, admin, UUID(grp_res["resource_id"]), "group-leader")
         return new_group
 
+
 def __resource_category_by_key__(
         cursor: authdb.DbCursor, category_key: str) -> ResourceCategory:
     """Retrieve a resource category by its ID."""
@@ -128,6 +135,7 @@ def __resource_category_by_key__(
                             row["resource_category_key"],
                             row["resource_category_description"])
 
+
 def __create_resources__(cursor: authdb.DbCursor) -> tuple[Resource, ...]:
     """Create default resources."""
     resources = tuple(Resource(
@@ -147,6 +155,7 @@ def __create_resources__(cursor: authdb.DbCursor) -> tuple[Resource, ...]:
         } for res in resources))
     return resources
 
+
 def default_resources(conn: authdb.DbConnection, group: Group) -> tuple[
         Resource, ...]:
     """Create default resources, or return them if they exist."""
@@ -175,10 +184,12 @@ def default_resources(conn: authdb.DbConnection, group: Group) -> tuple[
             tuple()
         ) for row in rows)
 
+
 def delay():
     """Delay a while: anything from 2 seconds to 15 seconds."""
     time.sleep(random.choice(range(2,16)))
 
+
 def __assigned_mrna__(authconn):
     """Retrieve assigned mRNA items."""
     with authdb.cursor(authconn) as cursor:
@@ -189,6 +200,7 @@ def __assigned_mrna__(authconn):
             (row["SpeciesId"], row["InbredSetId"], row["ProbeFreezeId"],
              row["ProbeSetFreezeId"]) for row in cursor.fetchall())
 
+
 def __unassigned_mrna__(bioconn, assigned):
     """Retrieve unassigned mRNA data items."""
     query = (
@@ -210,6 +222,7 @@ def __unassigned_mrna__(bioconn, assigned):
         cursor.execute(query, tuple(item for row in assigned for item in row))
         return (row for row in cursor.fetchall())
 
+
 def __assign_mrna__(authconn, bioconn, resource, group):
     "Assign any unassigned mRNA data to resource."
     while True:
@@ -238,6 +251,7 @@ def __assign_mrna__(authconn, bioconn, resource, group):
             print(f"-> mRNA: Linked {len(unassigned)}")
             delay()
 
+
 def __assigned_geno__(authconn):
     """Retrieve assigned genotype data."""
     with authdb.cursor(authconn) as cursor:
@@ -268,6 +282,7 @@ def __unassigned_geno__(bioconn, assigned):
         cursor.execute(query, tuple(item for row in assigned for item in row))
         return (row for row in cursor.fetchall())
 
+
 def __assign_geno__(authconn, bioconn, resource, group):
     "Assign any unassigned Genotype data to resource."
     while True:
@@ -296,6 +311,7 @@ def __assign_geno__(authconn, bioconn, resource, group):
             print(f"-> Genotype: Linked {len(unassigned)}")
             delay()
 
+
 def __assigned_pheno__(authconn):
     """Retrieve assigned phenotype data."""
     with authdb.cursor(authconn) as cursor:
@@ -306,6 +322,7 @@ def __assigned_pheno__(authconn):
             row["SpeciesId"], row["InbredSetId"], row["PublishFreezeId"],
             row["PublishXRefId"]) for row in cursor.fetchall())
 
+
 def __unassigned_pheno__(bioconn, assigned):
     """Retrieve all unassigned Phenotype data."""
     query = (
@@ -332,6 +349,7 @@ def __unassigned_pheno__(bioconn, assigned):
         cursor.execute(query, tuple(item for row in assigned for item in row))
         return (row for row in cursor.fetchall())
 
+
 def __assign_pheno__(authconn, bioconn, resource, group):
     """Assign any unassigned Phenotype data to resource."""
     while True:
@@ -360,6 +378,7 @@ def __assign_pheno__(authconn, bioconn, resource, group):
             print(f"-> Phenotype: Linked {len(unassigned)}")
             delay()
 
+
 def assign_data_to_resource(
         authconn, bioconn, resource: Resource, group: Group):
     """Assign existing data, not linked to any group to the resource."""
@@ -371,6 +390,7 @@ def assign_data_to_resource(
     return assigner_fns[resource.resource_category.resource_category_key](
         authconn, bioconn, resource, group)
 
+
 def entry(authdbpath, mysqldburi):
     """Entry-point for data migration."""
     if not Path(authdbpath).exists():
@@ -394,12 +414,18 @@ def entry(authdbpath, mysqldburi):
         print(dnf.args[0], file=sys.stderr)
         sys.exit(1)
 
+
 @click.command()
 @click.argument("authdbpath") # "Path to the Auth(entic|oris)ation database"
 @click.argument("mysqldburi") # "URI to the MySQL database with the biology data"
-def run(authdbpath, mysqldburi):
+@click.option("--loglevel", default="WARNING", show_default=True,
+              type=click.Choice(["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"]))
+def run(authdbpath, mysqldburi, loglevel):
     """Setup command-line arguments."""
+    globallogger = logging.getLogger()
+    globallogger.setLevel(loglevel)
     entry(authdbpath, mysqldburi)
 
+
 if __name__ == "__main__":
     run() # pylint: disable=[no-value-for-parameter]