From 4e1fe2045f396f35349cbc611c8fbb2499a3d6a9 Mon Sep 17 00:00:00 2001 From: adeelehsan Date: Wed, 13 May 2020 08:05:12 +0500 Subject: [PATCH] Specify bio message for user Currently user message is generic. Specifying for bio field so that it make more sense to user. PROD-1582 --- .../core/djangoapps/user_api/accounts/tests/test_views.py | 7 ++++++- openedx/core/lib/api/view_utils.py | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/openedx/core/djangoapps/user_api/accounts/tests/test_views.py b/openedx/core/djangoapps/user_api/accounts/tests/test_views.py index 96de95182e..040e4fb59d 100644 --- a/openedx/core/djangoapps/user_api/accounts/tests/test_views.py +++ b/openedx/core/djangoapps/user_api/accounts/tests/test_views.py @@ -611,10 +611,15 @@ class TestAccountsAPI(CacheIsolationTestCase, UserAPITestCase): if fails_validation_value: error_response = self.send_patch(client, {field: fails_validation_value}, expected_status=400) + expected_user_message = u'This value is invalid.' + if field == 'bio': + expected_user_message = u"The about me field must be at most 300 characters long." + self.assertEqual( - u'This value is invalid.', + expected_user_message, error_response.data["field_errors"][field]["user_message"] ) + self.assertEqual( u"Value '{value}' is not valid for field '{field}': {messages}".format( value=fails_validation_value, field=field, messages=[developer_validation_message] diff --git a/openedx/core/lib/api/view_utils.py b/openedx/core/lib/api/view_utils.py index b776cbc5e1..e4c35b02a6 100644 --- a/openedx/core/lib/api/view_utils.py +++ b/openedx/core/lib/api/view_utils.py @@ -23,6 +23,7 @@ from rest_framework.views import APIView from six import text_type, iteritems from openedx.core.djangoapps.content.course_overviews.models import CourseOverview +from openedx.core.djangoapps.user_api.accounts import BIO_MAX_LENGTH from openedx.core.lib.api.authentication import BearerAuthenticationAllowInactiveUser from openedx.core.lib.api.permissions import IsUserInUrl @@ -154,11 +155,16 @@ def add_serializer_errors(serializer, data, field_errors): errors = serializer.errors for key, error in iteritems(errors): error = clean_errors(error) + if key == 'bio': + user_message = _(u"The about me field must be at most {} characters long.".format(BIO_MAX_LENGTH)) + else: + user_message = _(u"This value is invalid.") + field_errors[key] = { 'developer_message': u"Value '{field_value}' is not valid for field '{field_name}': {error}".format( field_value=data.get(key, ''), field_name=key, error=error ), - 'user_message': _(u"This value is invalid."), + 'user_message': user_message, } return field_errors