diff --git a/console/application/function.py b/console/application/function.py index 9ca18e9..5cbc03a 100644 --- a/console/application/function.py +++ b/console/application/function.py @@ -23,7 +23,7 @@ from OpenSSL import crypto import shlex from sudsds import MethodNotFound from calculate.core.server.cert_cmd import getHwAddr, getIpLocal -from calculate.core.server.replace_class import printTable +from calculate.core.server.replace_class import printTable,Methods from calculate.core.client.progressbar import Bar,Percentage,ETA,ProgressBar from calculate.lib.cl_lang import setLocalTranslate @@ -358,7 +358,11 @@ def analysis(client, sid, s): def get_message(client, item, sid, pid): """ get one message by its type """ for case in switch(item.type): - if case('normal') or case('plain'): + if case('normal'): + if item.message: + Methods().printSUCCESS(item.message) + return 1 + if case('plain'): # sys.stdout.flush() # sys.stdout.write('\x1b[1;33m' + item.message + '\033[0m') if item.message: @@ -366,6 +370,17 @@ def get_message(client, item, sid, pid): print p.sub('', item.message) # print item.message return 1 + if case('pre'): + Methods().printPre(item.message) + return 1 + if case('choice'): + message,answers = item.message.split('|') + answers = map(lambda x:(x[0],x[1].strip(')')), + map(lambda x:x.split('('), + answers.split(','))) + answer = Methods().askChoice(message,answers) + client.service.send_message(sid, pid, answer) + return 1 if case('progress'): if not client.no_progress: get_Progress(client, sid, pid, item.id) @@ -387,6 +402,9 @@ def get_message(client, item, sid, pid): if case('question'): send_Message(client, sid, pid, item) return 1 + if case('confirm'): + send_Confirm(client, sid, pid, item) + return 1 if case('password'): send_Password(client, sid, pid, item) return 1 @@ -547,8 +565,26 @@ def get_Table(client, sid, pid, item): table = client.service.get_table(sid, pid, item.id) show_table(table, item) +def send_Confirm(client,sid,pid,item): + print + ask = "" + while not ask: + try: + ask = raw_input(item.message+ '(yes/no): ') + except KeyboardInterrupt: + ask = 'no' + print + if ask.lower() in ['n', 'no']: + ask = "no" + elif ask.lower() in ['y', 'yes']: + ask = "yes" + else: + ask = "" + client.service.send_message(sid, pid, ask) + def send_Message(client, sid, pid, item): """ send answer to the question """ + print answer = raw_input (item.message) client.service.send_message(sid, pid, answer) # show_result(result) diff --git a/console/application/methods_func.py b/console/application/methods_func.py index e66f97d..89e6ce7 100644 --- a/console/application/methods_func.py +++ b/console/application/methods_func.py @@ -126,51 +126,54 @@ def call_method(client, args, unknown_args, wait_thread): sys.stdout.flush() _print (_('Unknown parameter'), i) raise Exception(1) - param_object, steps = collect_object(client, param_object, view, args, - wait_thread,stdin_passwd=stdin_passwd) - if steps.label and hasattr (param_object, 'CheckOnly'): - param_object['CheckOnly'] = True - check_res = {} - while True: - method_result = client.service[0][method](client.sid,param_object) - if not method_result: - print _('Method not available') - return None - if method_result.ReturnedMessage[0].type and \ - method_result.ReturnedMessage[0].type != "pid": - wait_thread.stop() - - check_res = check_result_msg(method_result, view, check_res) - if not check_res: - return None - else: - param_object = get_param_pwd(check_res, view, - param_object, client) - else: - break - - view_params = get_view_params(client, method + '_view', step = None, \ - expert = True, brief = True) - view = get_view(client, method, client.sid, view_params) - wait_thread.stop() - sys.stdout.write('\r') - sys.stdout.flush() - print_brief(view, steps.label) - if not no_questions: + if not view.groups is None: + param_object, steps = collect_object(client, param_object, view, args, + wait_thread,stdin_passwd=stdin_passwd) + if steps.label and hasattr (param_object, 'CheckOnly'): + param_object['CheckOnly'] = True + check_res = {} while True: - try: - ask = raw_input('\n' + _('Run the process? (yes/no): ')) - red = '\033[31m * \033[0m' - except KeyboardInterrupt: - ask = 'no' - red = '\n'+'\033[31m * \033[0m' - if ask.lower() in ['n', 'no']: - print red + _("Manually interrupted") + method_result = client.service[0][method](client.sid,param_object) + if not method_result: + print _('Method not available') return None - if ask.lower() in ['y', 'yes']: + if method_result.ReturnedMessage[0].type and \ + method_result.ReturnedMessage[0].type != "pid": + wait_thread.stop() + + check_res = check_result_msg(method_result, view, check_res) + if not check_res: + return None + else: + param_object = get_param_pwd(check_res, view, + param_object, client) + else: break - param_object['CheckOnly'] = False + view_params = get_view_params(client, method + '_view', step = None, \ + expert = True, brief = True) + view = get_view(client, method, client.sid, view_params) + wait_thread.stop() + sys.stdout.write('\r') + sys.stdout.flush() + print_brief(view, steps.label) + if not no_questions: + while True: + try: + ask = raw_input('\n' + _('Run the process? (yes/no): ')) + red = '\033[31m * \033[0m' + except KeyboardInterrupt: + ask = 'no' + red = '\n'+'\033[31m * \033[0m' + if ask.lower() in ['n', 'no']: + print red + _("Manually interrupted") + return None + if ask.lower() in ['y', 'yes']: + break + + param_object['CheckOnly'] = False + else: + param_object = {} method_result = client.service[0][method](client.sid, param_object) if not method_result: print _('Method not available')