From 8406351824b27c90638c9b7f28658ad0b3b3c007 Mon Sep 17 00:00:00 2001 From: Kelly Innes Date: Tue, 18 Jun 2019 10:12:13 -0400 Subject: [PATCH] Catch & log exception in emailing contributors Catch exceptions thrown when trying to email contributors about facility claim approvals and profile changes, sending only the Facility Claim ID to Rollbar. Afterward, continue sending a response as usual. --- src/django/api/views.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/django/api/views.py b/src/django/api/views.py index 021c3c2b4..2d4281212 100644 --- a/src/django/api/views.py +++ b/src/django/api/views.py @@ -1,9 +1,11 @@ import operator import os +import sys from datetime import datetime from functools import reduce +from django.conf import settings from django.core.files.uploadedfile import InMemoryUploadedFile from django.db import transaction from django.db.models import F, Q @@ -76,6 +78,19 @@ from api.exceptions import BadRequestException +def _report_facility_claim_email_error_to_rollbar(claim): + ROLLBAR = getattr(settings, 'ROLLBAR', {}) + + if ROLLBAR: + import rollbar + rollbar.report.exc_info( + sys.exc_info(), + extra_data={ + 'claim_id': claim.id, + } + ) + + @permission_classes((AllowAny,)) class SubmitNewUserForm(CreateAPIView): serializer_class = UserSerializer @@ -1475,8 +1490,11 @@ def approve_claim(self, request, pk=None): send_claim_facility_approval_email(request, claim) - send_approved_claim_notice_to_list_contributors(request, - claim) + try: + send_approved_claim_notice_to_list_contributors(request, + claim) + except Exception: + _report_facility_claim_email_error_to_rollbar(claim) response_data = FacilityClaimDetailsSerializer(claim).data return Response(response_data) @@ -1646,8 +1664,13 @@ 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) + + try: + send_claim_update_notice_to_list_contributors(request, + updated_claim) + except Exception: + _report_facility_claim_email_error_to_rollbar(updated_claim) + response_data = ApprovedFacilityClaimSerializer(updated_claim).data return Response(response_data) except FacilityClaim.DoesNotExist: