diff --git a/enrollment_email/apps.py b/enrollment_email/apps.py index 7f54314..d28919d 100644 --- a/enrollment_email/apps.py +++ b/enrollment_email/apps.py @@ -14,6 +14,7 @@ class EnrollmentEmailAppConfig(AppConfig): """ name = 'enrollment_email' + plugin_app = {} def ready(self): from . import signals diff --git a/enrollment_email/message_types.py b/enrollment_email/message_types.py new file mode 100644 index 0000000..dbd1807 --- /dev/null +++ b/enrollment_email/message_types.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +""" +ACE message types related to staff notifications of enrollments. +""" + +from openedx.core.djangoapps.ace_common.message import BaseMessageType + + +class Enrolled(BaseMessageType): + """ + A message to staff after a student enrolls into a course. + """ + APP_LABEL = 'enrollment_email' + + def __init__(self, *args, **kwargs): + super(Enrolled, self).__init__(*args, **kwargs) + self.options['transactional'] = True # pylint: disable=unsupported-assignment-operation diff --git a/enrollment_email/signals.py b/enrollment_email/signals.py index ebe6555..7795449 100644 --- a/enrollment_email/signals.py +++ b/enrollment_email/signals.py @@ -4,8 +4,12 @@ """ import logging +from edx_ace import ace +from edx_ace.recipient import Recipient +from django.contrib.sites.models import Site from django.dispatch import receiver - +from message_types import Enrolled +from openedx.core.djangoapps.ace_common.template_context import get_base_template_context from student.models import ENROLL_STATUS_CHANGE, EnrollStatusChange LOGGER = logging.getLogger(__name__) @@ -13,9 +17,24 @@ @receiver(ENROLL_STATUS_CHANGE) def send_email_to_staff_on_student_enrollment(sender, event=None, user=None, **kwargs): # pylint: disable=unused-argument """ + Sends an e-mail to staff after a new enrollment. """ - - print(event) - raise NotImplementedError("Continue porting code from https://github.com/edx/edx-platform/pull/16669 and transform it into a plugin") if event == EnrollStatusChange.enroll: - raise NotImplementedError("enrolling") + course_id = kwargs['course_id'].to_deprecated_string() + LOGGER.debug('Sending enrollment notification (user %i, %course %s)', user.id, course_id) + site = Site.objects.get_current() + message_context = get_base_template_context(site) + message_context.update({ + 'username': user.username, + 'user_full_name': user.profile.name if hasattr(user, 'profile') else None, + 'course_id': course_id + }), + + message = Enrolled().personalize( + recipient=Recipient(username='', email_address='…@….com'), # FIXME define a setting and set it + language=None, # FIXME + user_context=message_context, + ) + + ace.send(message) + raise NotImplementedError("Continue portings code from https://github.com/edx/edx-platform/pull/16669 and transform it into a plugin") diff --git a/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/body.html b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/body.html new file mode 100644 index 0000000..1712502 --- /dev/null +++ b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/body.html @@ -0,0 +1,16 @@ +{% extends 'ace_common/edx_ace/common/base_body.html' %} + +{% load i18n %} +{% load static %} +{% block content %} + +

+ {% if user_full_name %} + {% blocktrans %}Student {{ username }} ({{ user_full_name }}) enrolled into course {{ course_id }}{% endblocktrans %} + {% else %} + {% blocktrans %}Student {{ username }} enrolled into course {{ course_id }}{% endblocktrans %} + {% endif %} + {% endautoescape %} +

+ +{% endblock %} diff --git a/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/body.txt b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/body.txt new file mode 100644 index 0000000..1557db8 --- /dev/null +++ b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/body.txt @@ -0,0 +1,7 @@ +{% load i18n %}{% autoescape off %} +{% if user_full_name %} +{% blocktrans %}Student {{ username }} ({{ user_full_name }}) enrolled into course {{ course_id }}{% endblocktrans %} +{% else %} +{% blocktrans %}Student {{ username }} enrolled into course {{ course_id }}{% endblocktrans %} +{% endif %} +{% endautoescape %} diff --git a/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/from_name.txt b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/from_name.txt new file mode 100644 index 0000000..dcbc23c --- /dev/null +++ b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/from_name.txt @@ -0,0 +1 @@ +{{ platform_name }} diff --git a/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/head.html b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/head.html new file mode 100644 index 0000000..edfdb25 --- /dev/null +++ b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/head.html @@ -0,0 +1,2 @@ +{% extends 'ace_common/edx_ace/common/base_head.html' %} + diff --git a/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/subject.txt b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/subject.txt new file mode 100644 index 0000000..bf3c956 --- /dev/null +++ b/enrollment_email/templates/enrollment_email/edx_ace/enrolled/email/subject.txt @@ -0,0 +1,4 @@ +{% load i18n %} +{% autoescape off %} +{% blocktrans trimmed %}Student enrollment into course {{ course_id }}{% endblocktrans %} +{% endautoescape %}