Skip to content
Snippets Groups Projects
emails.py 2.44 KiB
"""
ACE emails for verify_student app
"""
import logging

from django.contrib.sites.models import Site
from edx_ace import ace
from edx_ace.recipient import Recipient

from lms.djangoapps.verify_student.message_types import VerificationApproved, VerificationSubmitted
from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
from openedx.core.djangoapps.user_api.preferences.api import get_user_preference
from openedx.core.lib.celery.task_utils import emulate_http_request

log = logging.getLogger(__name__)


def send_verification_confirmation_email(context):
    """Send an email confirming that the user submitted photos for initial verification."""
    site = Site.objects.get_current()
    message_context = get_base_template_context(site)
    message_context.update(context)
    user = context['user']
    try:
        with emulate_http_request(site=site, user=user):
            msg = VerificationSubmitted(context=message_context).personalize(
                recipient=Recipient(user.id, user.email),
                language=get_user_preference(user, LANGUAGE_KEY),
                user_context={'full_name': user.profile.name}
            )
            ace.send(msg)
            log.info('Verification confirmation email sent to user: %r', user.username)
            return True
    except Exception:  # pylint: disable=broad-except
        log.exception('Could not send email for verification confirmation to user %s', user.username)
        return False


def send_verification_approved_email(context):
    """
    Sends email to a learner when ID verification has been approved.
    """
    site = Site.objects.get_current()
    message_context = get_base_template_context(site)
    message_context.update(context)
    user = context['user']
    try:
        with emulate_http_request(site=site, user=user):
            msg = VerificationApproved(context=message_context).personalize(
                recipient=Recipient(user.id, user.email),
                language=get_user_preference(user, LANGUAGE_KEY),
                user_context={'full_name': user.profile.name}
            )
            ace.send(msg)
            log.info('Verification approved email sent to user: %r', user.username)
            return True
    except Exception:  # pylint: disable=broad-except
        log.exception('Could not send email for verification approved to user %s', user.username)
        return False