Changed a ReviewAssignmentDocEvent type from 'closed_review_request' to 'closed_review_assignment', for consistency and readability.
- Legacy-Id: 16181
This commit is contained in:
parent
9bfb488110
commit
ca1f3340c0
20
ietf/doc/migrations/0012_auto_20190501_0443.py
Normal file
20
ietf/doc/migrations/0012_auto_20190501_0443.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.20 on 2019-05-01 04:43
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('doc', '0011_reviewassignmentdocevent'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='docevent',
|
||||
name='type',
|
||||
field=models.CharField(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'edited_authors', b'Edited the documents author list'), (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'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request'), (b'closed_review_assignment', b'Closed review assignment'), (b'downref_approved', b'Downref approved')], max_length=50),
|
||||
),
|
||||
]
|
|
@ -994,6 +994,7 @@ EVENT_TYPES = [
|
|||
("requested_review", "Requested review"),
|
||||
("assigned_review_request", "Assigned review request"),
|
||||
("closed_review_request", "Closed review request"),
|
||||
("closed_review_assignment", "Closed review assignment"),
|
||||
|
||||
# downref
|
||||
("downref_approved", "Downref approved"),
|
||||
|
|
|
@ -19,7 +19,7 @@ import debug # pyflakes:ignore
|
|||
|
||||
import ietf.review.mailarch
|
||||
from ietf.doc.factories import NewRevisionDocEventFactory, WgDraftFactory, WgRfcFactory, ReviewFactory
|
||||
from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewAssignmentDocEvent
|
||||
from ietf.doc.models import DocumentAuthor, RelatedDocument, DocEvent, ReviewRequestDocEvent, ReviewAssignmentDocEvent
|
||||
from ietf.group.factories import RoleFactory, ReviewTeamFactory
|
||||
from ietf.group.models import Group
|
||||
from ietf.message.models import Message
|
||||
|
@ -207,9 +207,15 @@ class ReviewTests(TestCase):
|
|||
|
||||
review_req = reload_db_objects(review_req)
|
||||
self.assertEqual(review_req.state_id, "withdrawn")
|
||||
e = doc.latest_event()
|
||||
|
||||
e = doc.latest_event(ReviewRequestDocEvent)
|
||||
self.assertEqual(e.type, "closed_review_request")
|
||||
self.assertTrue("closed" in e.desc.lower())
|
||||
|
||||
e = doc.latest_event(ReviewAssignmentDocEvent)
|
||||
self.assertEqual(e.type, "closed_review_assignment")
|
||||
self.assertTrue("closed" in e.desc.lower())
|
||||
|
||||
self.assertEqual(len(outbox), 1)
|
||||
self.assertTrue("closed" in outbox[0].get_payload(decode=True).decode("utf-8").lower())
|
||||
|
||||
|
@ -465,7 +471,7 @@ class ReviewTests(TestCase):
|
|||
assignment = reload_db_objects(assignment)
|
||||
self.assertEqual(assignment.state_id, "rejected")
|
||||
e = doc.latest_event()
|
||||
self.assertEqual(e.type, "closed_review_request")
|
||||
self.assertEqual(e.type, "closed_review_assignment")
|
||||
self.assertTrue("rejected" in e.desc)
|
||||
self.assertEqual(len(outbox), 1)
|
||||
self.assertTrue("Test message" in outbox[0].get_payload(decode=True).decode("utf-8"))
|
||||
|
@ -867,7 +873,7 @@ class ReviewTests(TestCase):
|
|||
|
||||
assignment = reload_db_objects(assignment)
|
||||
self.assertEqual(assignment.state_id, "completed")
|
||||
event = ReviewAssignmentDocEvent.objects.get(type="closed_review_request", review_assignment=assignment)
|
||||
event = ReviewAssignmentDocEvent.objects.get(type="closed_review_assignment", review_assignment=assignment)
|
||||
self.assertEqual(event.time, datetime.datetime(2012, 12, 24, 12, 13, 14))
|
||||
|
||||
with open(os.path.join(self.review_subdir, assignment.review.name + ".txt")) as f:
|
||||
|
@ -892,7 +898,7 @@ class ReviewTests(TestCase):
|
|||
|
||||
assignment = reload_db_objects(assignment)
|
||||
self.assertEqual(assignment.review.rev, "01")
|
||||
event = ReviewAssignmentDocEvent.objects.get(type="closed_review_request", review_assignment=assignment)
|
||||
event = ReviewAssignmentDocEvent.objects.get(type="closed_review_assignment", review_assignment=assignment)
|
||||
self.assertEqual(event.time, datetime.datetime(2013, 12, 24, 11, 11, 11))
|
||||
|
||||
self.assertEqual(len(outbox), 0)
|
||||
|
|
|
@ -333,7 +333,7 @@ def reject_reviewer_assignment(request, name, assignment_id):
|
|||
review_assignment.save()
|
||||
|
||||
ReviewAssignmentDocEvent.objects.create(
|
||||
type="closed_review_request",
|
||||
type="closed_review_assignment",
|
||||
doc=review_assignment.review_request.doc,
|
||||
rev=review_assignment.review_request.doc.rev,
|
||||
by=request.user.person,
|
||||
|
@ -378,7 +378,7 @@ def withdraw_reviewer_assignment(request, name, assignment_id):
|
|||
review_assignment.save()
|
||||
|
||||
ReviewAssignmentDocEvent.objects.create(
|
||||
type="closed_review_request",
|
||||
type="closed_review_assignment",
|
||||
doc=review_assignment.review_request.doc,
|
||||
rev=review_assignment.review_request.doc.rev,
|
||||
by=request.user.person,
|
||||
|
@ -415,7 +415,7 @@ def mark_reviewer_assignment_no_response(request, name, assignment_id):
|
|||
review_assignment.save()
|
||||
|
||||
ReviewAssignmentDocEvent.objects.create(
|
||||
type="closed_review_request",
|
||||
type="closed_review_assignment",
|
||||
doc=review_assignment.review_request.doc,
|
||||
rev=review_assignment.review_request.doc.rev,
|
||||
by=request.user.person,
|
||||
|
@ -652,9 +652,9 @@ def complete_review(request, name, assignment_id):
|
|||
if need_to_email_review:
|
||||
desc += " " + "Sent review to list."
|
||||
|
||||
close_event = ReviewAssignmentDocEvent.objects.filter(type="closed_review_request", review_assignment=assignment).first()
|
||||
close_event = ReviewAssignmentDocEvent.objects.filter(type="closed_review_assignment", review_assignment=assignment).first()
|
||||
if not close_event:
|
||||
close_event = ReviewAssignmentDocEvent(type="closed_review_request", review_assignment=assignment)
|
||||
close_event = ReviewAssignmentDocEvent(type="closed_review_assignment", review_assignment=assignment)
|
||||
|
||||
close_event.doc = assignment.review_request.doc
|
||||
close_event.rev = assignment.review_request.doc.rev
|
||||
|
|
|
@ -583,7 +583,7 @@ def close_review_request(request, review_req, close_state):
|
|||
assignment.state_id = 'withdrawn'
|
||||
assignment.save()
|
||||
ReviewAssignmentDocEvent.objects.create(
|
||||
type='closed_review_request',
|
||||
type='closed_review_assignment',
|
||||
doc=review_req.doc,
|
||||
rev=review_req.doc.rev,
|
||||
by=request.user.person,
|
||||
|
|
|
@ -129,7 +129,8 @@ def send_smtp(msg, bcc=None):
|
|||
server.quit()
|
||||
except smtplib.SMTPServerDisconnected:
|
||||
pass
|
||||
log(u"sent email from '%s' to %s id %s subject '%s'" % (frm, to, msg.get('Message-ID', ''), msg.get('Subject', '[no subject]')))
|
||||
subj = msg.get('Subject', u'[no subject]')
|
||||
log(u"sent email from '%s' to %s id %s subject '%s'" % (frm, to, msg.get('Message-ID', u''), subj))
|
||||
|
||||
def copy_email(msg, to, toUser=False, originalBcc=None):
|
||||
'''
|
||||
|
@ -377,6 +378,23 @@ def parse_preformatted(preformatted, extra={}, override={}):
|
|||
else:
|
||||
extra[k] = v
|
||||
|
||||
# Handle non-ascii address names and some other fields
|
||||
for key in ['To', 'From', 'Cc', 'Bcc']:
|
||||
values = msg.get_all(key, [])
|
||||
if values:
|
||||
values = getaddresses(values)
|
||||
del msg[key]
|
||||
msg[key] = ',\n '.join(formataddr(v) for v in values)
|
||||
for key in ['Subject', ]:
|
||||
values = msg.get_all(key)
|
||||
if values:
|
||||
del msg[key]
|
||||
for v in values:
|
||||
if isascii(v):
|
||||
msg[key] = v
|
||||
else:
|
||||
msg[key] = Header(v, 'utf-8')
|
||||
|
||||
bcc = msg['Bcc']
|
||||
del msg['Bcc']
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
|
||||
import os
|
||||
import re
|
||||
import email
|
||||
import html5lib
|
||||
import sys
|
||||
import urllib2
|
||||
|
@ -109,6 +110,16 @@ class TestCase(django.test.TestCase):
|
|||
self.assertTrue(resp['Content-Type'].startswith('text/html'))
|
||||
self.assertValidHTML(resp.content)
|
||||
|
||||
def assertSameEmail(self, a, b, msg=None):
|
||||
def normalize(x):
|
||||
if x:
|
||||
if not isinstance(x, list):
|
||||
x = [ x ]
|
||||
x = email.utils.getaddresses(x)
|
||||
x.sort()
|
||||
return x
|
||||
return self.assertEqual(normalize(a), normalize(b), msg)
|
||||
|
||||
def tempdir(self, label):
|
||||
slug = slugify(self.__class__.__name__.replace('.','-'))
|
||||
dirname = "tmp-{label}-{slug}-dir".format(**locals())
|
||||
|
|
|
@ -73,10 +73,10 @@ body
|
|||
"""
|
||||
send_mail_preformatted(None, msg, {}, {})
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['To'], '<to1@example.com>, <to2@example.com>')
|
||||
self.assertEqual(recv['From'], 'from1@ietf.org, from2@ietf.org')
|
||||
self.assertEqual(recv['Cc'], 'cc1@example.com, cc2@example.com')
|
||||
self.assertEqual(recv['Bcc'], None)
|
||||
self.assertSameEmail(recv['To'], '<to1@example.com>, <to2@example.com>')
|
||||
self.assertSameEmail(recv['From'], 'from1@ietf.org, from2@ietf.org')
|
||||
self.assertSameEmail(recv['Cc'], 'cc1@example.com, cc2@example.com')
|
||||
self.assertSameEmail(recv['Bcc'], None)
|
||||
self.assertEqual(recv['Subject'], 'subject')
|
||||
self.assertEqual(recv.get_payload(), 'body\n')
|
||||
|
||||
|
@ -88,10 +88,10 @@ body
|
|||
}
|
||||
send_mail_preformatted(request=None, preformatted=msg, extra={}, override=override)
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['To'], '<oto1@example.net>, <oto2@example.net>')
|
||||
self.assertEqual(recv['From'], 'ofrom1@ietf.org, ofrom2@ietf.org')
|
||||
self.assertEqual(recv['Cc'], 'occ1@example.net, occ2@example.net')
|
||||
self.assertEqual(recv['Bcc'], None)
|
||||
self.assertSameEmail(recv['To'], '<oto1@example.net>, <oto2@example.net>')
|
||||
self.assertSameEmail(recv['From'], 'ofrom1@ietf.org, ofrom2@ietf.org')
|
||||
self.assertSameEmail(recv['Cc'], 'occ1@example.net, occ2@example.net')
|
||||
self.assertSameEmail(recv['Bcc'], None)
|
||||
self.assertEqual(recv['Subject'], 'osubject')
|
||||
self.assertEqual(recv.get_payload(), 'body\n')
|
||||
|
||||
|
@ -103,10 +103,10 @@ body
|
|||
}
|
||||
send_mail_preformatted(request=None, preformatted=msg, extra={}, override=override)
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['To'], '<oto1@example.net>, <oto2@example.net>')
|
||||
self.assertEqual(recv['From'], '<ofrom1@ietf.org>, ofrom2@ietf.org')
|
||||
self.assertEqual(recv['Cc'], '<occ1@example.net>, occ2@example.net')
|
||||
self.assertEqual(recv['Bcc'], None)
|
||||
self.assertSameEmail(recv['To'], '<oto1@example.net>, <oto2@example.net>')
|
||||
self.assertSameEmail(recv['From'], '<ofrom1@ietf.org>, ofrom2@ietf.org')
|
||||
self.assertSameEmail(recv['Cc'], '<occ1@example.net>, occ2@example.net')
|
||||
self.assertSameEmail(recv['Bcc'], None)
|
||||
self.assertEqual(recv['Subject'], 'osubject')
|
||||
self.assertEqual(recv.get_payload(), 'body\n')
|
||||
|
||||
|
|
Loading…
Reference in a new issue