From a9b14e8b16f9d8096d423a116279cb9b35f933af Mon Sep 17 00:00:00 2001 From: "Glenn R. Martin" Date: Fri, 17 May 2024 11:21:59 -0400 Subject: [PATCH 1/2] fix: adding additional logging to commerce handle_refund_order --- lms/djangoapps/commerce/signals.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lms/djangoapps/commerce/signals.py b/lms/djangoapps/commerce/signals.py index eaf85bdfba37..51405a020dab 100644 --- a/lms/djangoapps/commerce/signals.py +++ b/lms/djangoapps/commerce/signals.py @@ -2,7 +2,6 @@ Signal handling functions for use with external commerce service. """ - import logging from crum import get_current_request @@ -21,13 +20,15 @@ @receiver(REFUND_ORDER) def handle_refund_order(sender, course_enrollment=None, **kwargs): """ - Signal receiver for unenrollments, used to automatically initiate refunds + Signal receiver for un-enrollments, used to automatically initiate refunds when applicable. """ if not is_commerce_service_configured(): + log.info("Commerce service not configured, skipping refund") return if course_enrollment and course_enrollment.refundable(): + log.info("Handling refund for course enrollment %s", course_enrollment.course_id) try: request_user = get_request_user() or course_enrollment.user if isinstance(request_user, AnonymousUser): @@ -36,7 +37,13 @@ def handle_refund_order(sender, course_enrollment=None, **kwargs): # construct a client to call Otto back anyway, because # the client does not work anonymously, and furthermore, # there's certainly no need to inform Otto about this request. + log.info( + "Anonymous user attempting to initiate refund for course [%s]", + course_enrollment.course_id, + ) return + log.info("Initiating refund_seat for user [%s] for course enrollment %s", + course_enrollment.user.id, course_enrollment.course_id) refund_seat(course_enrollment, change_mode=True) except Exception: # pylint: disable=broad-except # don't assume the signal was fired with `send_robust`. @@ -47,6 +54,13 @@ def handle_refund_order(sender, course_enrollment=None, **kwargs): course_enrollment.user.id, course_enrollment.course_id, ) + elif course_enrollment: + log.info( + "Not refunding seat for course enrollment %s, as its not refundable", + course_enrollment.course_id + ) + else: + log.info("Not refunding seat for course due to missing course enrollment") def get_request_user(): From 20c8fc127b73747f8ba5627083f055e02c9500d3 Mon Sep 17 00:00:00 2001 From: "Glenn R. Martin" Date: Fri, 17 May 2024 11:55:47 -0400 Subject: [PATCH 2/2] fix: logging emission of REFUND_ORDER --- common/djangoapps/student/views/management.py | 1 + 1 file changed, 1 insertion(+) diff --git a/common/djangoapps/student/views/management.py b/common/djangoapps/student/views/management.py index eac799c5e1f0..8701919d3725 100644 --- a/common/djangoapps/student/views/management.py +++ b/common/djangoapps/student/views/management.py @@ -434,6 +434,7 @@ def change_enrollment(request, check_access=True): except UnenrollmentNotAllowed as exc: return HttpResponseBadRequest(str(exc)) + log.info("User %s unenrolled from %s; sending REFUND_ORDER", user.username, course_id) REFUND_ORDER.send(sender=None, course_enrollment=enrollment) return HttpResponse() else: