def _update_profile(request): """Update a user's profile information. Args: request (HttpRequest) Returns: HttpResponse """ put = QueryDict(request.body) username = request.user.username new_name = put.get('fullName') if new_name is None: return HttpResponseBadRequest("Missing param 'fullName'") try: profile_api.update_profile(username, full_name=new_name) except profile_api.ProfileInvalidField: return HttpResponseBadRequest() except profile_api.ProfileUserNotFound: return HttpResponseServerError() # A 204 is intended to allow input for actions to take place # without causing a change to the user agent's active document view. return HttpResponse(status=204)
def _update_profile(request): """Update a user's profile information. Args: request (HttpRequest) Returns: HttpResponse """ put = QueryDict(request.body) username = request.user.username new_name = put.get('fullName') if new_name is None: return HttpResponseBadRequest("Missing param 'fullName'") try: profile_api.update_profile(username, full_name=new_name) except profile_api.ProfileInvalidField: return HttpResponseBadRequest() except profile_api.ProfileUserNotFound: return HttpResponseServerError() # A 204 is intended to allow input for actions to take place # without causing a change to the user agent's active document view. return HttpResponse(status=204)
def submit_photos_for_verification(request): """Submit a photo verification attempt. Arguments: request (HttpRequest): The request to submit photos. Returns: HttpResponse: 200 on success, 400 if there are errors. """ # Check the required parameters missing_params = set(['face_image', 'photo_id_image']) - set( request.POST.keys()) if len(missing_params) > 0: msg = _("Missing required parameters: {missing}").format( missing=", ".join(missing_params)) return HttpResponseBadRequest(msg) # If the user already has valid or pending request, the UI will hide # the verification steps. For this reason, we reject any requests # for users that already have a valid or pending verification. if SoftwareSecurePhotoVerification.user_has_valid_or_pending(request.user): return HttpResponseBadRequest( _("You already have a valid or pending verification.")) # If the user wants to change his/her full name, # then try to do that before creating the attempt. if request.POST.get('full_name'): try: profile_api.update_profile(request.user.username, full_name=request.POST.get('full_name')) except profile_api.ProfileUserNotFound: return HttpResponseBadRequest(_("No profile found for user")) except profile_api.ProfileInvalidField: msg = _("Name must be at least {min_length} characters long." ).format(min_length=profile_api.FULL_NAME_MIN_LENGTH) return HttpResponseBadRequest(msg) # Create the attempt attempt = SoftwareSecurePhotoVerification(user=request.user) try: b64_face_image = request.POST['face_image'].split(",")[1] b64_photo_id_image = request.POST['photo_id_image'].split(",")[1] except IndexError: msg = _("Image data is not valid.") return HttpResponseBadRequest(msg) attempt.upload_face_image(b64_face_image.decode('base64')) attempt.upload_photo_id_image(b64_photo_id_image.decode('base64')) attempt.mark_ready() attempt.submit() return HttpResponse(200)
def submit_photos_for_verification(request): """Submit a photo verification attempt. Arguments: request (HttpRequest): The request to submit photos. Returns: HttpResponse: 200 on success, 400 if there are errors. """ # Check the required parameters missing_params = set(['face_image', 'photo_id_image']) - set(request.POST.keys()) if len(missing_params) > 0: msg = _("Missing required parameters: {missing}").format(missing=", ".join(missing_params)) return HttpResponseBadRequest(msg) # If the user already has valid or pending request, the UI will hide # the verification steps. For this reason, we reject any requests # for users that already have a valid or pending verification. if SoftwareSecurePhotoVerification.user_has_valid_or_pending(request.user): return HttpResponseBadRequest(_("You already have a valid or pending verification.")) # If the user wants to change his/her full name, # then try to do that before creating the attempt. if request.POST.get('full_name'): try: profile_api.update_profile( request.user.username, full_name=request.POST.get('full_name') ) except profile_api.ProfileUserNotFound: return HttpResponseBadRequest(_("No profile found for user")) except profile_api.ProfileInvalidField: msg = _( "Name must be at least {min_length} characters long." ).format(min_length=profile_api.FULL_NAME_MIN_LENGTH) return HttpResponseBadRequest(msg) # Create the attempt attempt = SoftwareSecurePhotoVerification(user=request.user) try: b64_face_image = request.POST['face_image'].split(",")[1] b64_photo_id_image = request.POST['photo_id_image'].split(",")[1] except IndexError: msg = _("Image data is not valid.") return HttpResponseBadRequest(msg) attempt.upload_face_image(b64_face_image.decode('base64')) attempt.upload_photo_id_image(b64_photo_id_image.decode('base64')) attempt.mark_ready() attempt.submit() return HttpResponse(200)
def submit_photos_for_verification(request): """Submit a photo verification attempt. Arguments: request (HttpRequest): The request to submit photos. Returns: HttpResponse: 200 on success, 400 if there are errors. """ # Check the required parameters missing_params = set(['face_image', 'photo_id_image']) - set(request.POST.keys()) if len(missing_params) > 0: msg = _("Missing required parameters: {missing}").format(missing=", ".join(missing_params)) return HttpResponseBadRequest(msg) # If the user already has valid or pending request, the UI will hide # the verification steps. For this reason, we reject any requests # for users that already have a valid or pending verification. if SoftwareSecurePhotoVerification.user_has_valid_or_pending(request.user): return HttpResponseBadRequest(_("You already have a valid or pending verification.")) username = request.user.username # If the user wants to change his/her full name, # then try to do that before creating the attempt. if request.POST.get('full_name'): try: profile_api.update_profile( username, full_name=request.POST.get('full_name') ) except profile_api.ProfileUserNotFound: return HttpResponseBadRequest(_("No profile found for user")) except profile_api.ProfileInvalidField: msg = _( "Name must be at least {min_length} characters long." ).format(min_length=profile_api.FULL_NAME_MIN_LENGTH) return HttpResponseBadRequest(msg) # Create the attempt attempt = SoftwareSecurePhotoVerification(user=request.user) try: b64_face_image = request.POST['face_image'].split(",")[1] b64_photo_id_image = request.POST['photo_id_image'].split(",")[1] except IndexError: msg = _("Image data is not valid.") return HttpResponseBadRequest(msg) attempt.upload_face_image(b64_face_image.decode('base64')) attempt.upload_photo_id_image(b64_photo_id_image.decode('base64')) attempt.mark_ready() attempt.submit() profile_dict = profile_api.profile_info(username) if profile_dict: # Send a confirmation email to the user context = { 'full_name': profile_dict.get('full_name'), 'platform_name': settings.PLATFORM_NAME } subject = _("Verification photos received") message = render_to_string('emails/photo_submission_confirmation.txt', context) from_address = microsite.get_value('default_from_email', settings.DEFAULT_FROM_EMAIL) to_address = profile_dict.get('email') send_mail(subject, message, from_address, [to_address], fail_silently=False) return HttpResponse(200)
def submit_photos_for_verification(request): """Submit a photo verification attempt. Arguments: request (HttpRequest): The request to submit photos. Returns: HttpResponse: 200 on success, 400 if there are errors. """ # Check the required parameters missing_params = set(['face_image', 'photo_id_image']) - set( request.POST.keys()) if len(missing_params) > 0: msg = _("Missing required parameters: {missing}").format( missing=", ".join(missing_params)) return HttpResponseBadRequest(msg) # If the user already has valid or pending request, the UI will hide # the verification steps. For this reason, we reject any requests # for users that already have a valid or pending verification. if SoftwareSecurePhotoVerification.user_has_valid_or_pending(request.user): return HttpResponseBadRequest( _("You already have a valid or pending verification.")) username = request.user.username # If the user wants to change his/her full name, # then try to do that before creating the attempt. if request.POST.get('full_name'): try: profile_api.update_profile(username, full_name=request.POST.get('full_name')) except profile_api.ProfileUserNotFound: return HttpResponseBadRequest(_("No profile found for user")) except profile_api.ProfileInvalidField: msg = _("Name must be at least {min_length} characters long." ).format(min_length=profile_api.FULL_NAME_MIN_LENGTH) return HttpResponseBadRequest(msg) # Create the attempt attempt = SoftwareSecurePhotoVerification(user=request.user) try: b64_face_image = request.POST['face_image'].split(",")[1] b64_photo_id_image = request.POST['photo_id_image'].split(",")[1] except IndexError: msg = _("Image data is not valid.") return HttpResponseBadRequest(msg) attempt.upload_face_image(b64_face_image.decode('base64')) attempt.upload_photo_id_image(b64_photo_id_image.decode('base64')) attempt.mark_ready() attempt.submit() profile_dict = profile_api.profile_info(username) if profile_dict: # Send a confirmation email to the user context = { 'full_name': profile_dict.get('full_name'), 'platform_name': settings.PLATFORM_NAME } subject = _("Verification photos received") message = render_to_string('emails/photo_submission_confirmation.txt', context) from_address = microsite.get_value('default_from_email', settings.DEFAULT_FROM_EMAIL) to_address = profile_dict.get('email') send_mail(subject, message, from_address, [to_address], fail_silently=False) return HttpResponse(200)