Skip to content

Commit 95bbabf

Browse files
committed
Ignore duplicate review requests in importer - genart has had quite a
few of these - Legacy-Id: 12171
1 parent d95be38 commit 95bbabf

1 file changed

Lines changed: 66 additions & 9 deletions

File tree

ietf/review/import_from_review_tool.py

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,8 @@ def parse_timestamp(t):
356356

357357
system_person = Person.objects.get(name="(System)")
358358

359+
seen_review_requests = {}
360+
359361
with db_con.cursor() as c:
360362
c.execute("select * from reviews order by reviewid;")
361363

@@ -464,17 +466,19 @@ def fix_docname(docname):
464466
docname = "draft-fenner-obsolete-1264"
465467
return docname
466468

467-
review_req, _ = ReviewRequest.objects.get_or_create(
468-
doc_id=fix_docname(row.docname),
469+
fixed_docname = fix_docname(row.docname)
470+
471+
review_req = ReviewRequest.objects.filter(
472+
doc_id=fixed_docname,
469473
team=team,
470474
old_id=row.reviewid,
471-
defaults={
472-
"state": states["requested"],
473-
"type": type_name,
474-
"deadline": deadline.date(),
475-
"requested_by": system_person,
476-
}
477-
)
475+
).first()
476+
if not review_req:
477+
review_req = ReviewRequest(
478+
doc_id=fixed_docname,
479+
team=team,
480+
old_id=row.reviewid,
481+
)
478482

479483
review_req.reviewer = known_personnel[row.reviewer] if row.reviewer else None
480484
review_req.result = results.get(row.summary.lower()) if row.summary else None
@@ -483,8 +487,61 @@ def fix_docname(docname):
483487
review_req.time = time
484488
review_req.reviewed_rev = reviewed_rev if review_req.state_id not in ("requested", "accepted") else ""
485489
review_req.deadline = deadline.date()
490+
review_req.requested_by = system_person
491+
492+
k = (review_req.doc_id, review_req.result_id, review_req.state_id, review_req.reviewer_id, review_req.reviewed_rev, row.reviewurl)
493+
if k in seen_review_requests:
494+
print "SKIPPING SEEN", k
495+
496+
# there's one special thing we're going to do here, and
497+
# that's checking whether we have a real completion event
498+
# for this skipped entry where the previous match didn't
499+
if "closed" in event_collection and review_req.state_id not in ("requested", "accepted"):
500+
review_req = seen_review_requests[k]
501+
if ReviewRequestDocEvent.objects.filter(type="closed_review_request", doc=review_req.doc, review_request=review_req).exists():
502+
continue
503+
504+
data = event_collection['closed']
505+
timestamp, who_did_it, reviewer, state, latest_iesg_status = data
506+
507+
if who_did_it in known_personnel:
508+
by = known_personnel[who_did_it].person
509+
else:
510+
by = system_person
511+
512+
e = ReviewRequestDocEvent.objects.filter(type="closed_review_request", doc=review_req.doc, review_request=review_req).first()
513+
if not e:
514+
e = ReviewRequestDocEvent(type="closed_review_request", doc=review_req.doc, review_request=review_req)
515+
e.time = parse_timestamp(timestamp)
516+
e.by = by
517+
e.state = states.get(state) if state else None
518+
if e.state_id == "rejected":
519+
e.desc = "Assignment of request for {} review by {} to {} was rejected".format(
520+
review_req.type.name,
521+
review_req.team.acronym.upper(),
522+
review_req.reviewer.person,
523+
)
524+
elif e.state_id == "completed":
525+
e.desc = "Request for {} review by {} {}{}. Reviewer: {}.".format(
526+
review_req.type.name,
527+
review_req.team.acronym.upper(),
528+
review_req.state.name,
529+
": {}".format(review_req.result.name) if review_req.result else "",
530+
review_req.reviewer.person,
531+
)
532+
else:
533+
e.desc = "Closed request for {} review by {} with state '{}'".format(review_req.type.name, review_req.team.acronym.upper(), e.state.name)
534+
e.skip_community_list_notification = True
535+
e.save()
536+
completion_event = e
537+
print "imported event closed_review_request", e.desc, e.doc_id
538+
539+
continue
540+
486541
review_req.save()
487542

543+
seen_review_requests[k] = review_req
544+
488545
completion_event = None
489546

490547
# review request events

0 commit comments

Comments
 (0)