Skip to content

Commit 4c0a3f6

Browse files
committed
feat(eap): Add partners contact emails and attachment in email notification
1 parent 7b23e47 commit 4c0a3f6

File tree

7 files changed

+65
-35
lines changed

7 files changed

+65
-35
lines changed

assets

eap/tasks.py

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
from api.playwright import render_pdf_from_url
1212
from api.utils import generate_eap_export_url
1313
from eap.models import EAPRegistration, EAPType, FullEAP, SimplifiedEAP
14-
from eap.utils import get_coordinator_emails_by_region, get_eap_email_context
14+
from eap.utils import (
15+
get_coordinator_emails_by_region,
16+
get_eap_email_context,
17+
get_eap_registration_email_context,
18+
)
1519
from main.utils import logger_context
1620
from notifications.notification import send_notification
1721

@@ -113,7 +117,6 @@ def generate_export_eap_pdf(eap_registration_id, version):
113117
eap_registration = EAPRegistration.objects.get(id=eap_registration_id)
114118
user = User.objects.get(id=eap_registration.created_by_id)
115119
token = Token.objects.filter(user=user).last()
116-
117120
url = generate_eap_export_url(
118121
registration_id=eap_registration_id,
119122
version=version,
@@ -181,7 +184,7 @@ def send_new_eap_registration_email(eap_registration_id: int):
181184
]
182185
)
183186
)
184-
email_context = get_eap_email_context(instance)
187+
email_context = get_eap_registration_email_context(instance)
185188
email_subject = (
186189
f"[{instance.get_eap_type_display() if instance.get_eap_type_display() else 'EAP'} IN DEVELOPMENT] "
187190
f"{instance.country} {instance.disaster_type}"
@@ -206,12 +209,17 @@ def send_new_eap_submission_email(eap_registration_id: int):
206209
if not instance:
207210
return None
208211

209-
partner_contacts = (
210-
instance.latest_simplified_eap.partner_contacts
211-
if instance.get_eap_type_enum == EAPType.SIMPLIFIED_EAP
212-
else instance.latest_full_eap.partner_contacts
213-
)
212+
if instance.get_eap_type_enum == EAPType.SIMPLIFIED_EAP:
213+
latest_eap = instance.latest_simplified_eap
214+
else:
215+
latest_eap = instance.latest_full_eap
214216

217+
if not latest_eap.export_file:
218+
generate_export_eap_pdf(
219+
eap_registration_id=instance.id,
220+
version=latest_eap.version,
221+
)
222+
partner_contacts = latest_eap.partner_contacts
215223
partner_ns_emails = list(partner_contacts.values_list("email", flat=True))
216224

217225
regional_coordinator_emails: list[str] = get_coordinator_emails_by_region(instance.country.region)
@@ -258,7 +266,9 @@ def send_feedback_email(eap_registration_id: int):
258266
latest_eap = instance.latest_simplified_eap
259267
else:
260268
latest_eap = instance.latest_full_eap
269+
261270
ifrc_delegation_focal_point_email = latest_eap.ifrc_delegation_focal_point_email
271+
262272
partner_contacts = latest_eap.partner_contacts
263273
partner_ns_emails = list(partner_contacts.values_list("email", flat=True))
264274

@@ -303,13 +313,19 @@ def send_eap_resubmission_email(eap_registration_id: int):
303313
instance = EAPRegistration.objects.filter(id=eap_registration_id).first()
304314
if not instance:
305315
return None
306-
307316
if instance.get_eap_type_enum == EAPType.SIMPLIFIED_EAP:
308317
latest_eap = instance.latest_simplified_eap
309318
else:
310319
latest_eap = instance.latest_full_eap
311320

312321
latest_version = latest_eap.version
322+
323+
if not latest_eap.diff_file:
324+
generate_export_diff_pdf(
325+
eap_registration_id=instance.id,
326+
version=latest_eap.version,
327+
)
328+
313329
partner_contacts = latest_eap.partner_contacts
314330
partner_ns_emails = list(partner_contacts.values_list("email", flat=True))
315331

@@ -464,12 +480,17 @@ def send_pending_pfa_email(eap_registration_id: int):
464480
if not instance:
465481
return None
466482

467-
partner_contacts = (
468-
instance.latest_simplified_eap.partner_contacts
469-
if instance.get_eap_type_enum == EAPType.SIMPLIFIED_EAP
470-
else instance.latest_full_eap.partner_contacts
471-
)
483+
if instance.get_eap_type_enum == EAPType.SIMPLIFIED_EAP:
484+
latest_eap = instance.latest_simplified_eap
485+
else:
486+
latest_eap = instance.latest_full_eap
487+
488+
if not latest_eap.summary_file:
489+
generate_eap_summary_pdf(
490+
eap_registration_id=instance.id,
491+
)
472492

493+
partner_contacts = latest_eap.partner_contacts
473494
partner_ns_emails = list(partner_contacts.values_list("email", flat=True))
474495

475496
regional_coordinator_emails: list[str] = get_coordinator_emails_by_region(instance.country.region)

eap/test_views.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1746,9 +1746,6 @@ def test_status_transitions_trigger_email(
17461746

17471747
self.assert_200(response)
17481748
eap_registration.refresh_from_db()
1749-
self.assertIsNotNone(
1750-
self.eap_registration.review_checklist_file,
1751-
)
17521749
self.assertEqual(response.data["status"], EAPStatus.NS_ADDRESSING_COMMENTS)
17531750
send_feedback_email.delay.assert_called_once_with(eap_registration.id)
17541751
send_feedback_email.delay.reset_mock()
@@ -1807,9 +1804,6 @@ def test_status_transitions_trigger_email(
18071804

18081805
self.assert_200(response)
18091806
eap_registration.refresh_from_db()
1810-
self.assertIsNotNone(
1811-
self.eap_registration.review_checklist_file,
1812-
)
18131807
self.assertEqual(response.data["status"], EAPStatus.NS_ADDRESSING_COMMENTS)
18141808
send_feedback_email_for_resubmitted_eap.delay.assert_called_once_with(eap_registration.id)
18151809
send_feedback_email_for_resubmitted_eap.delay.reset_mock()
@@ -1877,9 +1871,6 @@ def test_status_transitions_trigger_email(
18771871

18781872
self.assert_200(response)
18791873
eap_registration.refresh_from_db()
1880-
self.assertIsNotNone(
1881-
self.eap_registration.review_checklist_file,
1882-
)
18831874
self.assertEqual(response.data["status"], EAPStatus.NS_ADDRESSING_COMMENTS)
18841875
send_feedback_email_for_resubmitted_eap.delay.assert_called_once_with(eap_registration.id)
18851876
send_feedback_email_for_resubmitted_eap.delay.reset_mock()

eap/utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,25 @@ def get_file_url(file_obj):
4747
return file_obj.file.url
4848

4949

50+
def get_eap_registration_email_context(instance):
51+
from eap.serializers import EAPRegistrationSerializer
52+
53+
eap_registration_data = EAPRegistrationSerializer(instance).data
54+
email_context = {
55+
"registration_id": eap_registration_data["id"],
56+
"eap_type_display": eap_registration_data["eap_type_display"],
57+
"country_name": eap_registration_data["country_details"]["name"],
58+
"national_society": eap_registration_data["national_society_details"]["society_name"],
59+
"supporting_partners": eap_registration_data["partners_details"],
60+
"disaster_type": eap_registration_data["disaster_type_details"]["name"],
61+
"ns_contact_name": eap_registration_data["national_society_contact_name"],
62+
"ns_contact_email": eap_registration_data["national_society_contact_email"],
63+
"ns_contact_phone": eap_registration_data["national_society_contact_phone_number"],
64+
"frontend_url": settings.GO_WEB_URL,
65+
}
66+
return email_context
67+
68+
5069
def get_eap_email_context(instance):
5170
from eap.serializers import EAPRegistrationSerializer
5271

notifications/templates/email/eap/pending_pfa.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@
3131
</a>
3232
</li>
3333
{% endif %}
34-
<li>Auto-generated Summary PDF</li>
34+
<li>
35+
<a href="{{ summary_file }}">
36+
Auto-generated Summary PDF
37+
</a>
38+
</li>
3539
</ul>
3640
<p style="margin-top:16px;">
3741
Congratulations again and warm wishes,<br>

notifications/templates/email/eap/re-submission.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,14 @@
8383

8484
<p>Attachments:</p>
8585
<ul>
86-
<li>Revised EAP PDF with modifications in tracked changes</li>
87-
{% if budget_file %}
86+
<li> <a href="{{ diff_file }}">
87+
Revised EAP PDF
88+
</a></li>
8889
<li>
8990
<a href="{{ budget_file }}">
9091
Revised EAP budget
9192
</a>
9293
</li>
93-
{% endif %}
9494
{% if updated_checklist_file %}
9595
<li>
9696
<a href="{{ updated_checklist_file }}">

notifications/templates/email/eap/submission.html

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,21 +58,16 @@
5858
</p>
5959
<strong>Attached documents:</strong><br>
6060
<ul>
61-
{% if export_file %}
62-
<li>
63-
<a href="{{ export_file }}">
61+
<li>
62+
<a href="{{ export_file }}">
6463
Export PDF
6564
</a>
6665
</li>
67-
{% endif %}
68-
69-
{% if budget_file %}
7066
<li>
7167
<a href="{{ budget_file }}">
7268
Budget file
7369
</a>
7470
</li>
75-
{% endif %}
7671
</ul>
7772
<!-- Signature -->
7873
<p style="margin-top:16px;">

0 commit comments

Comments
 (0)