Adding field to check student status in course by email address
Author / Context
This proposal has been prepared by OpenCraft, on behalf of one of our clients.
Client’s requirements
- As a person managing edx instance and the individual courses, I want to be able to check on the enrollment status of a given student in a course without having to download the course’s enrollment report.
- Enrollment status may have one of four values: never enrolled, enrollment pending, enrolled and active, enrolled and not active.
- I would like a single place to check the status for a particular student and course.
Current state
Currently, in order to check the enrollment status of a given student, one may:
Current solution A
Go to Data download tab in Instructor’s dashboard which can be found at /courses/{course_id}/instructor#view-data_download and generate two CSV files:
- one with learners who can enroll in the course but have not yet done so,
- the other one with the data of all students enrolled in this course.
It should be noted that generating both files may take several hours for courses with many students.
Having both CSV files downloaded, one needs to check if the student’s e-mail address is in the first file. If so, the student’s enrollment status is equal to pending. If not, one needs to search for the student’s e-mail address in the second file and read the student’s enrollment status from there. If the student’s e-mail address cannot be found in neither of the CSV files, the student’s status is equal to never enrolled.
It should be noted that with many students enrolled in a course, CSV reports can become very large and which slows down their processing (e.g. searching for a given student’s e-mail address).
It seems that this way of checking student’s enrollment to a given course is somehow tedious.
Current solution B
Go to Enrollment part of the Support dashboard which can be found at /support/enrollment. There, one should type student’s e-mail address and click search which will display all enrollments of this student (that is the enrollments to all student’s courses) together with statuses of these enrollments. This will not, though, display pending enrollments of this student.
It is worth noting that current solutions A and B use tools reserved for two very different groups of people: instructors and support employees. It is only for our client that they tend to be the same people, generally they’re different.
Proposed solution
The solution suggested by our client was expressed as: a field to enter the email address with a button to run the check, on the Student Admin tab. We find it a very good idea and we think that the upstream edx-platform itself could also benefit from this solution. Not only does it solve problem, but it is also user-friendly and quite easy to implement.
To sum it up, it is proposed to change View a specific learner’s grades and progress section at Student Admin tab into View information on specific learner section, extending it with a part that would allow checking student’s enrollment status. Below already existing View progress page link it would contain a link with a Check enrollment status button and a read-only field next to it which would display student’s enrollment status for a given course (that is, the course to which the Student Admin tab belongs). The field could appear after the Check enrollment status button is clicked (or could be empty in the beginning).
For the back-end part that would need to be implemented we suggest:
- extending student.models.CourseEnrollment.enrollment_mode_for_user method to return also enrollment-pending status (which could be implemented e.g. by querying student.models.CourseEnrollmentAllowed model),
- adding a separate endpoint for the Check enrollment status button that would return JSON using method mentioned above.