refactor: Refactor handling of draft stream states

This commit is contained in:
Jennifer Richards 2023-08-14 13:06:48 -03:00
parent f9ca1bc9d6
commit 92460319d1
No known key found for this signature in database
GPG key ID: 9B2BF5C5ADDA6A6E

View file

@ -475,30 +475,36 @@ def update_docs_from_rfc_index(
draft_changes.append(change)
rfc_changes.append(change)
# Ensure draft is in the correct iesg and stream states
for t in (
"draft-iesg",
"draft-stream-iab",
"draft-stream-irtf",
"draft-stream-ise",
):
prev_state = draft.get_state(t)
if prev_state is not None:
if prev_state.slug not in ("pub", "idexists"):
new_state = State.objects.select_related("type").get(
used=True, type=t, slug="pub"
)
draft.set_state(new_state)
draft_changes.append(
f"changed {new_state.type.label} to {new_state}"
)
e = update_action_holders(draft, prev_state, new_state)
if e:
draft_events.append(e)
elif t == "draft-iesg":
draft.set_state(
State.objects.get(type_id="draft-iesg", slug="idexists")
# Draft should be in the "pub" draft-iesg state - complain otherwise
iesg_state = draft.get_state("draft-iesg")
if iesg_state is None:
log(f'Warning while processing {doc.name}: {draft.name} has no "draft-iesg" state')
elif iesg_state.slug != "pub":
log(
'Warning while processing {}: {} is in "draft-iesg" state {} (expected "pub")'.format(
doc.name, draft.name, iesg_state.slug
)
)
# If the draft and RFC streams agree, move draft to "pub" stream state. If not, complain.
if draft.stream != doc.stream:
log("Warning while processing {}: draft {} stream is {} but RFC stream is {}".format(
doc.name, draft.name, draft.stream, doc.stream
))
elif draft.stream.slug in ["draft-stream-iab", "draft-stream-irtf", "draft-stream-ise"]:
stream_slug = draft.stream.slug
prev_state = draft.get_state(stream_slug)
if prev_state is None:
log(f"Warning while processing {doc.name}: draft {draft.name} stream state was not set")
elif prev_state.slug != "pub":
new_state = State.objects.select_related("type").get(used=True, type__slug=stream_slug, slug="pub")
draft.set_state(new_state)
draft_changes.append(
f"changed {new_state.type.label} to {new_state}"
)
e = update_action_holders(draft, prev_state, new_state)
if e:
draft_events.append(e)
if draft_changes:
draft_events.append(
DocEvent.objects.create(