From b85b929b11eb4e82536dab2b41e02ef0c2aa7cb7 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 5 Aug 2016 10:59:36 +0100 Subject: [PATCH] Lose the confusing list slicing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slicing was to avoid duplicate items in the list. A more idomatic way to avoid duplicate items in a list is to use a `set` instead. The order of the list doesn’t really matter, but it’s a lot easier to test for if the order is consistent. --- app/main/views/jobs.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 34d6dacb4..352ff5445 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -2,6 +2,7 @@ import ago import time import dateutil +from orderedset import OrderedSet from datetime import datetime, timedelta, timezone from itertools import chain @@ -51,12 +52,11 @@ def _set_status_filters(filter_args): status_filters = filter_args.get('status', []) all_failure_statuses = ['failed', 'temporary-failure', 'permanent-failure', 'technical-failure'] all_sending_statuses = ['created', 'sending'] - all_statuses = all_sending_statuses + ['delivered'] + all_failure_statuses - return list(chain( - (status_filters or all_statuses), - all_sending_statuses[:1] if 'sending' in status_filters else [], - all_failure_statuses[1:] if 'failed' in status_filters else [] - )) + return list(OrderedSet(chain( + (status_filters or all_sending_statuses + ['delivered'] + all_failure_statuses), + all_sending_statuses if 'sending' in status_filters else [], + all_failure_statuses if 'failed' in status_filters else [] + ))) @main.route("/services//jobs")