Skip to content

Commit 2962a32

Browse files
committed
fix: improve error handling in extended profile form processing
1 parent 3f239e9 commit 2962a32

File tree

1 file changed

+20
-16
lines changed
  • openedx/core/djangoapps/user_api/accounts

1 file changed

+20
-16
lines changed

openedx/core/djangoapps/user_api/accounts/api.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,9 @@ def _get_extended_profile_form_instance(
280280
user (User): User instance to associate with the extended profile
281281
field_errors (dict): Dictionary to collect validation errors if form creation fails
282282
283+
Raises:
284+
AccountUpdateError: If there is an error creating the extended profile form
285+
283286
Returns:
284287
Optional[forms.Form]: Extended profile form instance with user data, or None if
285288
no extended profile form is configured or creation fails
@@ -304,12 +307,7 @@ def _get_extended_profile_form_instance(
304307
logger.warning("Extended profile model not available: %s", str(e))
305308
return None
306309
except Exception as e: # pylint: disable=broad-exception-caught
307-
logger.error("Unexpected error creating custom form for user %s: %s", user.username, str(e))
308-
field_errors["extended_profile"] = {
309-
"developer_message": f"Error creating custom form: {str(e)}",
310-
"user_message": _("There was an error processing the extended profile information"),
311-
}
312-
return None
310+
raise AccountUpdateError(f"Error creating custom form: {str(e)}") from e
313311

314312

315313
def _validate_extended_profile_form_and_collect_errors(extended_profile_form: forms.Form, field_errors: dict) -> None:
@@ -319,17 +317,23 @@ def _validate_extended_profile_form_and_collect_errors(extended_profile_form: fo
319317
Args:
320318
extended_profile_form (forms.Form): The extended profile form to validate
321319
field_errors (dict): Dictionary to collect validation errors
322-
"""
323-
if not extended_profile_form.is_valid():
324-
logger.info("Extended profile form validation failed with errors: %s", extended_profile_form.errors)
325320
326-
for field_name, field_errors_list in extended_profile_form.errors.items():
327-
first_error = field_errors_list[0] if field_errors_list else "Unknown error"
328-
329-
field_errors[field_name] = {
330-
"developer_message": f"Error in extended profile field {field_name}: {first_error}",
331-
"user_message": str(first_error),
332-
}
321+
Raises:
322+
AccountUpdateError: If there is an error validating the extended profile form
323+
"""
324+
try:
325+
if not extended_profile_form.is_valid():
326+
logger.info("Extended profile form validation failed with errors: %s", extended_profile_form.errors)
327+
328+
for field_name, field_errors_list in extended_profile_form.errors.items():
329+
first_error = field_errors_list[0] if field_errors_list else "Unknown error"
330+
331+
field_errors[field_name] = {
332+
"developer_message": f"Error in extended profile field {field_name}: {first_error}",
333+
"user_message": str(first_error),
334+
}
335+
except Exception as error: # pylint: disable=broad-exception-caught
336+
raise AccountUpdateError(f"Error thrown when validating extended profile form: '{str(error)}'") from error
333337

334338

335339
def _validate_read_only_fields(user, data, field_errors):

0 commit comments

Comments
 (0)