Approve/denied emails

This commit is contained in:
Carlos Lopez 2020-06-05 12:08:31 -06:00
parent 4727d87adb
commit 4fc1b51cbc
7 changed files with 63 additions and 14 deletions

View File

@ -12,10 +12,11 @@ from crc.services.file_service import FileService
from crc.services.ldap_service import LdapService from crc.services.ldap_service import LdapService
from crc.services.mails import ( from crc.services.mails import (
send_ramp_up_submission_email, 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_approval_request_first_review_email,
# send_ramp_up_approved_email, send_ramp_up_approved_email,
# send_ramp_up_denied_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.add(db_approval)
session.commit() session.commit()
if status == ApprovalStatus.APPROVED.value: if status == ApprovalStatus.APPROVED.value:
second_approval = ApprovalModel().query.filter_by( # second_approval = ApprovalModel().query.filter_by(
study_id=db_approval.study_id, workflow_id=db_approval.workflow_id, # study_id=db_approval.study_id, workflow_id=db_approval.workflow_id,
status=ApprovalStatus.PENDING.value, version=db_approval.version).first() # status=ApprovalStatus.PENDING.value, version=db_approval.version).first()
if second_approval: # if second_approval:
# send rrp approval request for second approver # send rrp approval request for second approver
pass ldap_service = LdapService()
else: pi_user_info = ldap_service.user_info(model.study.primary_investigator_id)
# send rrp approved email approver_info = ldap_service.user_info(approver_uid)
pass # 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: 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( first_approval = ApprovalModel().query.filter_by(
study_id=db_approval.study_id, workflow_id=db_approval.workflow_id, study_id=db_approval.study_id, workflow_id=db_approval.workflow_id,
status=ApprovalStatus.APPROVED.value, version=db_approval.version).first() status=ApprovalStatus.APPROVED.value, version=db_approval.version).first()
if first_approval: if first_approval:
# Second approver denies # 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 # send rrp denied by second approver email to first approver
pass send_ramp_up_denied_email_to_approver(
# send rrp denied email '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 ? # TODO: Log update action by approver_uid - maybe ?
return db_approval return db_approval

View File

@ -90,3 +90,20 @@ def send_ramp_up_denied_email(sender, recipients, approver):
mail.send(msg) mail.send(msg)
except Exception as e: except Exception as e:
return str(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)

View File

@ -0,0 +1 @@
<p>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.</p>

View File

@ -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.

View File

@ -0,0 +1 @@
<p>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.</p>

View File

@ -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.

View File

@ -6,7 +6,8 @@ from crc.services.mails import (
send_ramp_up_approval_request_email, send_ramp_up_approval_request_email,
send_ramp_up_approval_request_first_review_email, send_ramp_up_approval_request_first_review_email,
send_ramp_up_approved_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): def test_send_ramp_up_denied_email(self):
send_ramp_up_denied_email(self.sender, self.recipients, self.approver_1) send_ramp_up_denied_email(self.sender, self.recipients, self.approver_1)
self.assertTrue(True) 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)