From c2da155483d41f043c65208b0af9e513aa4b3527 Mon Sep 17 00:00:00 2001 From: sar Date: Wed, 1 Oct 2025 15:14:41 -0500 Subject: [PATCH 1/2] Refactor exception handling --- courses/views/v1/__init__.py | 17 +++++++++++++++-- courses/views/v1/views_test.py | 4 ++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/courses/views/v1/__init__.py b/courses/views/v1/__init__.py index d5afaa34a3..7706bbc57e 100644 --- a/courses/views/v1/__init__.py +++ b/courses/views/v1/__init__.py @@ -479,8 +479,21 @@ def partial_update(self, request, *args, **kwargs): # noqa: ARG002 HTTPError, RequestsConnectionError, ) as exc: - log.exception(str(exc)) # noqa: TRY401 - return Response(data=str(exc), status=status.HTTP_400_BAD_REQUEST) + # Log full details for debugging + log.exception( + "Failed to update email subscription for user %s, enrollment %s, receive_emails=%s", + request.user.id, + enrollment.id, + receive_emails, + ) + + # Return user-friendly error + return Response( + data={ + "error": "Unable to update email preferences at this time. Please try again later or contact support." + }, + status=status.HTTP_400_BAD_REQUEST, + ) else: # only designed to update edx_emails_subscription field # TODO: In the future please add the implementation # noqa: FIX002, TD002, TD003 diff --git a/courses/views/v1/views_test.py b/courses/views/v1/views_test.py index 9a57cde15d..cd7936285f 100644 --- a/courses/views/v1/views_test.py +++ b/courses/views/v1/views_test.py @@ -736,6 +736,10 @@ def test_update_user_enrollment_failure( data={"receive_emails": "on" if receive_emails else ""}, ) assert resp.status_code == status.HTTP_400_BAD_REQUEST + # Update assertion to check for the new generic error message + assert resp.json() == { + "error": "Unable to update email preferences at this time. Please try again later or contact support." + } patched_email_subscription.assert_called_once_with(user, run_enrollment.run) patched_log_exception.assert_called_once() From 912c3f53b13f8d53f32b11bb5a99ca22b5a24db0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 20:17:10 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- courses/views/v1/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/courses/views/v1/__init__.py b/courses/views/v1/__init__.py index 7706bbc57e..8881a3bdb2 100644 --- a/courses/views/v1/__init__.py +++ b/courses/views/v1/__init__.py @@ -478,7 +478,7 @@ def partial_update(self, request, *args, **kwargs): # noqa: ARG002 NoEdxApiAuthError, HTTPError, RequestsConnectionError, - ) as exc: + ): # Log full details for debugging log.exception( "Failed to update email subscription for user %s, enrollment %s, receive_emails=%s",