Skip to content
This repository has been archived by the owner on Feb 1, 2024. It is now read-only.

Commit

Permalink
Email list contributors about facility claims
Browse files Browse the repository at this point in the history
- email list contributors when a facility claim is approved
- email list contributors when an approved facility claim's profile
details have been updated
  • Loading branch information
Kelly Innes committed Jun 17, 2019
1 parent a8e0420 commit eb5a93b
Show file tree
Hide file tree
Showing 9 changed files with 203 additions and 5 deletions.
72 changes: 72 additions & 0 deletions src/django/api/mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,75 @@ def send_claim_facility_revocation_email(request, facility_claim):
[facility_claim.email],
html_message=html_template.render(revocation_dictionary)
)


def send_approved_claim_notice_to_one_contributor(request, claim, contributor):
subj_template = get_template(
'mail/approved_facility_claim_contributor_notice_subject.txt')
text_template = get_template(
'mail/approved_facility_claim_contributor_notice_body.txt')
html_template = get_template(
'mail/approved_facility_claim_contributor_notice_body.html')

notice_dictionary = {
'facility_name': claim.facility.name,
'facility_address': claim.facility.address,
'facility_url': make_facility_url(request, claim.facility),
}

send_mail(
subj_template.render().rstrip(),
text_template.render(notice_dictionary),
settings.DEFAULT_FROM_EMAIL,
[contributor.admin.email],
html_message=html_template.render(notice_dictionary)
)


def send_approved_claim_notice_to_list_contributors(request, facility_claim):
list_contributors = [
list_item.facility_list.contributor
for list_item in
facility_claim.facility.facilitylistitem_set.all()
]

for contributor in list_contributors:
send_approved_claim_notice_to_one_contributor(request,
facility_claim,
contributor)


def send_claim_update_note_to_one_contributor(request, claim, contributor):
subj_template = get_template(
'mail/facility_claim_profile_update_contributor_notice_subject.txt')
text_template = get_template(
'mail/facility_claim_profile_update_contributor_notice_body.txt')
html_template = get_template(
'mail/facility_claim_profile_update_contributor_notice_body.html')

notice_dictionary = {
'facility_name': claim.facility.name,
'facility_address': claim.facility.address,
'facility_url': make_facility_url(request, claim.facility),
}

send_mail(
subj_template.render().rstrip(),
text_template.render(notice_dictionary),
settings.DEFAULT_FROM_EMAIL,
[contributor.admin.email],
html_message=html_template.render(notice_dictionary)
)


def send_claim_update_notice_to_list_contributors(request, facility_claim):
list_contributors = [
list_item.facility_list.contributor
for list_item in
facility_claim.facility.facilitylistitem_set.all()
]

for contributor in list_contributors:
send_claim_update_note_to_one_contributor(request,
facility_claim,
contributor)
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
An OAR facility on one of your facility lists has been claimed
</title>
</head>
<body>
<p>
Hi,
</p>
<p>
You're receiving this email because we approved a facility claim
for a facility appearing on one of your facility lists.
</p>
<p>
The facility is:
</p>
<ul>
<li>
Facility: {{ facility_name }}, {{ facility_address }}
</li>
<li>
Facility URL: {{ facility_url }}
</li>
</ul>
<p>
Sincerely,
</p>
{% include "mail/signature_block.html" %}
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Hi,

You're receiving this email because we approved a facility claim for a facility
appearing on one of your facility lists.

The facility is:

- Facility: {{ facility_name }}, {{ facility_address }}
- Facility URL: {{ facility_url }}

Sincerely,
{% include "mail/signature_block.txt" %}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
An OAR facility on one of your facility lists has been claimed
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
An OAR facility on one of your facility lists has had its
facility claim data updated
</title>
</head>
<body>
<p>
Hi,
</p>
<p>
You're receiving this email because a facility on one of your
facility lists has had its facility claim data updated.
</p>
<p>
The facility is:
</p>
<ul>
<li>
Facility: {{ facility_name }}, {{ facility_address }}
</li>
<li>
Facility URL: {{ facility_url }}
</li>
</ul>
<p>
Sincerely,
</p>
{% include "mail/signature_block.html" %}
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Hi,

You're receiving this email because a facility on one of your facility lists
has had its facility claim data updated.

The facility is:

- Facility: {{ facility_name }}, {{ facility_address }}
- Facility URL: {{ facility_url }}

Sincerely,
{% include "mail/signature_block.txt" %}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
An OAR facility on one of your facility lists has had its facility claim data updated
35 changes: 32 additions & 3 deletions src/django/api/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1396,7 +1396,7 @@ def test_approve_facility_claim(self):
)

self.assertEqual(200, response.status_code)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(len(mail.outbox), 2)

updated_facility_claim = FacilityClaim \
.objects \
Expand Down Expand Up @@ -1581,7 +1581,7 @@ def setUp(self):
name='test contributor',
contrib_type=Contributor.OTHER_CONTRIB_TYPE)

self.list = FacilityList \
self.facility_list = FacilityList \
.objects \
.create(header="header",
file_name="one",
Expand All @@ -1595,7 +1595,7 @@ def setUp(self):
.create(name='Item',
address='Address',
country_code='US',
facility_list=self.list,
facility_list=self.facility_list,
row_index=1,
status=FacilityListItem.CONFIRMED_MATCH)

Expand Down Expand Up @@ -1686,6 +1686,35 @@ def test_approved_facility_claim_info_is_in_details_response(self):

self.assertEqual(response_data['description'], 'new_description')

@override_switch('claim_a_facility', active=True)
def test_updating_claim_profile_sends_email_to_contributor(self):
self.assertEqual(len(mail.outbox), 0)
self.facility_claim.status = FacilityClaim.APPROVED
self.facility_claim.save()

response = self.client.put(
'/api/facility-claims/{}/claimed/'.format(self.facility_claim.id),
{
'facility_description': 'test_facility_description',
'facility_phone_number_publicly_visible': False,
'point_of_contact_publicly_visible': False,
'office_info_publicly_visible': False,
}
)

self.assertEqual(len(mail.outbox), 1)
self.assertEqual(200, response.status_code)

updated_description = FacilityClaim \
.objects \
.get(pk=self.facility_claim.id) \
.facility_description

self.assertEqual(
updated_description,
'test_facility_descripton',
)

@override_switch('claim_a_facility', active=True)
def test_non_visible_facility_phone_is_not_in_details_response(self):
self.facility_claim.status = FacilityClaim.APPROVED
Expand Down
10 changes: 8 additions & 2 deletions src/django/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@
from api.mail import (send_claim_facility_confirmation_email,
send_claim_facility_approval_email,
send_claim_facility_denial_email,
send_claim_facility_revocation_email)
send_claim_facility_revocation_email,
send_approved_claim_notice_to_list_contributors,
send_claim_update_notice_to_list_contributors)
from api.exceptions import BadRequestException


Expand Down Expand Up @@ -1473,6 +1475,9 @@ def approve_claim(self, request, pk=None):

send_claim_facility_approval_email(request, claim)

send_approved_claim_notice_to_list_contributors(request,
claim)

response_data = FacilityClaimDetailsSerializer(claim).data
return Response(response_data)
except FacilityClaim.DoesNotExist:
Expand Down Expand Up @@ -1641,7 +1646,8 @@ def get_claimed_details(self, request, pk=None):
)

updated_claim = FacilityClaim.objects.get(pk=pk)

send_claim_update_notice_to_list_contributors(request,
updated_claim)
response_data = ApprovedFacilityClaimSerializer(updated_claim).data
return Response(response_data)
except FacilityClaim.DoesNotExist:
Expand Down

0 comments on commit eb5a93b

Please sign in to comment.