Skip to content

Commit

Permalink
fix: send LEARNER_CREDIT_COURSE_ENROLLMENT_REVOKED from the correct p…
Browse files Browse the repository at this point in the history
…lace.

I had originally tried emitting this event from the `/cancel_enrollment`
API endpoint, but in reality the LMS and Enterprise dashboards were
calling the `/change_enrollment` endpoint.  The former is called by
enterprise-subsidy on transaction reversal, i.e. NOT learner-initiated.
The latter is learner-initiated, and that's the original goal of this
work.

ENT-9213
  • Loading branch information
pwnage101 committed Sep 6, 2024
1 parent cba67ec commit 5819c8d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
10 changes: 0 additions & 10 deletions enterprise/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
json_serialized_course_modes,
)
from enterprise.errors import LinkUserToEnterpriseError
from enterprise.event_bus import send_learner_credit_course_enrollment_revoked_event
from enterprise.logging import getEnterpriseLogger
from enterprise.tasks import send_enterprise_email_notification
from enterprise.utils import (
Expand Down Expand Up @@ -2288,8 +2287,6 @@ def revoke(self):
Marks this object as revoked and marks the associated EnterpriseCourseEnrollment
as "saved for later". This object and the associated EnterpriseCourseEnrollment are both saved.
Subclasses may override this function to additionally emit revocation events.
TODO: revoke entitlements as well?
"""
if self.enterprise_course_enrollment:
Expand Down Expand Up @@ -2333,13 +2330,6 @@ class LearnerCreditEnterpriseCourseEnrollment(EnterpriseFulfillmentSource):
.. no_pii:
"""

def revoke(self):
"""
Revoke this LearnerCreditEnterpriseCourseEnrollment, and emit a revoked event.
"""
super().revoke()
send_learner_credit_course_enrollment_revoked_event(self)

def reactivate(self, transaction_id=None, **kwargs):
"""
Idmpotently reactivates this LearnerCreditEnterpriseCourseEnrollment.
Expand Down
14 changes: 14 additions & 0 deletions enterprise/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from enterprise.api import activate_admin_permissions
from enterprise.api_client.enterprise_catalog import EnterpriseCatalogApiClient
from enterprise.decorators import disable_for_loaddata
from enterprise.event_bus import send_learner_credit_course_enrollment_revoked_event
from enterprise.tasks import create_enterprise_enrollment
from enterprise.utils import (
NotConnectedToOpenEdX,
Expand Down Expand Up @@ -394,6 +395,19 @@ def enterprise_unenrollment_receiver(sender, **kwargs): # pylint: disable=un
enterprise_enrollment.unenrolled_at = localized_utcnow()
enterprise_enrollment.save()

# Emit LC revoked event if there's a related LC fulfillment.
try:
lc_fulfillment = enterprise_enrollment.learnercreditenterprisecourseenrollment_enrollment_fulfillment
except enterprise_enrollment.RelatedObjectDoesNotExist:
lc_fulfillment = None
if lc_fulfillment:
send_learner_credit_course_enrollment_revoked_event(lc_fulfillment)
else:
logger.info(
"No related LearnerCreditCourseEnrollment found for recently unenrolled EnterpriseCourseEnrollment for "
f"user {enrollment.user} and course {enrollment.course.course_key}. Skipping sending revoked event."
)


def create_enterprise_enrollment_receiver(sender, instance, **kwargs): # pylint: disable=unused-argument
"""
Expand Down

0 comments on commit 5819c8d

Please sign in to comment.