Skip to content

Commit e2fccfb

Browse files
committed
Merged in ^/branch/scow/track-manual-id-posts-6.31.1.dev0@11899, which provides better support for manual ID posting.
- Legacy-Id: 11914
2 parents 690589d + fa3a343 commit e2fccfb

35 files changed

Lines changed: 1902 additions & 130 deletions
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
('message', '__first__'),
11+
('doc', '0013_auto_20151027_1127'),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='AddedMessageEvent',
17+
fields=[
18+
('docevent_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='doc.DocEvent')),
19+
('msgtype', models.CharField(max_length=25)),
20+
('in_reply_to', models.ForeignKey(related_name='doc_irtomanual', blank=True, to='message.Message', null=True)),
21+
('message', models.ForeignKey(related_name='doc_manualevents', blank=True, to='message.Message', null=True)),
22+
],
23+
options={
24+
},
25+
bases=('doc.docevent',),
26+
),
27+
migrations.AlterField(
28+
model_name='docevent',
29+
name='type',
30+
field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added 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')]),
31+
preserve_default=True,
32+
),
33+
]

ietf/doc/migrations/0014_auto_20160824_2218.py renamed to ietf/doc/migrations/0015_auto_20160824_2218.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class Migration(migrations.Migration):
88

99
dependencies = [
10-
('doc', '0013_auto_20151027_1127'),
10+
('doc', '0014_auto_20160524_2147'),
1111
]
1212

1313
operations = [

ietf/doc/models.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ class DocReminder(models.Model):
623623
("new_revision", "Added new revision"),
624624
("changed_document", "Changed document metadata"),
625625
("added_comment", "Added comment"),
626+
("added_message", "Added message"),
626627

627628
("deleted", "Deleted document"),
628629

@@ -815,6 +816,13 @@ class InitialReviewDocEvent(DocEvent):
815816
expires = models.DateTimeField(blank=True, null=True)
816817

817818

819+
class AddedMessageEvent(DocEvent):
820+
import ietf.message.models
821+
message = models.ForeignKey(ietf.message.models.Message, null=True, blank=True,related_name='doc_manualevents')
822+
msgtype = models.CharField(max_length=25)
823+
in_reply_to = models.ForeignKey(ietf.message.models.Message, null=True, blank=True,related_name='doc_irtomanual')
824+
825+
818826
# dumping store for removed events
819827
class DeletedEvent(models.Model):
820828
content_type = models.ForeignKey(ContentType)

ietf/doc/resources.py

Lines changed: 30 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)
14+
RelatedDocHistory, BallotPositionDocEvent, AddedMessageEvent)
1515

1616

1717
from ietf.name.resources import BallotPositionNameResource, DocTypeNameResource
@@ -513,3 +513,32 @@ class Meta:
513513
}
514514
api.doc.register(BallotPositionDocEventResource())
515515

516+
517+
518+
from ietf.person.resources import PersonResource
519+
from ietf.message.resources import MessageResource
520+
class AddedMessageEventResource(ModelResource):
521+
by = ToOneField(PersonResource, 'by')
522+
doc = ToOneField(DocumentResource, 'doc')
523+
docevent_ptr = ToOneField(DocEventResource, 'docevent_ptr')
524+
message = ToOneField(MessageResource, 'message', null=True)
525+
in_reply_to = ToOneField(MessageResource, 'in_reply_to', null=True)
526+
class Meta:
527+
queryset = AddedMessageEvent.objects.all()
528+
serializer = api.Serializer()
529+
cache = SimpleCache()
530+
#resource_name = 'addedmessageevent'
531+
filtering = {
532+
"id": ALL,
533+
"time": ALL,
534+
"type": ALL,
535+
"desc": ALL,
536+
"msgtype": ALL,
537+
"by": ALL_WITH_RELATIONS,
538+
"doc": ALL_WITH_RELATIONS,
539+
"docevent_ptr": ALL_WITH_RELATIONS,
540+
"message": ALL_WITH_RELATIONS,
541+
"in_reply_to": ALL_WITH_RELATIONS,
542+
}
543+
api.doc.register(AddedMessageEventResource())
544+

ietf/doc/utils.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,16 @@ def add_links_in_new_revision_events(doc, events, diff_revisions):
276276
prev = diff_url
277277

278278

279+
def add_events_message_info(events):
280+
for e in events:
281+
if not e.type == "added_message":
282+
continue
283+
284+
e.message = e.addedmessageevent.message
285+
e.msgtype = e.addedmessageevent.msgtype
286+
e.in_reply_to = e.addedmessageevent.in_reply_to
287+
288+
279289
def get_document_content(key, filename, split=True, markup=True):
280290
try:
281291
with open(filename, 'rb') as f:

ietf/doc/views_doc.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
from ietf.doc.utils import ( add_links_in_new_revision_events, augment_events_with_revision,
5151
can_adopt_draft, get_chartering_type, get_document_content, get_tags_for_stream_id,
5252
needed_ballot_positions, nice_consensus, prettify_std_name, update_telechat, has_same_ballot,
53-
get_initial_notify, make_notify_changed_event, crawl_history, default_consensus)
53+
get_initial_notify, make_notify_changed_event, crawl_history, default_consensus,
54+
add_events_message_info)
5455
from ietf.community.utils import augment_docs_with_tracking_info
5556
from ietf.group.models import Role
5657
from ietf.group.utils import can_manage_group, can_manage_materials
@@ -657,6 +658,7 @@ def document_history(request, name):
657658

658659
augment_events_with_revision(doc, events)
659660
add_links_in_new_revision_events(doc, events, diff_revisions)
661+
add_events_message_info(events)
660662

661663
# figure out if the current user can add a comment to the history
662664
if doc.type_id == "draft" and doc.group != None:
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 migrations
5+
6+
7+
def forward(apps, schema_editor):
8+
9+
Recipient=apps.get_model('mailtrigger','Recipient')
10+
11+
rc = Recipient.objects.create
12+
13+
rc(slug='manualpost_message',
14+
desc='The IETF manual post processing system',
15+
template='<ietf-manualpost@ietf.org>')
16+
17+
18+
def reverse(apps, schema_editor):
19+
Recipient=apps.get_model('mailtrigger','Recipient')
20+
21+
Recipient.objects.filter(slug='manualpost_message').delete()
22+
23+
24+
class Migration(migrations.Migration):
25+
26+
dependencies = [
27+
('mailtrigger', '0005_interim_trigger'),
28+
]
29+
30+
operations = [
31+
migrations.RunPython(forward, reverse)
32+
]

ietf/mailtrigger/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ def starts_with(prefix):
8080
rule_list.append((mailtrigger.slug,mailtrigger.desc,addrs.to,addrs.cc))
8181
return sorted(rule_list)
8282

83+
def get_base_submission_message_address():
84+
return Recipient.objects.get(slug='manualpost_message').gather()[0]
85+
8386
def get_base_ipr_request_address():
8487
return Recipient.objects.get(slug='ipr_requests').gather()[0]
8588

ietf/message/models.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,19 @@ class Meta:
2828
def __unicode__(self):
2929
return "'%s' %s -> %s" % (self.subject, self.frm, self.to)
3030

31+
32+
class MessageAttachment(models.Model):
33+
message = models.ForeignKey(Message)
34+
filename = models.CharField(max_length=255, db_index=True, blank=True)
35+
content_type = models.CharField(max_length=255, blank=True)
36+
encoding = models.CharField(max_length=255, blank=True)
37+
removed = models.BooleanField(default=False)
38+
body = models.TextField()
39+
40+
def __unicode__(self):
41+
return self.filename
42+
43+
3144
class SendQueue(models.Model):
3245
time = models.DateTimeField(default=datetime.datetime.now)
3346
by = models.ForeignKey(Person)

ietf/message/resources.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77

88
from ietf import api
99

10-
from ietf.message.models import Message, SendQueue
11-
10+
from ietf.message.models import Message, SendQueue, MessageAttachment
1211

1312
from ietf.person.resources import PersonResource
1413
from ietf.group.resources import GroupResource
1514
from ietf.doc.resources import DocumentResource
15+
1616
class MessageResource(ModelResource):
1717
by = ToOneField(PersonResource, 'by')
1818
related_groups = ToManyField(GroupResource, 'related_groups', null=True)
@@ -59,3 +59,21 @@ class Meta:
5959
}
6060
api.message.register(SendQueueResource())
6161

62+
63+
64+
class MessageAttachmentResource(ModelResource):
65+
message = ToOneField(MessageResource, 'message')
66+
class Meta:
67+
queryset = MessageAttachment.objects.all()
68+
serializer = api.Serializer()
69+
cache = SimpleCache()
70+
#resource_name = 'messageattachment'
71+
filtering = {
72+
"id": ALL,
73+
"filename": ALL,
74+
"removed": ALL,
75+
"body": ALL,
76+
"message": ALL_WITH_RELATIONS,
77+
}
78+
api.message.register(MessageAttachmentResource())
79+

0 commit comments

Comments
 (0)