diff --git a/.bin/Scripts/functions/ddrescue.py b/.bin/Scripts/functions/ddrescue.py index 31122edc..92137d05 100644 --- a/.bin/Scripts/functions/ddrescue.py +++ b/.bin/Scripts/functions/ddrescue.py @@ -451,6 +451,51 @@ class RecoveryState(): tmux_resize_pane(y=ratio[1]) tmux_resize_pane(self.panes['Journal'], y=ratio[2]) + def generate_report(self): + """Generate report for osTicket post, returns list.""" + report = [''] + test_station = TEST_STATIONS.get(get_hostname().lower(), '') + + # Header + if test_station: + report[0] += '[Test-Station: {}] '.format(test_station) + report[0] += '[Report for ticket #{} {}]'.format( + self.ticket_id, self.ticket_name) + report.append('ddrescue-tui {} results'.format(self.mode)) + + # Source/Dest + report.append(' ') + report.append('Source: {}'.format(self.source.name)) + report.append('Destination: {}'.format(self.dest.name)) + + # Overall + try: + percent = (self.rescued / self.total_size) * 100 + except ZeroDivisionError: + percent = 0 + report.append(' ') + report.append('Overall rescued: {:0.2f}% error size: {}'.format( + percent, + human_readable_size(self.total_size-self.rescued, decimals=2), + )) + + # Block-Pairs + if len(self.block_pairs) > 1: + report.append(' ') + for b_pair in self.block_pairs: + try: + percent = (b_pair.rescued / b_pair.size) * 100 + except ZeroDivisionError: + percent = 0 + report.append('{} rescued: {:0.2f}% error size: {}'.format( + b_pair.source.path, + percent, + human_readable_size(b_pair.size-b_pair.rescued, decimals=2), + )) + + # Done + return report + def get_smart_source(self): """Get source for SMART dispay.""" disk_path = self.source.path @@ -863,6 +908,11 @@ def menu_ddrescue(source_path, dest_path, run_mode): state.fix_tmux_panes(forced=True) menu_main(state) + # Post results + if ask('Post results to osTicket?'): + # TODO + pass + # Done run_program(['tmux', 'kill-window']) exit_script()