diff --git a/console/application/function.py b/console/application/function.py index d6de57b..0e6f548 100644 --- a/console/application/function.py +++ b/console/application/function.py @@ -21,6 +21,7 @@ import termios import subprocess from OpenSSL import crypto import shlex +from calculate.lib.utils.colortext import get_terminal_print from sudsds import MethodNotFound from calculate.core.server.cert_cmd import getHwAddr, getIpLocal from calculate.core.server.replace_class import printTable,Methods @@ -271,17 +272,17 @@ def show_table(table, item): def show_error(item): if item.message: for line in item.message.splitlines(): - colorPrint.printERROR(line) + Methods().printERROR(line) def show_warning(item): if item.message: for line in item.message.splitlines(): - colorPrint.printWARNING(line) + Methods().printWARNING(line) def show_group(item): if item.message: for line in item.message.splitlines(): - colorPrint._printSUCCESS(line) + Methods().printSUCCESS(line) def show_result(result): pass @@ -289,12 +290,18 @@ def show_result(result): def startTask(item): if item.message: for line in item.message.splitlines(): - colorPrint._printSUCCESS(line) + Methods().printSUCCESS(line) + #colorPrint._printSUCCESS(line) def endTask(item): - if item.message: - for line in item.message.splitlines(): - colorPrint._printSUCCESS(line) + if item.result is None: + result = item.message + else: + result = item.result + methods = Methods() + methods.terminal_print.up(1)('\r') + Methods().displayResult(result) + def beginFrame(item): pass @@ -303,9 +310,10 @@ def endFrame(item): pass def startGroup(item): - pass + if item.message: + Methods().startGroup(item.message) -def endGruop(item): +def endGroup(item): pass def _create_obj(client, method): @@ -363,22 +371,19 @@ def get_message(client, item, sid, pid): 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: - p = re.compile(r'|') - print p.sub('', item.message) -# print item.message + Methods().printDefault(item.message) return 1 if case('pre'): - Methods().printPre(item.message) + if item.message: + 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) + 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'): @@ -424,7 +429,7 @@ def get_message(client, item, sid, pid): startGroup(item) return 1 if case('endGruop'): - endGruop(item) + endGroup(item) return 1 if case('briefParams'): callView(client, item, sid) @@ -458,9 +463,6 @@ def get_entire_frame(client, pid): if not pid in list_pid.integer: print \ _('The process does not exist or does not belong to your session') -# if list_pid[0] == [0]: -# return 0 -# for pid in list_pid[0]: end_frame = 1 while end_frame: current_frame = client.service.get_entire_frame(sid, pid) @@ -470,10 +472,10 @@ def get_entire_frame(client, pid): for item in current_frame[0]: end_frame = get_message(client, item, sid, pid) + def get_Progress(client, sid, pid, id): - widgets = ['','', Bar(), '', Percentage(),' ', ETA()] + widgets = ['', '', Bar(), '', Percentage(), ' ', ETA()] pbar = ProgressBar(widgets=widgets, maxval=100) - # maybe do something pbar.start() """ get progress for the current job """ @@ -481,28 +483,30 @@ def get_Progress(client, sid, pid, id): temp_progress = -1 last_message = '' percent = returnProgr.percent - while percent <= 100 and percent >= 0: - if temp_progress != percent: - last_message = print_progressbar(returnProgr, pbar, - last_msg = last_message) -# pbar.update(returnProgr.percent) - if percent == 100: - print - return - temp_progress = percent + try: + while percent <= 100 and percent >= 0: + if temp_progress != percent: + last_message = print_progressbar(returnProgr, pbar, + last_msg=last_message) + if percent == 100: + return + temp_progress = percent + else: + pbar.update(percent) + time.sleep(1) + returnProgr = client.service.get_progress(sid, pid, id) + percent = returnProgr.percent + if percent < 0: + pbar.update(0) + pbar.finish() else: - pbar.update(percent) - time.sleep(1) - returnProgr = client.service.get_progress(sid, pid, id) - percent = returnProgr.percent - if percent < 0: -# print_progress(returnProgr, error = True) - pbar.update(0)# - returnProgr.percent) - pbar.finish() - else: -# print_progress(returnProgr) - pbar.update(100)#returnProgr.percent) - pbar.finish() + pbar.update(100) + pbar.finish() + finally: + terminal_print = \ + get_terminal_print(color_print().defaultPrint) + terminal_print.up(1).clear_line("") + #terminal_print.up(1)("") def cout_progress(string): h,w=array('h', ioctl(sys.stderr,termios.TIOCGWINSZ,'\0'*8))[:2] @@ -566,20 +570,7 @@ def get_Table(client, sid, pid, item): show_table(table, item) def send_Confirm(client,sid,pid,item): - print - ask = "" - while not ask and not client.no_questions: - 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 = "" + ask = Methods().askConfirm(item.message, item.default or "") client.service.send_message(sid, pid, ask) def send_Message(client, sid, pid, item):