haldis/app/database/create_database.py

92 lines
2.8 KiB
Python
Raw Normal View History

2019-09-09 23:19:21 +02:00
"Script for interaction and changes to the database"
2019-09-08 02:02:16 +02:00
import add_admins
import add_fitchen
import add_oceans_garden
import add_primadonna
import add_simpizza
2019-09-11 04:10:24 +02:00
from app import db, create_app
2019-06-28 18:57:41 +02:00
entry_sets = {
"Admins": add_admins.add,
"Ocean's Garden": add_oceans_garden.add,
"SimPizza": add_simpizza.add,
"Primadonna": add_primadonna.add,
2019-09-05 03:33:29 +02:00
"Fitchen": add_fitchen.add,
2019-06-28 18:57:41 +02:00
}
yes = ["yes", "y", "Y"]
no = ["no", "n", "N"]
2019-09-07 15:05:24 +02:00
def commit() -> None:
2019-09-09 23:19:21 +02:00
"Commit all the things to the database"
db.session.commit()
print("Committing successful")
2019-09-07 15:05:24 +02:00
def check_if_overwrite() -> bool:
2019-09-09 23:19:21 +02:00
"Check if the user wants to overwrite the previous database"
2018-03-09 00:59:14 +01:00
answer = input("Do you want to overwrite the previous database? (y/N) ")
return answer in yes
2019-09-07 15:05:24 +02:00
def add_all() -> None:
2019-09-09 23:19:21 +02:00
"Add all possible entries in the entry_sets to the database"
for entry_set, function in entry_sets.items():
2015-04-04 14:26:09 +02:00
print("Adding {}.".format(entry_set))
2019-09-09 23:19:21 +02:00
function()
2019-09-07 15:05:24 +02:00
def recreate_from_scratch() -> None:
2019-09-09 23:19:21 +02:00
"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!"
2019-09-09 23:19:21 +02:00
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()
2019-09-07 15:05:24 +02:00
def add_to_current() -> None:
2019-09-09 23:19:21 +02:00
"Add things to the current database"
2015-04-04 14:26:09 +02:00
available = [entry_set for entry_set in entry_sets]
2019-09-07 15:05:24 +02:00
def add_numbers() -> str:
2019-09-05 03:33:29 +02:00
return " ".join(
["{}({}), ".format(loc, i) for i, loc in enumerate(available)]
).rstrip(", ")
2018-03-09 00:59:14 +01:00
while input("Do you still want to add something? (Y/n) ") not in no:
2019-09-09 23:19:21 +02:00
print("What do you want to add? (Use numbers, or A for all, or C for cancel) ") # pylint: disable=C0301
2018-03-09 00:59:14 +01:00
answer = input("Available: {} : ".format(add_numbers()))
if answer == "A":
add_all()
available = []
elif answer == "C":
pass
2019-09-09 23:19:21 +02:00
elif answer.isnumeric() and answer in [str(x) for x in range(len(available))]: # pylint: disable=C0301
2019-09-07 15:05:24 +02:00
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!")
2019-09-11 04:10:24 +02:00
manager = create_app()
2019-09-11 04:10:24 +02:00
@manager.command
2019-09-09 23:19:21 +02:00
def setup_database(): #type: None
"Start the database interaction script"
2019-09-05 03:33:29 +02:00
print("Database modification script!")
print("=============================\n\n")
if check_if_overwrite():
recreate_from_scratch()
else:
add_to_current()
2015-04-04 14:36:19 +02:00
commit()
2019-09-11 04:10:24 +02:00
manager.run()