Skip to content

Commit 541085b

Browse files
committed
Changed email notifications for reviews done to save the message as a Message instance before sending it. Added test code to check that a Message instance is created and matches what goes out.
- Legacy-Id: 12955
1 parent 3a21e03 commit 541085b

2 files changed

Lines changed: 34 additions & 13 deletions

File tree

ietf/doc/tests_review.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212

1313
import debug # pyflakes:ignore
1414

15+
import ietf.review.mailarch
16+
from ietf.doc.models import DocumentAuthor, Document, DocAlias, RelatedDocument, DocEvent, ReviewRequestDocEvent
17+
from ietf.group.models import Group
18+
from ietf.message.models import Message
19+
from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewTypeName, DocRelationshipName
20+
from ietf.person.models import Email, Person
1521
from ietf.review.models import (ReviewRequest, ReviewerSettings,
1622
ReviewWish, UnavailablePeriod, NextReviewerInTeam)
1723
from ietf.review.utils import reviewer_rotation_list, possibly_advance_next_reviewer_for_team
18-
import ietf.review.mailarch
19-
from ietf.person.models import Email, Person
20-
from ietf.name.models import ReviewResultName, ReviewRequestStateName, ReviewTypeName, DocRelationshipName
21-
from ietf.group.models import Group
22-
from ietf.doc.models import DocumentAuthor, Document, DocAlias, RelatedDocument, DocEvent, ReviewRequestDocEvent
24+
2325
from ietf.utils.test_utils import TestCase
2426
from ietf.utils.test_data import make_test_data, make_review_data, create_person
2527
from ietf.utils.test_utils import login_testing_unauthorized, unicontent, reload_db_objects
@@ -572,6 +574,12 @@ def test_complete_review_upload_content(self):
572574

573575
self.assertTrue(settings.MAILING_LIST_ARCHIVE_URL in review_req.review.external_url)
574576

577+
msgid = outbox[0]["Message-ID"]
578+
message = Message.objects.get(msgid=msgid)
579+
self.assertEqual(email.utils.parseaddr(outbox[0]["To"]), email.utils.parseaddr(message.to))
580+
self.assertEqual(email.utils.parseaddr(outbox[0]["From"]), email.utils.parseaddr(message.frm))
581+
self.assertEqual(outbox[0].get_payload(decode=True).decode(str(outbox[0].get_charset())), message.body)
582+
575583
# check the review document page
576584
url = urlreverse('ietf.doc.views_doc.document_main', kwargs={ "name": review_req.review.name })
577585
r = self.client.get(url)

ietf/doc/views_review.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
from ietf.name.models import ReviewRequestStateName, ReviewResultName, DocTypeName
1717
from ietf.review.models import ReviewRequest
1818
from ietf.group.models import Group
19-
from ietf.person.fields import PersonEmailChoiceField, SearchablePersonField
2019
from ietf.ietfauth.utils import is_authorized_in_doc_stream, user_is_person, has_role
20+
from ietf.message.models import Message
21+
from ietf.person.fields import PersonEmailChoiceField, SearchablePersonField
2122
from ietf.review.utils import (active_review_teams, assign_review_request_to_reviewer,
2223
can_request_review_of_doc, can_manage_review_requests_for_team,
2324
email_review_request_change, make_new_review_request_from_existing,
@@ -27,7 +28,7 @@
2728
from ietf.utils.fields import DatepickerDateField
2829
from ietf.utils.text import strip_prefix, xslugify
2930
from ietf.utils.textupload import get_cleaned_text_file_content
30-
from ietf.utils.mail import send_mail
31+
from ietf.utils.mail import send_mail_message
3132
from ietf.mailtrigger.utils import gather_address_lists
3233
from ietf.utils.fields import MultiEmailField
3334

@@ -564,12 +565,24 @@ def complete_review(request, name, request_id):
564565
frm = role.formatted_email()
565566
else:
566567
frm = request.user.person.formatted_email()
567-
msg = send_mail(request, to, frm, subject,
568-
"review/completed_review.txt", {
569-
"review_req": review_req,
570-
"content": encoded_content.decode("utf-8"),
571-
},
572-
cc=form.cleaned_data["cc"])
568+
related_groups = [ review_req.team, ]
569+
if review_req.doc.group:
570+
related_groups.append(review_req.doc.group)
571+
msg = Message.objects.create(
572+
by=request.user.person,
573+
subject=subject,
574+
frm=frm,
575+
to=", ".join(to),
576+
cc=form.cleaned_data["cc"],
577+
body = render_to_string("review/completed_review.txt", {
578+
"review_req": review_req,
579+
"content": encoded_content.decode("utf-8"),
580+
}),
581+
)
582+
msg.related_groups.add(*related_groups)
583+
msg.related_docs.add(review_req.doc)
584+
585+
msg = send_mail_message(request, msg)
573586

574587
list_name = mailarch.list_name_from_email(review_req.team.list_email)
575588
if list_name:

0 commit comments

Comments
 (0)