diff --git a/formatscaper/resultman.py b/formatscaper/resultman.py index c816e62379db60b76a7930ac5cd20d4c89ee84fb..01ab8a4333ec3e8fc5bf5d4a79e53631295a9b1c 100755 --- a/formatscaper/resultman.py +++ b/formatscaper/resultman.py @@ -85,16 +85,20 @@ except Exception as e: print(e) try: - all_results = load_results(args.results) or [] - all_results_per_record = { - rec: [res for res in all_results if res.record == rec] - for rec in {res.record for res in all_results} + # load the results and prepare them in the shape we need them later + # (Format PUID => Record => Files) + all_results = load_results(args.results, formats=formats) or [] + format_record_files = { + format.puid: { + record: [result for result in format.results if result.record == record] + for record in {result.record for result in format.results} + } + for format in formats } except Exception as e: - all_results, all_results_per_record = [], {} + all_results, format_record_files = [], {} print(e) - # color palette & settings palette = [ ("border", "light gray,bold", "dark gray"), @@ -118,10 +122,7 @@ def handle_select_format(format: Format, button: uw.Button): """Set up the format details side (right) based on the selected format.""" relevant_results = { rec: sorted(ress, key=lambda r: r.filename) - for rec, ress in { - rec: [r for r in ress if r.format == format] - for rec, ress in all_results_per_record.items() - }.items() + for rec, ress in format_record_files[format.puid].items() if ress }