From 559a52d2772abc871642c3ec217497dacaeb4f3f Mon Sep 17 00:00:00 2001 From: Matt Folwell Date: Wed, 10 Aug 2022 13:55:43 +0100 Subject: [PATCH 1/2] Backup all cards on a board; don't rely on a board's card already being sorted by list --- trello_full_backup/backup.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/trello_full_backup/backup.py b/trello_full_backup/backup.py index 94af81e..196b7d8 100755 --- a/trello_full_backup/backup.py +++ b/trello_full_backup/backup.py @@ -1,5 +1,5 @@ import sys -import itertools +import collections import os import argparse import re @@ -157,10 +157,11 @@ def backup_board(board, args): board_details['name'], 'with id', board['id'], 'to', file_name) write_file(file_name, board_details) - lists = {} - cs = itertools.groupby(board_details['cards'], key=lambda x: x['idList']) - for list_id, cards in cs: - lists[list_id] = sorted(list(cards), key=lambda card: card['pos']) + lists = collections.defaultdict(list) + for card in board_details['cards']: + lists[card['idList']].append(card) + for list_cards in lists.values(): + list_cards.sort(key=lambda card: card['pos']) for id_list, ls in enumerate(board_details['lists']): list_name = get_name(tokenize, ls['name'], ls["id"], id_list) From d5caa210943faadf46a63571eb5afd037bd3a54d Mon Sep 17 00:00:00 2001 From: Matt Folwell Date: Wed, 10 Aug 2022 14:24:01 +0100 Subject: [PATCH 2/2] defaultdict makes check for presence of list-id unnecessary --- trello_full_backup/backup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trello_full_backup/backup.py b/trello_full_backup/backup.py index 196b7d8..643802f 100755 --- a/trello_full_backup/backup.py +++ b/trello_full_backup/backup.py @@ -170,7 +170,7 @@ def backup_board(board, args): # Enter list directory os.chdir(list_name) - cards = lists[ls['id']] if ls['id'] in lists else [] + cards = lists[ls['id']] for id_card, c in enumerate(cards): backup_card(id_card, c, args.attachment_size, tokenize)