Skip to content

Commit 7f1c1e4

Browse files
committed
Replaced the use of plain DocEvent for submission doc events with a SubmissionDocEvent that carries rev and a FK to submission.
- Legacy-Id: 12275
1 parent 4af0c02 commit 7f1c1e4

6 files changed

Lines changed: 89 additions & 20 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import models, migrations
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('submit', '0016_fix_duplicate_upload_docevents'),
11+
('doc', '0014_auto_20160524_2147'),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='SubmissionDocEvent',
17+
fields=[
18+
('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')),
19+
('rev', models.CharField(max_length=16)),
20+
('submission', models.ForeignKey(to='submit.Submission')),
21+
],
22+
options={
23+
},
24+
bases=('doc.docevent',),
25+
),
26+
migrations.AlterField(
27+
model_name='docevent',
28+
name='type',
29+
field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor')]),
30+
preserve_default=True,
31+
),
32+
]

ietf/doc/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ class DocReminder(models.Model):
663663
EVENT_TYPES = [
664664
# core events
665665
("new_revision", "Added new revision"),
666+
("new_submission", "Uploaded new revision"),
666667
("changed_document", "Changed document metadata"),
667668
("added_comment", "Added comment"),
668669
("added_message", "Added message"),
@@ -865,6 +866,11 @@ class AddedMessageEvent(DocEvent):
865866
in_reply_to = models.ForeignKey(ietf.message.models.Message, null=True, blank=True,related_name='doc_irtomanual')
866867

867868

869+
class SubmissionDocEvent(DocEvent):
870+
import ietf.submit.models
871+
rev = models.CharField(max_length=16)
872+
submission = models.ForeignKey(ietf.submit.models.Submission)
873+
868874
# dumping store for removed events
869875
class DeletedEvent(models.Model):
870876
content_type = models.ForeignKey(ContentType)

ietf/doc/resources.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
DocumentAuthor, DocEvent, StateDocEvent, DocHistory, ConsensusDocEvent, DocAlias,
1212
TelechatDocEvent, DocReminder, LastCallDocEvent, NewRevisionDocEvent, WriteupDocEvent,
1313
InitialReviewDocEvent, DocHistoryAuthor, BallotDocEvent, RelatedDocument,
14-
RelatedDocHistory, BallotPositionDocEvent, AddedMessageEvent)
14+
RelatedDocHistory, BallotPositionDocEvent, AddedMessageEvent, SubmissionDocEvent)
1515

1616

1717
from ietf.name.resources import BallotPositionNameResource, DocTypeNameResource
@@ -542,3 +542,30 @@ class Meta:
542542
}
543543
api.doc.register(AddedMessageEventResource())
544544

545+
546+
547+
from ietf.person.resources import PersonResource
548+
from ietf.submit.resources import SubmissionResource
549+
class SubmissionDocEventResource(ModelResource):
550+
by = ToOneField(PersonResource, 'by')
551+
doc = ToOneField(DocumentResource, 'doc')
552+
docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr')
553+
submission = ToOneField(SubmissionResource, 'submission')
554+
class Meta:
555+
queryset = SubmissionDocEvent.objects.all()
556+
serializer = api.Serializer()
557+
cache = SimpleCache()
558+
#resource_name = 'submissiondocevent'
559+
filtering = {
560+
"id": ALL,
561+
"time": ALL,
562+
"type": ALL,
563+
"desc": ALL,
564+
"rev": ALL,
565+
"by": ALL_WITH_RELATIONS,
566+
"doc": ALL_WITH_RELATIONS,
567+
"docevent_ptr": ALL_WITH_RELATIONS,
568+
"submission": ALL_WITH_RELATIONS,
569+
}
570+
api.doc.register(SubmissionDocEventResource())
571+

ietf/doc/utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,12 @@ def augment_events_with_revision(doc, events):
238238
while event_revisions and (e.time, e.id) < (event_revisions[-1]["time"], event_revisions[-1]["id"]):
239239
event_revisions.pop()
240240

241-
if event_revisions:
242-
cur_rev = event_revisions[-1]["rev"]
243-
else:
244-
cur_rev = "00"
245-
246-
e.rev = cur_rev
241+
if not hasattr(e, 'rev'):
242+
if event_revisions:
243+
cur_rev = event_revisions[-1]["rev"]
244+
else:
245+
cur_rev = "00"
246+
e.rev = cur_rev
247247

248248
def add_links_in_new_revision_events(doc, events, diff_revisions):
249249
"""Add direct .txt links and diff links to new_revision events."""

ietf/submit/tests.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_
374374
self.assertEqual(r.status_code, 302)
375375

376376
# check we have document events
377-
doc_events = draft.docevent_set.filter(type="added_comment")
377+
doc_events = draft.docevent_set.filter(type__in=["new_submission", "added_comment"])
378378
edescs = '::'.join([x.desc for x in doc_events])
379379
self.assertTrue('New version approved' in edescs)
380380
self.assertTrue('Uploaded new revision' in edescs)
@@ -386,17 +386,17 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_
386386
docevents = list(draft.docevent_set.all().order_by("-time", "-id"))
387387
# Latest events are first (this is the default, but we make it explicit)
388388
# Assert event content in chronological order:
389-
self.assertEqual(docevents[4].type, "added_comment")
389+
self.assertEqual(docevents[4].type, "new_submission")
390390
self.assertIn("Uploaded new revision", docevents[4].desc)
391391
self.assertEqual(docevents[4].by.name, "Submitter Name")
392392
self.assertGreater(docevents[4].id, docevents[5].id)
393393
#
394-
self.assertEqual(docevents[3].type, "added_comment")
394+
self.assertEqual(docevents[3].type, "new_submission")
395395
self.assertIn("Request for posting confirmation", docevents[3].desc)
396396
self.assertEqual(docevents[3].by.name, "(System)")
397397
self.assertGreater(docevents[3].id, docevents[4].id)
398398
#
399-
self.assertEqual(docevents[2].type, "added_comment")
399+
self.assertEqual(docevents[2].type, "new_submission")
400400
self.assertIn("New version approved", docevents[2].desc)
401401
self.assertEqual(docevents[2].by.name, "(System)")
402402
self.assertGreater(docevents[2].id, docevents[3].id)

ietf/submit/utils.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import debug # pyflakes:ignore
77

8-
from ietf.doc.models import ( Document, State, DocAlias, DocEvent,
8+
from ietf.doc.models import ( Document, State, DocAlias, DocEvent, SubmissionDocEvent,
99
DocumentAuthor, AddedMessageEvent )
1010
from ietf.doc.models import NewRevisionDocEvent
1111
from ietf.doc.models import RelatedDocument, DocRelationshipName
@@ -129,11 +129,13 @@ def docevent_from_submission(request, submission, desc, who=None):
129129
else:
130130
by = system
131131

132-
e = DocEvent.objects.create(
132+
e = SubmissionDocEvent.objects.create(
133133
doc=draft,
134134
by = by,
135-
type = "added_comment",
135+
type = "new_submission",
136136
desc = desc,
137+
submission = submission,
138+
rev = submission.rev,
137139
)
138140
return e
139141

@@ -145,12 +147,12 @@ def post_rev00_submission_events(draft, submission, submitter):
145147
desc = subevent.desc
146148
if desc.startswith("Uploaded submission"):
147149
desc = "Uploaded new revision"
148-
e = DocEvent(type="added_comment", doc=draft)
150+
e = SubmissionDocEvent(type="new_submission", doc=draft, submission=submission, rev=submission.rev )
149151
elif desc.startswith("Submission created"):
150-
e = DocEvent(type="added_comment", doc=draft)
152+
e = SubmissionDocEvent(type="new_submission", doc=draft, submission=submission, rev=submission.rev)
151153
elif desc.startswith("Set submitter to"):
152154
pos = subevent.desc.find("sent confirmation email")
153-
e = DocEvent(type="added_comment", doc=draft)
155+
e = SubmissionDocEvent(type="new_submission", doc=draft, submission=submission, rev=submission.rev)
154156
if pos > 0:
155157
desc = "Request for posting confirmation emailed %s" % (subevent.desc[pos + 23:])
156158
else:
@@ -224,11 +226,13 @@ def post_submission(request, submission, approvedDesc):
224226
events += post_rev00_submission_events(draft, submission, submitter)
225227

226228
# Add an approval docevent
227-
e = DocEvent.objects.create(
228-
type="added_comment",
229+
e = SubmissionDocEvent.objects.create(
230+
type="new_submission",
229231
doc=draft,
230232
by=system,
231-
desc=approvedDesc
233+
desc=approvedDesc,
234+
submission=submission,
235+
rev=submission.rev,
232236
)
233237
events.append(e)
234238

0 commit comments

Comments
 (0)