From 4cc1a97a0a0d35a81ee4521520d4c1ebfdab66b9 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Mon, 2 Dec 2019 07:04:05 -0800 Subject: [PATCH] Fix label deletion (#1044) Updated `gam delete labels` to process labels in reverse hierarchial order to avoid deleting a parent label before all of its child labels are deleted. --- src/gam.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/gam.py b/src/gam.py index 53672533..0a9b325d 100755 --- a/src/gam.py +++ b/src/gam.py @@ -6325,20 +6325,17 @@ def doDeleteLabel(users): labels = callGAPI(gmail.users().labels(), 'list', userId=user, fields='labels(id,name,type)') del_labels = [] if label == '--ALL_LABELS--': - for del_label in labels['labels']: - if del_label['type'] == 'system': - continue - del_labels.append(del_label) + for del_label in sorted(labels['labels'], key=lambda k: k['name'], reverse=True): + if del_label['type'] != 'system': + del_labels.append(del_label) elif label[:6].lower() == 'regex:': regex = label[6:] p = re.compile(regex) - for del_label in labels['labels']: - if del_label['type'] == 'system': - continue - elif p.match(del_label['name']): + for del_label in sorted(labels['labels'], key=lambda k: k['name'], reverse=True): + if del_label['type'] != 'system' and p.match(del_label['name']): del_labels.append(del_label) else: - for del_label in labels['labels']: + for del_label in sorted(labels['labels'], key=lambda k: k['name'], reverse=True): if label_name_lower == del_label['name'].lower(): del_labels.append(del_label) break