diff --git a/crc/services/approval_service.py b/crc/services/approval_service.py index 2c131aaa..3c710ab1 100644 --- a/crc/services/approval_service.py +++ b/crc/services/approval_service.py @@ -12,10 +12,11 @@ from crc.services.file_service import FileService from crc.services.ldap_service import LdapService from crc.services.mails import ( send_ramp_up_submission_email, - # send_ramp_up_approval_request_email, + send_ramp_up_approval_request_email, send_ramp_up_approval_request_first_review_email, - # send_ramp_up_approved_email, - # send_ramp_up_denied_email + send_ramp_up_approved_email, + send_ramp_up_denied_email, + send_ramp_up_denied_email_to_approver ) @@ -89,24 +90,44 @@ class ApprovalService(object): session.add(db_approval) session.commit() if status == ApprovalStatus.APPROVED.value: - second_approval = ApprovalModel().query.filter_by( - study_id=db_approval.study_id, workflow_id=db_approval.workflow_id, - status=ApprovalStatus.PENDING.value, version=db_approval.version).first() - if second_approval: + # second_approval = ApprovalModel().query.filter_by( + # study_id=db_approval.study_id, workflow_id=db_approval.workflow_id, + # status=ApprovalStatus.PENDING.value, version=db_approval.version).first() + # if second_approval: # send rrp approval request for second approver - pass - else: - # send rrp approved email - pass + ldap_service = LdapService() + pi_user_info = ldap_service.user_info(model.study.primary_investigator_id) + approver_info = ldap_service.user_info(approver_uid) + # send rrp submission + send_ramp_up_approved_email( + 'askresearch@virginia.edu', + [pi_user_info.email_address], + f'{approver_info.display_name} - ({approver_info.uid})' + ) elif status == ApprovalStatus.DECLINED.value: + ldap_service = LdapService() + pi_user_info = ldap_service.user_info(model.study.primary_investigator_id) + approver_info = ldap_service.user_info(approver_uid) + # send rrp submission + send_ramp_up_denied_email( + 'askresearch@virginia.edu', + [pi_user_info.email_address], + f'{approver_info.display_name} - ({approver_info.uid})' + ) first_approval = ApprovalModel().query.filter_by( study_id=db_approval.study_id, workflow_id=db_approval.workflow_id, status=ApprovalStatus.APPROVED.value, version=db_approval.version).first() if first_approval: # Second approver denies + first_approver_info = ldap_service.user_info(first_approval.approver_uid) + approver_email = [first_approver_info.email_address] if first_approver_info.email_address else app.config['FALLBACK_EMAILS'] # send rrp denied by second approver email to first approver - pass - # send rrp denied email + send_ramp_up_denied_email_to_approver( + 'askresearch@virginia.edu', + approver_email, + f'{pi_user_info.display_name} - ({pi_user_info.uid})', + f'{approver_info.display_name} - ({approver_info.uid})' + ) # TODO: Log update action by approver_uid - maybe ? return db_approval diff --git a/crc/services/mails.py b/crc/services/mails.py index 487ff2a9..d6de3ff6 100644 --- a/crc/services/mails.py +++ b/crc/services/mails.py @@ -90,3 +90,20 @@ def send_ramp_up_denied_email(sender, recipients, approver): mail.send(msg) except Exception as e: return str(e) + +def send_ramp_up_denied_email_to_approver(sender, recipients, primary_investigator, approver_2): + try: + msg = Message('Research Ramp-up Plan Denied', + sender=sender, + recipients=recipients) + + from crc import env, mail + template = env.get_template('ramp_up_denied_first_approver.txt') + template_vars = {'primary_investigator': primary_investigator, 'approver_2': approver_2} + msg.body = template.render(template_vars) + template = env.get_template('ramp_up_denied_first_approver.html') + msg.html = template.render(template_vars) + + mail.send(msg) + except Exception as e: + return str(e) diff --git a/crc/static/templates/mails/ramp_up_denied.html b/crc/static/templates/mails/ramp_up_denied.html index e69de29b..9c978a80 100644 --- a/crc/static/templates/mails/ramp_up_denied.html +++ b/crc/static/templates/mails/ramp_up_denied.html @@ -0,0 +1 @@ +

Your Research Ramp-up Plan has been denied by {{ approver_1 }}. Please return to the Research Ramp-up Plan application and review the comments from {{ approver_1 }} on the home page. Next, open the application and locate the first step where changes are needed. Continue to complete additional steps saving your work along the way. Review your revised Research Ramp-up Plan and res-submit for approval.

\ No newline at end of file diff --git a/crc/static/templates/mails/ramp_up_denied.txt b/crc/static/templates/mails/ramp_up_denied.txt index e69de29b..5fbaefda 100644 --- a/crc/static/templates/mails/ramp_up_denied.txt +++ b/crc/static/templates/mails/ramp_up_denied.txt @@ -0,0 +1 @@ + Your Research Ramp-up Plan has been denied by {{ approver_1 }}. Please return to the Research Ramp-up Plan application and review the comments from {{ approver_1 }} on the home page. Next, open the application and locate the first step where changes are needed. Continue to complete additional steps saving your work along the way. Review your revised Research Ramp-up Plan and res-submit for approval. \ No newline at end of file diff --git a/crc/static/templates/mails/ramp_up_denied_first_approver.html b/crc/static/templates/mails/ramp_up_denied_first_approver.html new file mode 100644 index 00000000..e58cae99 --- /dev/null +++ b/crc/static/templates/mails/ramp_up_denied_first_approver.html @@ -0,0 +1 @@ +

The Research Ramp-up Plan submitted by {{ primary_investigator }} was denied by {{ approver_2 }} and returned for requested updates. You may see comments related to this denial in on your Research Ramp-up Toolkit Approval dashboard.

\ No newline at end of file diff --git a/crc/static/templates/mails/ramp_up_denied_first_approver.txt b/crc/static/templates/mails/ramp_up_denied_first_approver.txt new file mode 100644 index 00000000..7172c856 --- /dev/null +++ b/crc/static/templates/mails/ramp_up_denied_first_approver.txt @@ -0,0 +1 @@ +The Research Ramp-up Plan submitted by {{ primary_investigator }} was denied by {{ approver_2 }} and returned for requested updates. You may see comments related to this denial in on your Research Ramp-up Toolkit Approval dashboard. \ No newline at end of file diff --git a/tests/test_mails.py b/tests/test_mails.py index 28a48e53..15a01583 100644 --- a/tests/test_mails.py +++ b/tests/test_mails.py @@ -6,7 +6,8 @@ from crc.services.mails import ( send_ramp_up_approval_request_email, send_ramp_up_approval_request_first_review_email, send_ramp_up_approved_email, - send_ramp_up_denied_email + send_ramp_up_denied_email, + send_ramp_up_denied_email_to_approver ) @@ -46,3 +47,9 @@ class TestMails(BaseTest): def test_send_ramp_up_denied_email(self): send_ramp_up_denied_email(self.sender, self.recipients, self.approver_1) self.assertTrue(True) + + def test_send_send_ramp_up_denied_email_to_approver(self): + send_ramp_up_denied_email_to_approver( + self.sender, self.recipients, self.primary_investigator, self.approver_2 + ) + self.assertTrue(True)