diff --git a/lms/djangoapps/instructor/paidcourse_enrollment_report.py b/lms/djangoapps/instructor/paidcourse_enrollment_report.py index 67e4e5869117e1be372279df1ad6c2733f909f86..f011ee67df5baabbf17fd1d340e1957c54bc6eb2 100644 --- a/lms/djangoapps/instructor/paidcourse_enrollment_report.py +++ b/lms/djangoapps/instructor/paidcourse_enrollment_report.py @@ -25,6 +25,7 @@ class PaidCourseEnrollmentReportProvider(BaseAbstractEnrollmentReportProvider): """ course = get_course_by_id(course_id, depth=0) is_course_staff = bool(has_access(user, 'staff', course)) + manual_enrollment_reason = 'N/A' # check the user enrollment role if user.is_staff: @@ -59,8 +60,10 @@ class PaidCourseEnrollmentReportProvider(BaseAbstractEnrollmentReportProvider): manual_enrollment = ManualEnrollmentAudit.get_manual_enrollment(course_enrollment) if manual_enrollment is not None: enrollment_source = _( - 'manually enrolled by {username} - reason: {reason}' - ).format(username=manual_enrollment.enrolled_by.username, reason=manual_enrollment.reason) + 'manually enrolled by username: {username}' + ).format(username=manual_enrollment.enrolled_by.username) + + manual_enrollment_reason = manual_enrollment.reason else: enrollment_source = _('Manually Enrolled') @@ -71,6 +74,7 @@ class PaidCourseEnrollmentReportProvider(BaseAbstractEnrollmentReportProvider): course_enrollment_data['Enrollment Date'] = enrollment_date course_enrollment_data['Currently Enrolled'] = currently_enrolled course_enrollment_data['Enrollment Source'] = enrollment_source + course_enrollment_data['Manual (Un)Enrollment Reason'] = manual_enrollment_reason course_enrollment_data['Enrollment Role'] = enrollment_role return course_enrollment_data diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py index a6fb2113c3c54fd8aee250292f90a5b16b632fc0..c1fa8a89fe29a8e1217b9778911df188c0d0eadc 100644 --- a/lms/djangoapps/instructor/views/api.py +++ b/lms/djangoapps/instructor/views/api.py @@ -630,6 +630,7 @@ def students_update_enrollment(request, course_id): ) before_enrollment = before.to_dict()['enrollment'] before_allowed = before.to_dict()['allowed'] + enrollment_obj = CourseEnrollment.get_enrollment(user, course_id) if before_enrollment: state_transition = ENROLLED_TO_UNENROLLED diff --git a/lms/djangoapps/instructor_task/tasks_helper.py b/lms/djangoapps/instructor_task/tasks_helper.py index 073f1a535791eb0717a38e5b2f1443717303a7e9..ca66ded2e926d5f69371be5fa2fe17dfdb6eaa21 100644 --- a/lms/djangoapps/instructor_task/tasks_helper.py +++ b/lms/djangoapps/instructor_task/tasks_helper.py @@ -1091,6 +1091,7 @@ def upload_enrollment_report(_xmodule_instance_args, _entry_id, course_id, _task 'Enrollment Date': _('Enrollment Date'), 'Currently Enrolled': _('Currently Enrolled'), 'Enrollment Source': _('Enrollment Source'), + 'Manual (Un)Enrollment Reason': _('Manual (Un)Enrollment Reason'), 'Enrollment Role': _('Enrollment Role'), 'List Price': _('List Price'), 'Payment Amount': _('Payment Amount'), diff --git a/lms/djangoapps/instructor_task/tests/test_tasks_helper.py b/lms/djangoapps/instructor_task/tests/test_tasks_helper.py index 4561c7e6b790fc115e44553e02e44d40f6fa2cb2..bf55e5701028b6bbbad94e930adfca6a6354fcba 100644 --- a/lms/djangoapps/instructor_task/tests/test_tasks_helper.py +++ b/lms/djangoapps/instructor_task/tests/test_tasks_helper.py @@ -419,10 +419,15 @@ class TestInstructorDetailedEnrollmentReport(TestReportMixin, InstructorTaskCour with patch('instructor_task.tasks_helper._get_current_task'): result = upload_enrollment_report(None, None, self.course.id, task_input, 'generating_enrollment_report') - enrollment_source = u'manually enrolled by {username} - reason: manually enrolling unenrolled user'.format( + enrollment_source = u'manually enrolled by username: {username}'.format( username=self.instructor.username) # pylint: disable=no-member self.assertDictContainsSubset({'attempted': 1, 'succeeded': 1, 'failed': 0}, result) self._verify_cell_data_in_csv(student.username, 'Enrollment Source', enrollment_source) + self._verify_cell_data_in_csv( + student.username, + 'Manual (Un)Enrollment Reason', + 'manually enrolling unenrolled user' + ) self._verify_cell_data_in_csv(student.username, 'Payment Status', 'TBD') def test_student_used_enrollment_code_for_course_enrollment(self):