Replaced the use of plain DocEvent for submission doc events with a SubmissionDocEvent that carries rev and a FK to submission.
- Legacy-Id: 12275
This commit is contained in:
parent
4af0c0244b
commit
7f1c1e43f2
32
ietf/doc/migrations/0015_auto_20161101_2313.py
Normal file
32
ietf/doc/migrations/0015_auto_20161101_2313.py
Normal file
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('submit', '0016_fix_duplicate_upload_docevents'),
|
||||
('doc', '0014_auto_20160524_2147'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SubmissionDocEvent',
|
||||
fields=[
|
||||
('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
||||
('rev', models.CharField(max_length=16)),
|
||||
('submission', models.ForeignKey(to='submit.Submission')),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=('doc.docevent',),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='docevent',
|
||||
name='type',
|
||||
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')]),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -663,6 +663,7 @@ class DocReminder(models.Model):
|
|||
EVENT_TYPES = [
|
||||
# core events
|
||||
("new_revision", "Added new revision"),
|
||||
("new_submission", "Uploaded new revision"),
|
||||
("changed_document", "Changed document metadata"),
|
||||
("added_comment", "Added comment"),
|
||||
("added_message", "Added message"),
|
||||
|
@ -865,6 +866,11 @@ class AddedMessageEvent(DocEvent):
|
|||
in_reply_to = models.ForeignKey(ietf.message.models.Message, null=True, blank=True,related_name='doc_irtomanual')
|
||||
|
||||
|
||||
class SubmissionDocEvent(DocEvent):
|
||||
import ietf.submit.models
|
||||
rev = models.CharField(max_length=16)
|
||||
submission = models.ForeignKey(ietf.submit.models.Submission)
|
||||
|
||||
# dumping store for removed events
|
||||
class DeletedEvent(models.Model):
|
||||
content_type = models.ForeignKey(ContentType)
|
||||
|
|
|
@ -11,7 +11,7 @@ from ietf.doc.models import (BallotType, DeletedEvent, StateType, State, Documen
|
|||
DocumentAuthor, DocEvent, StateDocEvent, DocHistory, ConsensusDocEvent, DocAlias,
|
||||
TelechatDocEvent, DocReminder, LastCallDocEvent, NewRevisionDocEvent, WriteupDocEvent,
|
||||
InitialReviewDocEvent, DocHistoryAuthor, BallotDocEvent, RelatedDocument,
|
||||
RelatedDocHistory, BallotPositionDocEvent, AddedMessageEvent)
|
||||
RelatedDocHistory, BallotPositionDocEvent, AddedMessageEvent, SubmissionDocEvent)
|
||||
|
||||
|
||||
from ietf.name.resources import BallotPositionNameResource, DocTypeNameResource
|
||||
|
@ -542,3 +542,30 @@ class AddedMessageEventResource(ModelResource):
|
|||
}
|
||||
api.doc.register(AddedMessageEventResource())
|
||||
|
||||
|
||||
|
||||
from ietf.person.resources import PersonResource
|
||||
from ietf.submit.resources import SubmissionResource
|
||||
class SubmissionDocEventResource(ModelResource):
|
||||
by = ToOneField(PersonResource, 'by')
|
||||
doc = ToOneField(DocumentResource, 'doc')
|
||||
docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr')
|
||||
submission = ToOneField(SubmissionResource, 'submission')
|
||||
class Meta:
|
||||
queryset = SubmissionDocEvent.objects.all()
|
||||
serializer = api.Serializer()
|
||||
cache = SimpleCache()
|
||||
#resource_name = 'submissiondocevent'
|
||||
filtering = {
|
||||
"id": ALL,
|
||||
"time": ALL,
|
||||
"type": ALL,
|
||||
"desc": ALL,
|
||||
"rev": ALL,
|
||||
"by": ALL_WITH_RELATIONS,
|
||||
"doc": ALL_WITH_RELATIONS,
|
||||
"docevent_ptr": ALL_WITH_RELATIONS,
|
||||
"submission": ALL_WITH_RELATIONS,
|
||||
}
|
||||
api.doc.register(SubmissionDocEventResource())
|
||||
|
||||
|
|
|
@ -238,12 +238,12 @@ def augment_events_with_revision(doc, events):
|
|||
while event_revisions and (e.time, e.id) < (event_revisions[-1]["time"], event_revisions[-1]["id"]):
|
||||
event_revisions.pop()
|
||||
|
||||
if event_revisions:
|
||||
cur_rev = event_revisions[-1]["rev"]
|
||||
else:
|
||||
cur_rev = "00"
|
||||
|
||||
e.rev = cur_rev
|
||||
if not hasattr(e, 'rev'):
|
||||
if event_revisions:
|
||||
cur_rev = event_revisions[-1]["rev"]
|
||||
else:
|
||||
cur_rev = "00"
|
||||
e.rev = cur_rev
|
||||
|
||||
def add_links_in_new_revision_events(doc, events, diff_revisions):
|
||||
"""Add direct .txt links and diff links to new_revision events."""
|
||||
|
|
|
@ -374,7 +374,7 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(r.status_code, 302)
|
||||
|
||||
# check we have document events
|
||||
doc_events = draft.docevent_set.filter(type="added_comment")
|
||||
doc_events = draft.docevent_set.filter(type__in=["new_submission", "added_comment"])
|
||||
edescs = '::'.join([x.desc for x in doc_events])
|
||||
self.assertTrue('New version approved' in edescs)
|
||||
self.assertTrue('Uploaded new revision' in edescs)
|
||||
|
@ -386,17 +386,17 @@ class SubmitTests(TestCase):
|
|||
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.assertEqual(docevents[4].type, "new_submission")
|
||||
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.assertEqual(docevents[3].type, "new_submission")
|
||||
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.assertEqual(docevents[2].type, "new_submission")
|
||||
self.assertIn("New version approved", docevents[2].desc)
|
||||
self.assertEqual(docevents[2].by.name, "(System)")
|
||||
self.assertGreater(docevents[2].id, docevents[3].id)
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.conf import settings
|
|||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.doc.models import ( Document, State, DocAlias, DocEvent,
|
||||
from ietf.doc.models import ( Document, State, DocAlias, DocEvent, SubmissionDocEvent,
|
||||
DocumentAuthor, AddedMessageEvent )
|
||||
from ietf.doc.models import NewRevisionDocEvent
|
||||
from ietf.doc.models import RelatedDocument, DocRelationshipName
|
||||
|
@ -129,11 +129,13 @@ def docevent_from_submission(request, submission, desc, who=None):
|
|||
else:
|
||||
by = system
|
||||
|
||||
e = DocEvent.objects.create(
|
||||
e = SubmissionDocEvent.objects.create(
|
||||
doc=draft,
|
||||
by = by,
|
||||
type = "added_comment",
|
||||
type = "new_submission",
|
||||
desc = desc,
|
||||
submission = submission,
|
||||
rev = submission.rev,
|
||||
)
|
||||
return e
|
||||
|
||||
|
@ -145,12 +147,12 @@ def post_rev00_submission_events(draft, submission, submitter):
|
|||
desc = subevent.desc
|
||||
if desc.startswith("Uploaded submission"):
|
||||
desc = "Uploaded new revision"
|
||||
e = DocEvent(type="added_comment", doc=draft)
|
||||
e = SubmissionDocEvent(type="new_submission", doc=draft, submission=submission, rev=submission.rev )
|
||||
elif desc.startswith("Submission created"):
|
||||
e = DocEvent(type="added_comment", doc=draft)
|
||||
e = SubmissionDocEvent(type="new_submission", doc=draft, submission=submission, rev=submission.rev)
|
||||
elif desc.startswith("Set submitter to"):
|
||||
pos = subevent.desc.find("sent confirmation email")
|
||||
e = DocEvent(type="added_comment", doc=draft)
|
||||
e = SubmissionDocEvent(type="new_submission", doc=draft, submission=submission, rev=submission.rev)
|
||||
if pos > 0:
|
||||
desc = "Request for posting confirmation emailed %s" % (subevent.desc[pos + 23:])
|
||||
else:
|
||||
|
@ -224,11 +226,13 @@ def post_submission(request, submission, approvedDesc):
|
|||
events += post_rev00_submission_events(draft, submission, submitter)
|
||||
|
||||
# Add an approval docevent
|
||||
e = DocEvent.objects.create(
|
||||
type="added_comment",
|
||||
e = SubmissionDocEvent.objects.create(
|
||||
type="new_submission",
|
||||
doc=draft,
|
||||
by=system,
|
||||
desc=approvedDesc
|
||||
desc=approvedDesc,
|
||||
submission=submission,
|
||||
rev=submission.rev,
|
||||
)
|
||||
events.append(e)
|
||||
|
||||
|
|
Loading…
Reference in a new issue