def send_invitation(invitation: InvitationModel, org_name, user, app_url): """Send the email notification.""" current_app.logger.debug('<send_invitation') subject = '[BC Registries & Online Services] {} {} has invited you to join a team'.format( user['firstname'], user['lastname']) sender = CONFIG.MAIL_FROM_ID recipient = invitation.recipient_email token_confirm_url = '{}/validatetoken/{}'.format( app_url, invitation.token) template = ENV.get_template( 'email_templates/business_invitation_email.html') sent_response = send_email( subject, sender, recipient, template.render( invitation=invitation, url=token_confirm_url, user=user, org_name=org_name, logo_url=f'{app_url}/{CONFIG.REGISTRIES_LOGO_IMAGE_NAME}')) if not sent_response: invitation.invitation_status_code = 'FAILED' invitation.save() current_app.logger.debug('>send_invitation failed') raise BusinessException(Error.FAILED_INVITATION, None) current_app.logger.debug('>send_invitation')
def send_invitation(invitation: InvitationModel, org_name, user, app_url): """Send the email notification.""" current_app.logger.debug('<send_invitation') mail_configs = Invitation.get_invitation_configs( invitation.type, org_name) subject = mail_configs.get('subject').format(user['firstname'], user['lastname']) sender = CONFIG.MAIL_FROM_ID recipient = invitation.recipient_email token_confirm_url = '{}/{}/{}'.format( app_url, mail_configs.get('token_confirm_path'), invitation.token) template = ENV.get_template( f"email_templates/{mail_configs.get('template_name')}.html") sent_response = send_email( subject, sender, recipient, template.render( invitation=invitation, url=token_confirm_url, user=user, org_name=org_name, logo_url=f'{app_url}/{CONFIG.REGISTRIES_LOGO_IMAGE_NAME}')) if not sent_response: invitation.invitation_status_code = 'FAILED' invitation.save() current_app.logger.debug('>send_invitation failed') raise BusinessException(Error.FAILED_INVITATION, None) current_app.logger.debug('>send_invitation')
def factory_invitation_model(session, status, sent_date=datetime.now()): """Produce a templated invitation model.""" user = User(username='******', roles='{edit, uma_authorization, staff}', keycloak_guid='1b20db59-19a0-4727-affe-c6f64309fd04') session.add(user) session.commit() org_type = OrgTypeModel(code='TEST', desc='Test') session.add(org_type) session.commit() org_status = OrgStatusModel(code='TEST', desc='Test') session.add(org_status) session.commit() preferred_payment = PaymentTypeModel(code='TEST', desc='Test') session.add(preferred_payment) session.commit() org = OrgModel() org.name = 'Test Org' org.org_type = org_type org.org_status = org_status org.preferred_payment = preferred_payment org.save() invitation = InvitationModel() invitation.recipient_email = '*****@*****.**' invitation.sender = user invitation.sent_date = sent_date invitation.invitation_status_code = status invitation.token = 'ABCD' invitation_membership = InvitationMembershipModel() invitation_membership.org_id = org.id invitation_membership.membership_type_code = 'USER' invitation.membership.append(invitation_membership) invitation.save() return invitation
def send_invitation( invitation: InvitationModel, org_name, org_id, user, # pylint: disable=too-many-arguments app_url, login_source, org_status=None, query_params: Dict[str, any] = None): """Send the email notification.""" current_app.logger.debug('<send_invitation') mail_configs = Invitation._get_invitation_configs( org_name, login_source, org_status) recipient = invitation.recipient_email token_confirm_url = f"{app_url}/{mail_configs.get('token_confirm_path')}/{invitation.token}" if query_params: token_confirm_url += f'?{urlencode(query_params)}' role = invitation.membership[0].membership_type.display_name data = { 'accountId': org_id, 'emailAddresses': recipient, 'contextUrl': token_confirm_url, 'userFirstName': user.get('firstname', None), 'userLastName': user.get('lastname', None), 'orgName': org_name, 'role': role } try: publish_to_mailer( notification_type=mail_configs.get('notification_type'), org_id=org_id, data=data) except BusinessException as exception: invitation.invitation_status_code = 'FAILED' invitation.save() current_app.logger.debug('>send_invitation failed') current_app.logger.debug(exception) raise BusinessException(Error.FAILED_INVITATION, None) from exception current_app.logger.debug('>send_invitation')