def update_external_enrollment(sender, **kwargs):  # pylint: disable=unused-argument
    """
    This receiver is attached to enrollment/unenrollments events. It applies
    the required action when course mode is 'verified'.
    If kwargs['course_enrollment'].is_active is True, an external 'enrollment' request
    will be trigger, otherwise the 'unenroll' action will be called.
    """
    if not configuration_helpers.get_value('ENABLE_EXTERNAL_ENROLLMENTS',
                                           False):
        return

    if kwargs['course_enrollment'].mode == get_course_mode().VERIFIED:
        LOG.info(
            'The event %s has been triggered for course [%s] and user [%s]. Calling external enrollment controller...',
            'Enroll' if kwargs['course_enrollment'].is_active else 'Unenroll',
            kwargs['course_enrollment'].course_id,
            kwargs['course_enrollment'].user.email,
        )

        data = {
            'user_email': kwargs['course_enrollment'].user.email,
            'user_name': kwargs['course_enrollment'].user.profile.name,
            'course_id': kwargs['course_enrollment'].course_id,
            'course_mode': kwargs['course_enrollment'].mode,
            'is_active': kwargs['course_enrollment'].is_active,
        }

        execute_external_enrollment(data=data,
                                    course=get_course_by_id(
                                        kwargs['course_enrollment'].course_id))
Beispiel #2
0
    def _get_course(course_id):
        """
        Return a course object.
        """
        if not course_id:
            return None

        course_key = CourseKey.from_string(course_id)
        course = get_course_by_id(course_key)
        return course
    def _get_course(self, course_id):
        """
        Return a course object.
        """
        if not course_id:
            return None

        course_key = self._get_course_key(course_id)
        course = get_course_by_id(course_key)
        return course
def delete_external_enrollment(sender, instance, **kwargs):  # pylint: disable=unused-argument
    """
    This receiver is called when the django.db.models.signals.post_delete signal is sent,
    it will always execute an unenrollment.
    """
    if not configuration_helpers.get_value('ENABLE_EXTERNAL_ENROLLMENTS',
                                           False):
        return

    data = {
        'user_email': instance.user.email,
        'course_mode': instance.mode,
        'is_active': False,
    }

    execute_external_enrollment(data=data,
                                course=get_course_by_id(instance.course.id))
def update_external_enrollment(sender, created, instance, **kwargs):  # pylint: disable=unused-argument
    """
    This receiver is called when the django.db.models.signals.post_save signal is sent,
    it will execute an enrollment or unenrollment based on the value of instance.is_active.
    """
    if (not configuration_helpers.get_value('ENABLE_EXTERNAL_ENROLLMENTS',
                                            False)
            or (created and not instance.is_active)):
        return

    data = {
        'user_email': instance.user.email,
        'course_mode': instance.mode,
        'is_active': instance.is_active,
    }

    execute_external_enrollment(data=data,
                                course=get_course_by_id(instance.course.id))