Skip to content

Commit 4152ba6

Browse files
committed
feedback + deps error fix
1 parent ae63a7a commit 4152ba6

File tree

3 files changed

+20
-23
lines changed

3 files changed

+20
-23
lines changed

openedx/api.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ def _set_edx_error(open_edx_user, data):
265265
open_edx_user.save()
266266

267267

268-
def _create_edx_user_request(open_edx_user, user, access_token): # noqa: C901
268+
def _create_edx_user_request(open_edx_user, user, access_token): # noqa: C901, PLR0915
269269
"""
270270
Handle the actual user creation request to Open edX with retry logic for duplicate usernames.
271271
@@ -314,7 +314,7 @@ def _create_edx_user_request(open_edx_user, user, access_token): # noqa: C901
314314
try:
315315
resp = None
316316
data = None
317-
317+
tried_duplicate_email_fix = False
318318
while attempt < max_attempts:
319319
attempt += 1
320320

@@ -335,6 +335,16 @@ def _create_edx_user_request(open_edx_user, user, access_token): # noqa: C901
335335

336336
data = _parse_openedx_response(resp)
337337

338+
# Only try for LTI user duplicate email error fix if the response error was duplicate-email
339+
if _is_duplicate_email_error(resp, data) and not tried_duplicate_email_fix:
340+
tried_duplicate_email_fix = True
341+
client = get_edx_api_lti_dup_email_client()
342+
dup_email_fix_resp = client.fix_lti_user(email=user.email)
343+
# If the LTI API fixed the duplicate email issue, Retry account creation
344+
if dup_email_fix_resp.status_code == status.HTTP_200_OK:
345+
continue
346+
break
347+
338348
new_username, should_continue, should_reset_attempts = (
339349
_handle_username_collision(
340350
resp,
@@ -351,17 +361,6 @@ def _create_edx_user_request(open_edx_user, user, access_token): # noqa: C901
351361
if should_reset_attempts:
352362
attempt = 0
353363
continue
354-
355-
# Only try for LTI user duplicate email error fix if the response error was duplicate-email
356-
if _is_duplicate_email_error(resp, data):
357-
client = get_edx_api_lti_dup_email_client()
358-
dup_email_fix_resp = client.fix_lti_user(
359-
email=user.email, username=current_username
360-
)
361-
# If the LTI API fixed the duplicate email issue, Retry account creation
362-
if dup_email_fix_resp.status_code == status.HTTP_200_OK:
363-
continue
364-
break
365364
break
366365

367366
if _is_bad_request(resp):

openedx/api_test.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -287,14 +287,12 @@ def test_create_edx_user_409_errors(settings, error_data, lti_fix_response_statu
287287

288288
assert resp1.call_count == 0
289289
if is_duplicate_email:
290-
if lti_fix_response_status == status.HTTP_200_OK:
291-
# The registration will be retried again after the LTI fix and since the loops
292-
# runs 4 times it will run 4 times
293-
assert resp2.call_count == 4
294-
assert resp3.call_count == 4
295-
else:
296-
assert resp2.call_count == 1
297-
assert resp3.call_count == 1
290+
assert (
291+
resp2.call_count == 2
292+
if lti_fix_response_status == status.HTTP_200_OK
293+
else 1
294+
)
295+
assert resp3.call_count == 1
298296
else:
299297
assert resp2.call_count == 1
300298
assert resp3.call_count == 0

poetry.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)