Skip to content

Commit 037556b

Browse files
committed
Set request time for auto-suggested review requests to the time where
the triggering event happened - this is probably only marginally useful at the moment, but could perhaps be used for statistics later on (e.g. comparing earliest possible request time vs. assignment time) - Legacy-Id: 12085
1 parent e484f6b commit 037556b

1 file changed

Lines changed: 24 additions & 15 deletions

File tree

ietf/review/utils.py

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -413,22 +413,25 @@ def suggested_review_requests_for_team(team):
413413

414414
requests = {}
415415

416-
today = datetime.date.today()
416+
now = datetime.datetime.now()
417417

418418
requested_state = ReviewRequestStateName.objects.get(slug="requested", used=True)
419419

420420
if True: # FIXME
421421
# in Last Call
422422
last_call_type = ReviewTypeName.objects.get(slug="lc")
423423
last_call_docs = Document.objects.filter(states=State.objects.get(type="draft-iesg", slug="lc", used=True))
424-
last_call_expires = { e.doc_id: e.expires for e in LastCallDocEvent.objects.order_by("time", "id") }
424+
last_call_expiry_events = { e.doc_id: e for e in LastCallDocEvent.objects.order_by("time", "id") }
425425
for doc in last_call_docs:
426-
deadline = last_call_expires[doc.pk].date() if doc.pk in last_call_expires else today
426+
e = last_call_expiry_events[doc.pk] if doc.pk in last_call_expiry_events else LastCallDocEvent(expires=now.date(), time=now)
427427

428-
if deadline > seen_deadlines.get(doc.pk, datetime.date.max) or deadline < today:
428+
deadline = e.expires.date()
429+
430+
if deadline > seen_deadlines.get(doc.pk, datetime.date.max) or deadline < now.date():
429431
continue
430432

431433
requests[doc.pk] = ReviewRequest(
434+
time=e.time,
432435
type=last_call_type,
433436
doc=doc,
434437
team=team,
@@ -446,27 +449,33 @@ def suggested_review_requests_for_team(team):
446449

447450
telechat_type = ReviewTypeName.objects.get(slug="telechat")
448451
telechat_deadline_delta = datetime.timedelta(days=2)
449-
telechat_docs = Document.objects.filter(docevent__telechatdocevent__telechat_date__in=telechat_dates)
450-
for doc in telechat_docs:
451-
d = doc.telechat_date()
452-
if d not in telechat_dates:
453-
continue
454452

455-
deadline = d - telechat_deadline_delta
456-
457-
if deadline > seen_deadlines.get(doc.pk, datetime.date.max):
453+
telechat_docs = Document.objects.filter(
454+
docevent__telechatdocevent__telechat_date__in=telechat_dates
455+
).values_list(
456+
"pk", "docevent__telechatdocevent__time", "docevent__telechatdocevent__telechat_date"
457+
).order_by("pk", "docevent__telechatdocevent__telechat_date")
458+
for doc_pk, events in itertools.groupby(telechat_docs, lambda t: t[0]):
459+
event_time = deadline = None
460+
for _, event_time, event_telechat_date in events:
461+
if event_telechat_date in telechat_dates:
462+
deadline = event_telechat_date - telechat_deadline_delta
463+
break
464+
465+
if not deadline or deadline > seen_deadlines.get(doc_pk, datetime.date.max):
458466
continue
459467

460-
requests[doc.pk] = ReviewRequest(
468+
requests[doc_pk] = ReviewRequest(
469+
time=event_time,
461470
type=telechat_type,
462-
doc=doc,
471+
doc_id=doc_pk,
463472
team=team,
464473
deadline=deadline,
465474
requested_by=system_person,
466475
state=requested_state,
467476
)
468477

469-
seen_deadlines[doc.pk] = deadline
478+
seen_deadlines[doc_pk] = deadline
470479

471480
# filter those with existing requests
472481
existing_requests = defaultdict(list)

0 commit comments

Comments
 (0)