@@ -1047,6 +1047,15 @@ def enroll_in_edx_course_runs(
10471047
10481048 username = user .edx_username
10491049
1050+ try :
1051+ created_user , _ = repair_faulty_edx_user (user )
1052+ if created_user is False :
1053+ msg = f"User { user .edx_username } does not exist in OpenEdX and could not be created"
1054+ raise OpenEdxUserMissingError (msg ) # noqa: TRY301
1055+ except Exception as exc :
1056+ msg = f"Failed to verify/create user { user .edx_username } in OpenEdX"
1057+ raise OpenEdxUserMissingError (msg ) from exc
1058+
10501059 results = []
10511060 for course_run in course_runs :
10521061 try :
@@ -1069,33 +1078,13 @@ def enroll_in_edx_course_runs(
10691078 )
10701079 results .append (enrollment )
10711080 except HTTPError as exc : # noqa: PERF203
1072- if exc .response .status_code == 406 : # noqa: PLR2004
1073- log .warning (
1074- "User %s does not exist in edX, attempting to create user." ,
1075- user .edx_username ,
1076- )
1077- # If the user doesn't exist, we need to create them first
1078- try :
1079- created_user , _ = repair_faulty_edx_user (user )
1080- if created_user :
1081- enrollment = edx_client .enrollments .create_student_enrollment (
1082- course_run .courseware_id ,
1083- mode = mode ,
1084- username = username ,
1085- force_enrollment = force_enrollment ,
1086- )
1087- results .append (enrollment )
1088- except Exception as exc :
1089- log .exception ("Failed to create user %s in edX." , user .edx_username )
1090- raise UnknownEdxApiEnrollException (user , course_run , exc ) from exc
1091- else :
1092- log .exception (
1093- "Failed to enroll user %s in course run %s with mode %s." ,
1094- user .edx_username ,
1095- course_run .courseware_id ,
1096- mode ,
1097- )
1098- raise EdxApiEnrollErrorException (user , course_run , exc ) from exc
1081+ log .error ( # noqa: TRY400
1082+ "Failed to enroll user %s in course run %s with mode %s." ,
1083+ user .edx_username ,
1084+ course_run .courseware_id ,
1085+ mode ,
1086+ )
1087+ raise EdxApiEnrollErrorException (user , course_run , exc ) from exc
10991088 except Exception as exc : # pylint: disable=broad-except
11001089 raise UnknownEdxApiEnrollException (user , course_run , exc ) from exc
11011090 return results
0 commit comments