LEARNER-3808
Ensures that users can see their entitlement purchase whether there
are available sessions or not. Notifies them with a message stating that
more sessions are coming soon, as is currently implemented on the programs
dashboard.
The expire_old_entitlements management command was passing a
Paginator object to celery, which it can't serialize when it is
running async. Instead, we'll do the pagination manually inside the
task code and simply pass it integers.
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]