Skip to content

Commit 72cfe4c

Browse files
committed
Removed the creation of duplicate new revision doc events. Corrected the timestamp on approval docevents. Changed where the submission upload docevent is created, to avoid spurious events for cancelled uploads. Adjusted the person associated with some events from submitter to (System). Added tests for the sequence of events associated with a submission.
- Legacy-Id: 12072
1 parent a9f879c commit 72cfe4c

3 files changed

Lines changed: 64 additions & 34 deletions

File tree

ietf/submit/tests.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,35 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_
382382
draft = Document.objects.get(docalias__name=name)
383383
self.assertEqual(draft.rev, rev)
384384
self.assertEqual(draft.group.acronym, name.split("-")[2])
385-
self.assertEqual(draft.docevent_set.all()[1].type, "new_revision")
386-
self.assertEqual(draft.docevent_set.all()[1].by.name, "Submitter Name")
385+
#
386+
docevents = list(draft.docevent_set.all().order_by("-time", "-id"))
387+
# Latest events are first (this is the default, but we make it explicit)
388+
# Assert event content in chronological order:
389+
self.assertEqual(docevents[4].type, "added_comment")
390+
self.assertIn("Uploaded new revision", docevents[4].desc)
391+
self.assertEqual(docevents[4].by.name, "Submitter Name")
392+
self.assertGreater(docevents[4].id, docevents[5].id)
393+
#
394+
self.assertEqual(docevents[3].type, "added_comment")
395+
self.assertIn("Request for posting confirmation", docevents[3].desc)
396+
self.assertEqual(docevents[3].by.name, "(System)")
397+
self.assertGreater(docevents[3].id, docevents[4].id)
398+
#
399+
self.assertEqual(docevents[2].type, "added_comment")
400+
self.assertIn("New version approved", docevents[2].desc)
401+
self.assertEqual(docevents[2].by.name, "(System)")
402+
self.assertGreater(docevents[2].id, docevents[3].id)
403+
#
404+
self.assertEqual(docevents[1].type, "new_revision")
405+
self.assertIn("New version available", docevents[1].desc)
406+
self.assertEqual(docevents[1].by.name, "Submitter Name")
407+
self.assertGreater(docevents[1].id, docevents[2].id)
408+
#
409+
self.assertEqual(docevents[0].type, "changed_state")
410+
self.assertIn("IANA Review", docevents[0].desc)
411+
self.assertEqual(docevents[0].by.name, "(System)")
412+
self.assertGreater(docevents[0].id, docevents[1].id)
413+
#
387414
self.assertTrue(not os.path.exists(os.path.join(self.repository_dir, "%s-%s.txt" % (name, old_rev))))
388415
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "%s-%s.txt" % (name, old_rev))))
389416
self.assertTrue(not os.path.exists(os.path.join(self.staging_dir, u"%s-%s.txt" % (name, rev))))

ietf/submit/utils.py

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,7 @@ def create_submission_event(request, submission, desc):
111111

112112
SubmissionEvent.objects.create(submission=submission, by=by, desc=desc)
113113

114-
115-
def docevent_from_submission(request, submission, desc):
114+
def docevent_from_submission(request, submission, desc, who=None):
116115
system = Person.objects.get(name="(System)")
117116

118117
try:
@@ -121,18 +120,22 @@ def docevent_from_submission(request, submission, desc):
121120
# Assume this is revision 00 - we'll do this later
122121
return
123122

124-
submitter_parsed = submission.submitter_parsed()
125-
if submitter_parsed["name"] and submitter_parsed["email"]:
126-
submitter = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"]).person
123+
if who:
124+
by = Person.objects.get(name=who)
127125
else:
128-
submitter = system
129-
130-
e = DocEvent(doc=draft)
131-
e.by = submitter
132-
e.type = "added_comment"
133-
e.desc = desc
134-
e.save()
126+
submitter_parsed = submission.submitter_parsed()
127+
if submitter_parsed["name"] and submitter_parsed["email"]:
128+
by = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"]).person
129+
else:
130+
by = system
135131

132+
e = DocEvent.objects.create(
133+
doc=draft,
134+
by = by,
135+
type = "added_comment",
136+
desc = desc,
137+
)
138+
return e
136139

137140
def post_rev00_submission_events(draft, submission, submitter):
138141
# Add previous submission events as docevents
@@ -213,6 +216,19 @@ def post_submission(request, submission, approvedDesc):
213216

214217
events = []
215218

219+
if draft.rev == '00':
220+
# Add all the previous submission events as docevents
221+
post_rev00_submission_events(draft, submission, submitter)
222+
223+
# Add an approval docevent
224+
e = DocEvent.objects.create(
225+
type="added_comment",
226+
doc=draft,
227+
by=system,
228+
desc=approvedDesc
229+
)
230+
events.append(e)
231+
216232
# new revision event
217233
e = NewRevisionDocEvent.objects.create(
218234
type="new_revision",
@@ -234,33 +250,16 @@ def post_submission(request, submission, approvedDesc):
234250
if trouble:
235251
log('Rebuild_reference_relations trouble: %s'%trouble)
236252

237-
if draft.rev == '00':
238-
# Add all the previous submission events as docevents
239-
post_rev00_submission_events(draft, submission, submitter)
240-
241-
# Add an approval docevent
242-
e = DocEvent(type="added_comment", doc=draft)
243-
e.time = draft.time #submission.submission_date
244-
e.by = submitter
245-
e.desc = approvedDesc
246-
e.save()
247-
248-
# new revision event
249-
e = NewRevisionDocEvent(type="new_revision", doc=draft, rev=draft.rev)
250-
e.time = draft.time #submission.submission_date
251-
e.by = submitter
252-
e.desc = "New version available: <b>%s-%s.txt</b>" % (draft.name, draft.rev)
253-
e.save()
254-
255253
if draft.stream_id == "ietf" and draft.group.type_id == "wg" and draft.rev == "00":
256254
# automatically set state "WG Document"
257255
draft.set_state(State.objects.get(used=True, type="draft-stream-%s" % draft.stream_id, slug="wg-doc"))
258256

257+
# automatic state changes for IANA review
259258
if draft.get_state_slug("draft-iana-review") in ("ok-act", "ok-noact", "not-ok"):
260259
prev_state = draft.get_state("draft-iana-review")
261260
next_state = State.objects.get(used=True, type="draft-iana-review", slug="changed")
262261
draft.set_state(next_state)
263-
e = add_state_change_event(draft, submitter, prev_state, next_state)
262+
e = add_state_change_event(draft, system, prev_state, next_state)
264263
if e:
265264
events.append(e)
266265

ietf/submit/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,14 @@ def submission_status(request, submission_id, access_token=None):
314314
return HttpResponseForbidden('You do not have permission to perform this action')
315315

316316
# go directly to posting submission
317+
docevent_from_submission(request, submission, desc="Uploaded new revision")
318+
317319
desc = u"Secretariat manually posting. Approvals already received"
318320
post_submission(request, submission, desc)
319321
create_submission_event(request, submission, desc)
320322
else:
323+
docevent_from_submission(request, submission, desc="Uploaded new revision")
324+
321325
if requires_group_approval:
322326
submission.state = DraftSubmissionStateName.objects.get(slug="grp-appr")
323327
submission.save()
@@ -349,7 +353,7 @@ def submission_status(request, submission_id, access_token=None):
349353
", ".join(prettify_std_name(r.name) for r in replaces) if replaces else "(none)",
350354
desc)
351355
create_submission_event(request, submission, msg)
352-
docevent_from_submission(request, submission, docDesc)
356+
docevent_from_submission(request, submission, docDesc, who="(System)")
353357

354358
if access_token:
355359
return redirect("ietf.submit.views.submission_status", submission_id=submission.pk, access_token=access_token)

0 commit comments

Comments
 (0)