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))
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))