The functions `CourseOverview.get_from_id_if_exists` and `CourseOverview.get_from_ids if exists` are bug- prone, in that they do not go to the modulestore when a CourseOverview is out-of-date or uncached. The docstrings spell this out, but callers seem not to understand the implications. So, in this commit, we: * Remove both functions * Add `CourseOverview.get_from_ids` for almost-as-fast yet safer bulk-fetching of overviews * Update call sites to use `course_exists` or `get_from_ids` in place of the old functions. * Add tests for @verify_course_exists. This PR should specifically fix an issue where the program_enrollments API was breaking when the CourseOverview version was bumped. CR-1708
Program Enrollments
======================
This is the Program Enrollments plugin that allows university partners to
enroll their students in Master's courses on the edx platform.
.. image:: doc_images/pe_uml.png
Considerations:
- ProgramEnrollments
- Must have either user_id or external_user_key or both.
- Valid values for the `status` field:
- `enrolled`
- `pending`
- `suspended`
- `canceled`
- ProgramCourseEnrollments
- Valid values for the `status` field:
- `enrolled`
- `pending`
- `suspended`
- `canceled`