"Script for interaction and changes to the database" import add_admins import add_fitchen import add_oceans_garden import add_primadonna import add_simpizza from app import db, create_app entry_sets = { "Admins": add_admins.add, "Ocean's Garden": add_oceans_garden.add, "SimPizza": add_simpizza.add, "Primadonna": add_primadonna.add, "Fitchen": add_fitchen.add, } yes = ["yes", "y", "Y"] no = ["no", "n", "N"] def commit() -> None: "Commit all the things to the database" db.session.commit() print("Committing successful") def check_if_overwrite() -> bool: "Check if the user wants to overwrite the previous database" answer = input("Do you want to overwrite the previous database? (y/N) ") return answer in yes def add_all() -> None: "Add all possible entries in the entry_sets to the database" for entry_set, function in entry_sets.items(): print("Adding {}.".format(entry_set)) function() def recreate_from_scratch() -> None: "Recreate a completely new database" confirmation = "Are you very very sure? (Will delete previous entries!) (y/N) " # pylint: disable=C0301 check = "I acknowledge any repercussions!" if input(confirmation) in yes and input("Type: '{}' ".format(check)) == check: # pylint: disable=C0301 print("Resetting the database!") db.drop_all() db.create_all() add_to_current() def add_to_current() -> None: "Add things to the current database" available = [entry_set for entry_set in entry_sets] def add_numbers() -> str: return " ".join( ["{}({}), ".format(loc, i) for i, loc in enumerate(available)] ).rstrip(", ") while input("Do you still want to add something? (Y/n) ") not in no: print("What do you want to add? (Use numbers, or A for all, or C for cancel) ") # pylint: disable=C0301 answer = input("Available: {} : ".format(add_numbers())) if answer == "A": add_all() available = [] elif answer == "C": pass elif answer.isnumeric() and answer in [str(x) for x in range(len(available))]: # pylint: disable=C0301 answer_index = int(answer) print("Adding {}.".format(available[answer_index])) entry_sets[str(available[answer_index])]() del available[answer_index] else: print("Not a valid answer.") print("Thank you for adding, come again!") manager = create_app() @manager.command def setup_database(): #type: None "Start the database interaction script" print("Database modification script!") print("=============================\n\n") if check_if_overwrite(): recreate_from_scratch() else: add_to_current() commit() manager.run()