mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
cli event server works with credentials module and few more possibilities on entry were added
This commit is contained in:
parent
e5107d4dab
commit
d8106a56e9
1 changed files with 57 additions and 64 deletions
|
|
@ -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')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue