From 4af62cbacaae5975990972268b166558123cf310 Mon Sep 17 00:00:00 2001 From: _iEpic Date: Fri, 18 Mar 2022 23:59:10 -0400 Subject: [PATCH] Added basic Import functions --- app/classes/models/users.py | 1 + app/classes/shared/command.py | 5 ++-- app/classes/shared/import3.py | 45 +++++++++++++++++++++++++---------- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/app/classes/models/users.py b/app/classes/models/users.py index b99a53fc..6027c2b9 100644 --- a/app/classes/models/users.py +++ b/app/classes/models/users.py @@ -172,6 +172,7 @@ class helper_users: Users.superuser: superuser, Users.created: helper.get_time_as_string() }).execute() + return user_id @staticmethod def update_user(user_id, up_data=None): diff --git a/app/classes/shared/command.py b/app/classes/shared/command.py index 9acba552..5306b8e5 100644 --- a/app/classes/shared/command.py +++ b/app/classes/shared/command.py @@ -59,8 +59,7 @@ class MainPrompt(cmd.Cmd): else: print(f'Name: {thread.name} Identifier: {thread.ident}') - @staticmethod - def do_import3(): + def do_import3(self, _line): import3.start_import() def universal_exit(self): @@ -83,4 +82,4 @@ class MainPrompt(cmd.Cmd): @staticmethod def help_import3(): - console.help("Import users and servers from Crafty 3") \ No newline at end of file + console.help("Import users and servers from Crafty 3") diff --git a/app/classes/shared/import3.py b/app/classes/shared/import3.py index 8c451492..593a6e25 100644 --- a/app/classes/shared/import3.py +++ b/app/classes/shared/import3.py @@ -1,33 +1,54 @@ import json import os -import console import logging logger = logging.getLogger(__name__) from app.classes.controllers.users_controller import users_helper from app.classes.shared.main_controller import Controller +from app.classes.shared.console import console class import3: + + def __init__(self): + self.controller = Controller() + def start_import(self): folder = os.path.normpath(input("Please input the path to the migrations folder in your installation of Crafty 3: ")) if not os.path.exists(folder): - console.log("Crafty cannot find the path you entered. Does Crafty's user have permission to access it?") - console.log("Please run the import3 command again and enter a valid path.") + console.info("Crafty cannot find the path you entered. Does Crafty's user have permission to access it?") + console.info("Please run the import3 command again and enter a valid path.") else: with open (os.path.join(folder, "users.json")) as f: - user_json = json.load(f.read()) + user_json = json.loads(f.read()) with open (os.path.join(folder, "mc_settings.json")) as f: - servers_json = json.load(f.read()) + servers_json = json.loads(f.read()) self.import_users(user_json) - self.import_servers(servers_json) + self.import_servers(servers_json, self.controller) @staticmethod def import_users(json_data): - for user in json_data: - users_helper.add_rawpass_user(user.username, user.password) - console.log(f"Imported user {user.username} from Crafty 3") - logger.info(f"Imported user {user.username} from Crafty 3") + # If there is only one user to import json needs to call the data differently + if isinstance(json_data, list): + for user in json_data: + users_helper.add_rawpass_user(user['username'], user['password']) + console.info(f"Imported user {user['username']} from Crafty 3") + logger.info(f"Imported user {user['username']} from Crafty 3") + else: + console.info("There is only one user detected. Cannot create duplicate Admin account.") + logger.info("There is only one user detected. Cannot create duplicate Admin account.") @staticmethod - def import_servers(json_data): - return \ No newline at end of file + def import_servers(json_data, controller): + # If there is only one server to import json needs to call the data differently + if isinstance(json_data, list): + for server in json_data: + new_server_id = controller.import_jar_server(server_name=server['server_name'], server_path=server['server_path'], server_jar=server['server_jar'], min_mem=int(server['memory_min']), max_mem=int(server['memory_max']), port=server['server_port']) + console.info(f"Imported server {server['server_name']}[{server['id']}] from Crafty 3 to new server id {new_server_id}") + logger.info(f"Imported server {server['server_name']}[{server['id']}] from Crafty 3 to new server id {new_server_id}") + else: + new_server_id = controller.import_jar_server(server_name=json_data['server_name'], server_path=json_data['server_path'], server_jar=json_data['server_jar'], min_mem=int(json_data['memory_min']), max_mem=int(json_data['memory_max']), port=json_data['server_port']) + console.info(f"Imported server {json_data['server_name']}[{json_data['id']}] from Crafty 3 to new server id {new_server_id}") + logger.info(f"Imported server {json_data['server_name']}[{json_data['id']}] from Crafty 3 to new server id {new_server_id}") + + +import3 = import3()