diff --git a/pype/ftrack/ftrack_server/event_server_cli.py b/pype/ftrack/ftrack_server/event_server_cli.py index 6c8bc62a73..a466bf5723 100644 --- a/pype/ftrack/ftrack_server/event_server_cli.py +++ b/pype/ftrack/ftrack_server/event_server_cli.py @@ -1,112 +1,105 @@ -import os -import json -import appdirs -import ftrack_api +import sys +from pype.ftrack import credentials from pype.ftrack.ftrack_server import FtrackServer from app import api log = api.Logger.getLogger(__name__, "ftrack-event-server-cli") +possible_yes = ['y', 'yes'] +possible_no = ['n', 'no'] +possible_third = ['a', 'auto'] +possible_exit = ['exit'] -def check_cred(user, key): - os.environ["FTRACK_API_USER"] = user - os.environ["FTRACK_API_KEY"] = key - try: - session = ftrack_api.Session() - session.close() +def ask_yes_no(third=False): + msg = "Y/N:" + if third: + msg = "Y/N/AUTO:" + log.info(msg) + response = input().lower() + if response in possible_exit: + sys.exit() + elif response in possible_yes: return True - except Exception: - return False - - -def ask_yes_no(): - possible_yes = ["y", "yes"] - possible_no = ["n", "no"] - log.info("Y/N:") - cont = input() - if cont.lower() in possible_yes: - return True - elif cont.lower() in possible_no: + elif response in possible_no: return False else: + all_entries = possible_no + all_entries.extend(possible_yes) + if third is True: + if response in possible_third: + return 'auto' + else: + all_entries.extend(possible_third) + all_entries.extend(possible_exit) + all_entries = ', '.join(all_entries) log.info( - "Invalid input. Possible entries: [y, yes, n, no]. Try it again:" + 'Invalid input. Possible entries: [{}]. Try it again:'.foramt( + all_entries + ) ) return ask_yes_no() def cli_login(): - config_path = os.path.normpath(appdirs.user_data_dir('pype-app', 'pype')) - config_name = 'ftrack_event_cred.json' - event_credentials_file = os.path.join(config_path, config_name) - - if not os.path.isdir(config_path): - os.makedirs(config_path) - if not os.path.exists(event_credentials_file): - open(event_credentials_file, 'w').close() enter_cred = True + cred_data = credentials._get_credentials(True) - with open(event_credentials_file, 'r') as fp: - try: - cred_data = json.load(fp) - except Exception: - cred_data = {} - - user = cred_data.get("FTRACK_API_USER", None) - key = cred_data.get("FTRACK_API_KEY", None) - auto = cred_data.get("AUTO_CONNECT", False) + user = cred_data.get('username', None) + key = cred_data.get('apiKey', None) + auto = cred_data.get('auto_connect', False) if user is None or key is None: - log.info("Credentials are not set. Do you want to enter them now? (Y/N)") + log.info( + 'Credentials are not set. Do you want to enter them now? (Y/N)' + ) if ask_yes_no() is False: log.info("Exiting...") return - elif check_cred(user, key): + elif credentials._check_credentials(user, key): if auto is False: - log.info("Do you want to log with username {}? (Y/N)".format( - cred_data["FTRACK_API_USER"] + log.info(( + 'Do you want to log with username {}' + ' enter "auto" if want to autoconnect next time (Y/N/AUTO)' + ).format( + user )) - if ask_yes_no(): + result = ask_yes_no(True) + if result is True: + enter_cred = False + elif result == 'auto': + credentials._save_credentials(user, key, True, True) enter_cred = False else: enter_cred = False else: log.info( - "Stored credentials are not valid. " - "Do you want enter them now?(Y/N)" + 'Stored credentials are not valid.' + ' Do you want enter them now?(Y/N)' ) if ask_yes_no() is False: log.info("Exiting...") return while enter_cred: - log.info("Please enter Ftrack API User:") + log.info('Please enter Ftrack API User:') user = input() - log.info("And now enter Ftrack API Key:") + log.info('And now enter Ftrack API Key:') key = input() - if check_cred(user, key): - export = { - "FTRACK_API_USER": user, - "FTRACK_API_KEY": key - } + if credentials._check_credentials(user, key): log.info( - "Credentials are valid." - " Do you want to auto-connect next time?(Y/N)" + 'Credentials are valid.' + ' Do you want to auto-connect next time?(Y/N)' ) - if ask_yes_no(): - export["AUTO_CONNECT"] = True - - with open(event_credentials_file, 'w') as fp: - json.dump(export, fp) + credentials._save_credentials(user, key, True, ask_yes_no()) enter_cred = False break else: log.info( - "Entered credentials are not valid." - " Do you want to try it again?(Y/N)" + 'Entered credentials are not valid.' + ' Do you want to try it again?(Y/N)' ) if ask_yes_no() is False: - log.info("Exiting...") + log.info('Exiting...') return server = FtrackServer('event')