cli event server works with credentials module and few more possibilities on entry were added

This commit is contained in:
Jakub Trllo 2019-03-01 18:48:21 +01:00
parent e5107d4dab
commit d8106a56e9

View file

@ -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')