The marketing site currently cannot use the entitlement
api to determine whether a user has an unfilled entitlement.
Including the entitlement enrollment_course_run makes this
information accessible to consumers of the entitlement API.
Learner-3731
Entitlement detail pages in django admin normally show a dropdown
button for the enrollment_course_run field. But on stage, that can
cause a timeout because the enrollment database is so large.
So instead, just show it as a raw id field.
Adds check for existing upgradeable enrollment on user entitlement
creation, if single upgradeable enrollment is present, upgrades enrollment
to entitlement mode and links the entitlement to the upgraded enrollment
LEARNER-3579
[LEARNER-2668]
These changes will support a user intiated Revoke and Refund of
an Entitlement. This includes unenrolling the User from
any related Course Runs they are currently enrolled in.
This new management command will search for possible entitlements
that are languishing in the database and expire them if they can
be according to our policy.
This is meant to be run on a regular basis to clear out old
entitlements.
LEARNER-3087
LEARNER-3438
The user can now enroll in a session, unenroll from a session or change session
from a new course enrollment card on the programs dashboard.
The Entitlement API will allow for GET, POST, DELETE(Revoke), and
variations of these methods of managing and retrieving data about
Learner Entitlements.
[LEARNER-2661]