|
56 | 56 | from ietf.ietfauth.decorators import group_required |
57 | 57 | from ietf.idtracker.templatetags.ietf_filters import in_group |
58 | 58 | from ietf.ipr.models import IprDocAlias |
59 | | -from ietf.doc.models import Document, TelechatDocEvent |
| 59 | +from ietf.doc.models import Document, TelechatDocEvent, LastCallDocEvent, ConsensusDocEvent |
60 | 60 | from ietf.group.models import Group |
61 | 61 |
|
62 | 62 | def date_threshold(): |
@@ -193,20 +193,33 @@ def get_wg_section(wg): |
193 | 193 | get_doc_section = get_doc_sectionREDESIGN |
194 | 194 |
|
195 | 195 | def agenda_docs(date, next_agenda): |
196 | | - from ietf.doc.models import TelechatDocEvent |
197 | | - |
198 | | - matches = Document.objects.filter(docevent__telechatdocevent__telechat_date=date).distinct() |
| 196 | + matches = Document.objects.filter(docevent__telechatdocevent__telechat_date=date).select_related("stream").distinct() |
199 | 197 |
|
200 | 198 | docmatches = [] |
201 | 199 |
|
202 | | - for m in matches: |
203 | | - if m.latest_event(TelechatDocEvent, type="scheduled_for_telechat").telechat_date != date: |
| 200 | + for doc in matches: |
| 201 | + if doc.latest_event(TelechatDocEvent, type="scheduled_for_telechat").telechat_date != date: |
204 | 202 | continue |
205 | 203 |
|
206 | | - e = m.latest_event(type="started_iesg_process") |
207 | | - m.balloting_started = e.time if e else datetime.datetime.min |
| 204 | + e = doc.latest_event(type="started_iesg_process") |
| 205 | + doc.balloting_started = e.time if e else datetime.datetime.min |
| 206 | + |
| 207 | + if doc.type_id == "draft": |
| 208 | + s = doc.get_state("draft-iana-review") |
| 209 | + if s and s.slug in ("not-ok", "changed", "need-rev"): |
| 210 | + doc.iana_review_state = str(s) |
| 211 | + |
| 212 | + if doc.get_state_slug("draft-iesg") == "lc": |
| 213 | + e = doc.latest_event(LastCallDocEvent, type="sent_last_call") |
| 214 | + if e: |
| 215 | + doc.lastcall_expires = e.expires |
| 216 | + |
| 217 | + doc.consensus = "Unknown" |
| 218 | + e = doc.latest_event(ConsensusDocEvent, type="changed_consensus") |
| 219 | + if e: |
| 220 | + doc.consensus = "Yes" if e.consensus else "No" |
208 | 221 |
|
209 | | - docmatches.append(m) |
| 222 | + docmatches.append(doc) |
210 | 223 |
|
211 | 224 | res = dict(("s%s%s%s" % (i, j, k), []) for i in range(2, 5) for j in range (1, 4) for k in range(1, 4)) |
212 | 225 | for id in docmatches: |
@@ -314,6 +327,22 @@ def _agenda_json(request, date=None): |
314 | 327 | if defer: |
315 | 328 | docinfo['defer-by'] = defer.by.name |
316 | 329 | docinfo['defer-at'] = str(defer.time) |
| 330 | + |
| 331 | + if doc.type_id == "draft": |
| 332 | + iana_state = doc.get_state("draft-iana-review") |
| 333 | + if iana_state.slug in ("not-ok", "changed", "need-rev"): |
| 334 | + docinfo['iana_review_state'] = str(iana_state) |
| 335 | + |
| 336 | + if doc.get_state_slug("draft-iesg") == "lc": |
| 337 | + e = doc.latest_event(LastCallDocEvent, type="sent_last_call") |
| 338 | + if e: |
| 339 | + docinfo['lastcall_expires'] = e.expires |
| 340 | + |
| 341 | + docinfo['consensus'] = None |
| 342 | + e = doc.latest_event(ConsensusDocEvent, type="changed_consensus") |
| 343 | + if e: |
| 344 | + docinfo['consensus'] = e.consensus |
| 345 | + |
317 | 346 | data['sections'][s]['docs'] += [docinfo, ] |
318 | 347 |
|
319 | 348 | wgs = agenda_wg_actions(date) |
|
0 commit comments