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
This commit is contained in:
parent
a9f879cd0e
commit
72cfe4cf68
|
@ -382,8 +382,35 @@ class SubmitTests(TestCase):
|
|||
draft = Document.objects.get(docalias__name=name)
|
||||
self.assertEqual(draft.rev, rev)
|
||||
self.assertEqual(draft.group.acronym, name.split("-")[2])
|
||||
self.assertEqual(draft.docevent_set.all()[1].type, "new_revision")
|
||||
self.assertEqual(draft.docevent_set.all()[1].by.name, "Submitter Name")
|
||||
#
|
||||
docevents = list(draft.docevent_set.all().order_by("-time", "-id"))
|
||||
# Latest events are first (this is the default, but we make it explicit)
|
||||
# Assert event content in chronological order:
|
||||
self.assertEqual(docevents[4].type, "added_comment")
|
||||
self.assertIn("Uploaded new revision", docevents[4].desc)
|
||||
self.assertEqual(docevents[4].by.name, "Submitter Name")
|
||||
self.assertGreater(docevents[4].id, docevents[5].id)
|
||||
#
|
||||
self.assertEqual(docevents[3].type, "added_comment")
|
||||
self.assertIn("Request for posting confirmation", docevents[3].desc)
|
||||
self.assertEqual(docevents[3].by.name, "(System)")
|
||||
self.assertGreater(docevents[3].id, docevents[4].id)
|
||||
#
|
||||
self.assertEqual(docevents[2].type, "added_comment")
|
||||
self.assertIn("New version approved", docevents[2].desc)
|
||||
self.assertEqual(docevents[2].by.name, "(System)")
|
||||
self.assertGreater(docevents[2].id, docevents[3].id)
|
||||
#
|
||||
self.assertEqual(docevents[1].type, "new_revision")
|
||||
self.assertIn("New version available", docevents[1].desc)
|
||||
self.assertEqual(docevents[1].by.name, "Submitter Name")
|
||||
self.assertGreater(docevents[1].id, docevents[2].id)
|
||||
#
|
||||
self.assertEqual(docevents[0].type, "changed_state")
|
||||
self.assertIn("IANA Review", docevents[0].desc)
|
||||
self.assertEqual(docevents[0].by.name, "(System)")
|
||||
self.assertGreater(docevents[0].id, docevents[1].id)
|
||||
#
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.repository_dir, "%s-%s.txt" % (name, old_rev))))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "%s-%s.txt" % (name, old_rev))))
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.staging_dir, u"%s-%s.txt" % (name, rev))))
|
||||
|
|
|
@ -111,8 +111,7 @@ def create_submission_event(request, submission, desc):
|
|||
|
||||
SubmissionEvent.objects.create(submission=submission, by=by, desc=desc)
|
||||
|
||||
|
||||
def docevent_from_submission(request, submission, desc):
|
||||
def docevent_from_submission(request, submission, desc, who=None):
|
||||
system = Person.objects.get(name="(System)")
|
||||
|
||||
try:
|
||||
|
@ -121,18 +120,22 @@ def docevent_from_submission(request, submission, desc):
|
|||
# Assume this is revision 00 - we'll do this later
|
||||
return
|
||||
|
||||
submitter_parsed = submission.submitter_parsed()
|
||||
if submitter_parsed["name"] and submitter_parsed["email"]:
|
||||
submitter = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"]).person
|
||||
if who:
|
||||
by = Person.objects.get(name=who)
|
||||
else:
|
||||
submitter = system
|
||||
|
||||
e = DocEvent(doc=draft)
|
||||
e.by = submitter
|
||||
e.type = "added_comment"
|
||||
e.desc = desc
|
||||
e.save()
|
||||
submitter_parsed = submission.submitter_parsed()
|
||||
if submitter_parsed["name"] and submitter_parsed["email"]:
|
||||
by = ensure_person_email_info_exists(submitter_parsed["name"], submitter_parsed["email"]).person
|
||||
else:
|
||||
by = system
|
||||
|
||||
e = DocEvent.objects.create(
|
||||
doc=draft,
|
||||
by = by,
|
||||
type = "added_comment",
|
||||
desc = desc,
|
||||
)
|
||||
return e
|
||||
|
||||
def post_rev00_submission_events(draft, submission, submitter):
|
||||
# Add previous submission events as docevents
|
||||
|
@ -213,6 +216,19 @@ def post_submission(request, submission, approvedDesc):
|
|||
|
||||
events = []
|
||||
|
||||
if draft.rev == '00':
|
||||
# Add all the previous submission events as docevents
|
||||
post_rev00_submission_events(draft, submission, submitter)
|
||||
|
||||
# Add an approval docevent
|
||||
e = DocEvent.objects.create(
|
||||
type="added_comment",
|
||||
doc=draft,
|
||||
by=system,
|
||||
desc=approvedDesc
|
||||
)
|
||||
events.append(e)
|
||||
|
||||
# new revision event
|
||||
e = NewRevisionDocEvent.objects.create(
|
||||
type="new_revision",
|
||||
|
@ -234,33 +250,16 @@ def post_submission(request, submission, approvedDesc):
|
|||
if trouble:
|
||||
log('Rebuild_reference_relations trouble: %s'%trouble)
|
||||
|
||||
if draft.rev == '00':
|
||||
# Add all the previous submission events as docevents
|
||||
post_rev00_submission_events(draft, submission, submitter)
|
||||
|
||||
# Add an approval docevent
|
||||
e = DocEvent(type="added_comment", doc=draft)
|
||||
e.time = draft.time #submission.submission_date
|
||||
e.by = submitter
|
||||
e.desc = approvedDesc
|
||||
e.save()
|
||||
|
||||
# new revision event
|
||||
e = NewRevisionDocEvent(type="new_revision", doc=draft, rev=draft.rev)
|
||||
e.time = draft.time #submission.submission_date
|
||||
e.by = submitter
|
||||
e.desc = "New version available: <b>%s-%s.txt</b>" % (draft.name, draft.rev)
|
||||
e.save()
|
||||
|
||||
if draft.stream_id == "ietf" and draft.group.type_id == "wg" and draft.rev == "00":
|
||||
# automatically set state "WG Document"
|
||||
draft.set_state(State.objects.get(used=True, type="draft-stream-%s" % draft.stream_id, slug="wg-doc"))
|
||||
|
||||
# automatic state changes for IANA review
|
||||
if draft.get_state_slug("draft-iana-review") in ("ok-act", "ok-noact", "not-ok"):
|
||||
prev_state = draft.get_state("draft-iana-review")
|
||||
next_state = State.objects.get(used=True, type="draft-iana-review", slug="changed")
|
||||
draft.set_state(next_state)
|
||||
e = add_state_change_event(draft, submitter, prev_state, next_state)
|
||||
e = add_state_change_event(draft, system, prev_state, next_state)
|
||||
if e:
|
||||
events.append(e)
|
||||
|
||||
|
|
|
@ -314,10 +314,14 @@ def submission_status(request, submission_id, access_token=None):
|
|||
return HttpResponseForbidden('You do not have permission to perform this action')
|
||||
|
||||
# go directly to posting submission
|
||||
docevent_from_submission(request, submission, desc="Uploaded new revision")
|
||||
|
||||
desc = u"Secretariat manually posting. Approvals already received"
|
||||
post_submission(request, submission, desc)
|
||||
create_submission_event(request, submission, desc)
|
||||
else:
|
||||
docevent_from_submission(request, submission, desc="Uploaded new revision")
|
||||
|
||||
if requires_group_approval:
|
||||
submission.state = DraftSubmissionStateName.objects.get(slug="grp-appr")
|
||||
submission.save()
|
||||
|
@ -349,7 +353,7 @@ def submission_status(request, submission_id, access_token=None):
|
|||
", ".join(prettify_std_name(r.name) for r in replaces) if replaces else "(none)",
|
||||
desc)
|
||||
create_submission_event(request, submission, msg)
|
||||
docevent_from_submission(request, submission, docDesc)
|
||||
docevent_from_submission(request, submission, docDesc, who="(System)")
|
||||
|
||||
if access_token:
|
||||
return redirect("ietf.submit.views.submission_status", submission_id=submission.pk, access_token=access_token)
|
||||
|
|
Loading…
Reference in a new issue