Merge pull request #6470 from pselkirk/feat-5440

feat: Send mail when slides are approved
This commit is contained in:
Robert Sparks 2023-10-16 12:46:13 -05:00 committed by GitHub
commit c84199630b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 58 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

@ -6394,6 +6394,7 @@ class MaterialsTests(TestCase):
self.assertIsNone(submission.doc)
r = self.client.get(url)
self.assertEqual(r.status_code,200)
empty_outbox()
r = self.client.post(url,dict(title='different title',approve='approve'))
self.assertEqual(r.status_code,302)
self.assertEqual(SlideSubmission.objects.filter(status__slug = 'pending').count(), 0)
@ -6406,6 +6407,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,15 @@ 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()
subject = f"Slides approved for {submission.session.meeting} : {submission.session.group.acronym}{' : '+submission.session.name if submission.session.name else ''}"
body = render_to_string("meeting/slides_approved.txt", {
"to": to,
"cc": cc,
"submission": submission,
"settings": settings,
})
send_mail_text(request, to, None, subject, body, cc=cc)
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,5 @@
{% load ietf_filters %}{% autoescape off %}Your proposed slides have been approved for {{ submission.session.meeting }} : {{ submission.session.group.acronym }}{% if submission.session.name %} : {{submission.session.name}}{% endif %}
Title: {{submission.title}}
{% endautoescape %}