From 7aff7d3e72685a4630d6b2219c5cd1ad2c267389 Mon Sep 17 00:00:00 2001 From: Ole Laursen Date: Wed, 6 Jul 2016 13:27:41 +0000 Subject: [PATCH] Fix some bugs in retrieving review requests for replacement documents - Legacy-Id: 11529 --- ietf/review/utils.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ietf/review/utils.py b/ietf/review/utils.py index 411eea322..91df63d8f 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -245,13 +245,23 @@ def extract_revision_ordered_review_requests_for_documents(queryset, names): front = replaces.get(name, []) res[name].extend(requests_for_each_doc.get(name, [])) + seen = set() + while front: replaces_reqs = [] + next_front = [] for replaces_name in front: + if replaces_name in seen: + continue + + seen.add(replaces_name) + reqs = requests_for_each_doc.get(replaces_name, []) if reqs: replaces_reqs.append(reqs) + next_front.extend(replaces.get(replaces_name, [])) + # in case there are multiple replaces, move the ones with # the latest reviews up front replaces_reqs.sort(key=lambda l: l[0].time, reverse=True) @@ -260,6 +270,6 @@ def extract_revision_ordered_review_requests_for_documents(queryset, names): res[name].extend(reqs) # move one level down - front = [n for l in requests_for_each_doc.get(replaces_name, []) for n in l] + front = next_front return res