Exemple #1
0
    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')
Exemple #3
0
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
Exemple #4
0
    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')