From 2f7e022288c45489cc00eefe039749790cf318b3 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 23 May 2022 16:28:55 +0000 Subject: [PATCH] twview: improve age_fmt handling --- mmgen/tool/rpc.py | 1 + mmgen/tw/common.py | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mmgen/tool/rpc.py b/mmgen/tool/rpc.py index 6098c9ca..5976061b 100755 --- a/mmgen/tool/rpc.py +++ b/mmgen/tool/rpc.py @@ -99,6 +99,7 @@ class tool_cmd(tool_cmd_base): async def twops(self, obj,pager,reverse,wide,sort,age_fmt,show_mmid,wide_show_confs,interactive): + obj.interactive = interactive obj.reverse = reverse obj.age_fmt = age_fmt obj.show_mmid = show_mmid diff --git a/mmgen/tw/common.py b/mmgen/tw/common.py index 983e416c..d4050b26 100755 --- a/mmgen/tw/common.py +++ b/mmgen/tw/common.py @@ -38,6 +38,7 @@ class TwCommon: reverse = False group = False sort_key = 'age' + interactive = False age_fmts = ('confs','block','days','date','date_time') age_fmts_date_dependent = ('days','date','date_time') @@ -45,9 +46,13 @@ class TwCommon: _age_fmt = 'confs' date_formatter = { - 'days': lambda rpc,secs: (rpc.cur_date - secs) // 86400, - 'date': lambda rpc,secs: '{}-{:02}-{:02}'.format(*time.gmtime(secs)[:3])[2:], - 'date_time': lambda rpc,secs: '{}-{:02}-{:02} {:02}:{:02}'.format(*time.gmtime(secs)[:5]), + 'days': lambda rpc,secs: (rpc.cur_date - secs) // 86400 if secs else 0, + 'date': ( + lambda rpc,secs: '{}-{:02}-{:02}'.format(*time.gmtime(secs)[:3])[2:] + if secs else '--------' ), + 'date_time': ( + lambda rpc,secs: '{}-{:02}-{:02} {:02}:{:02}'.format(*time.gmtime(secs)[:5]) + if secs else '---------- -----' ), } def age_disp(self,o,age_fmt): @@ -89,8 +94,12 @@ class TwCommon: @age_fmt.setter def age_fmt(self,val): - if val not in self.age_fmts: - die( 'BadAgeFormat', f'{val!r}: invalid age format (must be one of {self.age_fmts!r})' ) + ok_vals,op_desc = ( + (self.age_fmts_interactive,'interactive') if self.interactive else + (self.age_fmts,'non-interactive') ) + if val not in ok_vals: + die('BadAgeFormat', + f'{val!r}: invalid age format for {op_desc} operation (must be one of {ok_vals!r})' ) self._age_fmt = val @property @@ -187,6 +196,7 @@ class TwCommon: self.prompt = type(self).prompt.strip() + '\b' self.no_output = False self.oneshot_msg = None + self.interactive = True CUR_HOME = '\033[H' ERASE_ALL = '\033[0J'