feat: Send mail when slides are approved (#5440)

This commit is contained in:
Paul Selkirk 2023-10-12 13:07:46 -04:00
parent 16f9e0e974
commit b04ffe1631
5 changed files with 64 additions and 0 deletions

View file

@ -0,0 +1,27 @@
# Copyright The IETF Trust 2023, All Rights Reserved
from django.db import migrations
def forward(apps, schema_editor):
MailTrigger = apps.get_model("mailtrigger", "MailTrigger")
Recipient = apps.get_model("mailtrigger", "Recipient")
mt = MailTrigger.objects.create(
slug="slides_approved",
desc="Recipients when slides are approved for a given session",
)
mt.to.add(Recipient.objects.get(slug="slides_proposer"))
mt.cc.add(Recipient.objects.get(slug="group_chairs"))
def reverse(apps, schema_editor):
MailTrigger = apps.get_model("mailtrigger", "MailTrigger")
mt = MailTrigger.objects.get(pk="slides_approved")
mt.delete()
class Migration(migrations.Migration):
dependencies = [
("mailtrigger", "0003_ballot_approved_charter"),
]
operations = [
migrations.RunPython(forward, reverse)
]

View file

@ -6406,6 +6406,9 @@ class MaterialsTests(TestCase):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertRegex(r.content.decode(), r"These\s+slides\s+have\s+already\s+been\s+approved")
self.assertEqual(len(outbox), 1)
self.assertIn(submission.submitter.email_address(), outbox[0]['To'])
self.assertIn('Slides approved', outbox[0]['Subject'])
def test_approve_proposed_slides_multisession_apply_one(self):
submission = SlideSubmissionFactory(session__meeting__type_id='ietf')

View file

@ -4555,6 +4555,17 @@ def approve_proposed_slides(request, slidesubmission_id, num):
submission.status = SlideSubmissionStatusName.objects.get(slug='approved')
submission.doc = doc
submission.save()
(to, cc) = gather_address_lists('slides_approved', group=submission.session.group, proposer=submission.submitter).as_strings()
msg_txt = render_to_string("meeting/slides_approved.txt", {
"to": to,
"cc": cc,
"submission": submission,
"settings": settings,
})
msg = infer_message(msg_txt)
msg.by = request.user.person
msg.save()
send_mail_message(request, msg)
return redirect('ietf.meeting.views.session_details',num=num,acronym=acronym)
elif request.POST.get('disapprove'):
# Errors in processing a submit request sometimes result

View file

@ -5588,6 +5588,19 @@
"model": "mailtrigger.mailtrigger",
"pk": "session_scheduled"
},
{
"fields": {
"cc": [
"group_chairs"
],
"desc": "Recipients when slides are approved for a given session",
"to": [
"slides_proposer"
]
},
"model": "mailtrigger.mailtrigger",
"pk": "slides_approved"
},
{
"fields": {
"cc": [

View file

@ -0,0 +1,10 @@
{% load ietf_filters %}{% autoescape off %}From: {{settings.DEFAULT_FROM_EMAIL}}
To: {{to}}{% if cc %}
Cc: {{cc}}{% endif %}
Subject: Slides approved for {{ submission.session.meeting }} : {{ submission.session.group.acronym }}{% if session.name %} : {{submission.session.name}}{% endif %}
Your proposed slides have been approved for {{ submission.session.meeting }} : {{ submission.session.group.acronym }}{% if session.name %} : {{submission.session.name}}{% endif %}
Title: {{submission.title}}
{% endautoescape %}