From dc01bf3aadf60cebe90af46b2cccc20deb5047ce Mon Sep 17 00:00:00 2001 From: Andy Shultz Date: Wed, 8 Sep 2021 13:46:44 -0400 Subject: [PATCH] feat: add parameter to submit attempt to carry full name through original behavior does pass the empty name through to _update_full_name rather than just considering that as full name not set. That's a little weird but outside the scope of this work so I've preserved it by checking is not None rather than just using full_name as a boolean. MST-1015 --- lms/djangoapps/verify_student/tests/test_views.py | 4 ++++ lms/djangoapps/verify_student/views.py | 15 +++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/verify_student/tests/test_views.py b/lms/djangoapps/verify_student/tests/test_views.py index a7a88b9c8c..cb0c1f8e61 100644 --- a/lms/djangoapps/verify_student/tests/test_views.py +++ b/lms/djangoapps/verify_student/tests/test_views.py @@ -1269,6 +1269,10 @@ class TestSubmitPhotosForVerification(MockS3BotoMixin, TestVerificationBase): # Check that the user's name was changed in the database if verified_name is off self._assert_user_name(self.FULL_NAME, equality=not flag_on) + # Since we are giving a full name, it should be written into the attempt + # whether or not the user name was updated + attempt = SoftwareSecurePhotoVerification.objects.get(user=self.user) + self.assertEqual(attempt.name, self.FULL_NAME) def test_submit_photos_sends_confirmation_email(self): self._submit_photos( diff --git a/lms/djangoapps/verify_student/views.py b/lms/djangoapps/verify_student/views.py index b0d919fd91..79fff495dd 100644 --- a/lms/djangoapps/verify_student/views.py +++ b/lms/djangoapps/verify_student/views.py @@ -846,9 +846,13 @@ class SubmitPhotosView(View): if response is not None: return response + full_name = None + if "full_name" in params: + full_name = params["full_name"] + # If necessary, update the user's full name - if "full_name" in params and not is_verified_name_enabled(): - response = self._update_full_name(request, params["full_name"]) + if full_name is not None and not is_verified_name_enabled(): + response = self._update_full_name(request, full_name) if response is not None: return response @@ -867,7 +871,7 @@ class SubmitPhotosView(View): return response # Submit the attempt - attempt = self._submit_attempt(request.user, face_image, photo_id_image, initial_verification) + attempt = self._submit_attempt(request.user, face_image, photo_id_image, initial_verification, full_name) # Send event to segment for analyzing A/B testing data data = { @@ -1019,7 +1023,7 @@ class SubmitPhotosView(View): log.error(("Image data for user {user_id} is not valid").format(user_id=request.user.id)) return None, None, HttpResponseBadRequest(msg) - def _submit_attempt(self, user, face_image, photo_id_image=None, initial_verification=None): + def _submit_attempt(self, user, face_image, photo_id_image=None, initial_verification=None, provided_name=None): """ Submit a verification attempt. @@ -1030,8 +1034,11 @@ class SubmitPhotosView(View): Keyword Arguments: photo_id_image (str or None): Decoded photo ID image data. initial_verification (SoftwareSecurePhotoVerification): The initial verification attempt. + provided_name (str or None): full name given by user for this attempt """ attempt = SoftwareSecurePhotoVerification(user=user) + if provided_name: + attempt.name = provided_name # We will always have face image data, so upload the face image attempt.upload_face_image(face_image)