def METHOD_NAME(self, request):
    email = request.user.username
    if not ENABLE_UPDATE_USER_INFO:
        error_msg = _('Feature disabled.')
        return api_error(status.HTTP_403_FORBIDDEN, error_msg)
    # argument check for name
    name = request.data.get("name", None)
    if name:
        name = name.strip()
        if len(name) > 64:
            error_msg = _('Name is too long (maximum is 64 characters)')
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
        if "/" in name:
            error_msg = _("Name should not include '/'.")
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    # argument check for contact_email
    contact_email = request.data.get("contact_email", None)
    if contact_email:
        if not ENABLE_USER_SET_CONTACT_EMAIL:
            error_msg = _('Feature disabled.')
            return api_error(status.HTTP_403_FORBIDDEN, error_msg)
        profile = Profile.objects.get_profile_by_contact_email(contact_email)
        if profile and profile.user != email:
            # if contact email is used by others, return 403
            error_msg = _('Contact email %s already exists.' % contact_email)
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
        # update contact email
        contact_email = contact_email.strip()
        if not is_valid_email(contact_email):
            error_msg = 'contact_email invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    # agrument check for telephone
    telephone = request.data.get('telephone', None)
    if telephone:
        telephone = telephone.strip()
        if len(telephone) > 100:
            error_msg = _('telephone is too long (maximum is 100 characters).')
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    # argument check for list_in_address_book
    list_in_address_book = request.data.get("list_in_address_book", None)
    if list_in_address_book is not None:
        if list_in_address_book.lower() not in ('true', 'false'):
            error_msg = 'list_in_address_book invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
    info_dict = {
        'name': name,
        'contact_email': contact_email,
        'telephone': telephone,
        'list_in_address_book': list_in_address_book,
    }
    # update user profile and user additionnal info
    try:
        self._update_user_info(info_dict, email)
    except Exception as e:
        logger.error(e)
        error_msg = 'Internal Server Error'
        return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
    # get user info and return
    info = self._get_user_info(email)
    return Response(info)