ecommerce_worker/sailthru/v1/tasks.py
def _update_unenrolled_list(sailthru_client, email, course_url, unenroll):
    """Maintain a list of courses the user has unenrolled from in the Sailthru user record

    Arguments:
        sailthru_client (object): SailthruClient
        email (str): user's email address
        course_url (str): LMS url for course info page.
        unenroll (boolean): True if unenrolling, False if enrolling

    Returns:
        False if retryable error, else True
    """
    try:
        # get the user 'vars' values from sailthru
        sailthru_response = sailthru_client.api_get("user", {"id": email, "fields": {"vars": 1}})
        if not sailthru_response.is_ok():
            error = sailthru_response.get_error()
            logger.error("Error attempting to read user record from Sailthru: %s", error.get_message())
            return not can_retry_sailthru_request(error)

        response_json = sailthru_response.json

        unenroll_list = []
        if response_json and "vars" in response_json and response_json["vars"] \
           and "unenrolled" in response_json["vars"]:
            unenroll_list = response_json["vars"]["unenrolled"]

        changed = False
        # if unenrolling, add course to unenroll list
        if unenroll:
            if course_url not in unenroll_list:
                unenroll_list.append(course_url)
                changed = True

        # if enrolling, remove course from unenroll list
        elif course_url in unenroll_list:
            unenroll_list.remove(course_url)
            changed = True

        if changed:
            # write user record back
            sailthru_response = sailthru_client.api_post(
                'user', {'id': email, 'key': 'email', 'vars': {'unenrolled': unenroll_list}})

            if not sailthru_response.is_ok():
                error = sailthru_response.get_error()
                logger.error("Error attempting to update user record in Sailthru: %s", error.get_message())
                return not can_retry_sailthru_request(error)

        return True

    except SailthruClientError as exc:
        logger.exception("Exception attempting to update user record for %s in Sailthru - %s", email, text_type(exc))
        return False
def _update_unenrolled_list(sailthru_client, email, course_url, unenroll):
    try:
        # get the user 'vars' values from sailthru
        sailthru_response = sailthru_client.api_get("user", {"id": email, "fields": {"vars": 1}})
        if not sailthru_response.is_ok():
            error = sailthru_response.get_error()
            logger.error("Error attempting to read user record from Sailthru: %s", error.get_message())
            return not can_retry_sailthru_request(error)

        response_json = sailthru_response.json

        unenroll_list = []
        if response_json and "vars" in response_json and response_json["vars"] \
           and "unenrolled" in response_json["vars"]:
            unenroll_list = response_json["vars"]["unenrolled"]

        changed = False
        # if unenrolling, add course to unenroll list
        if unenroll:
            if course_url not in unenroll_list:
                unenroll_list.append(course_url)
                changed = True

        # if enrolling, remove course from unenroll list
        elif course_url in unenroll_list:
            unenroll_list.remove(course_url)
            changed = True

        if changed:
            # write user record back
            sailthru_response = sailthru_client.api_post(
                'user', {'id': email, 'key': 'email', 'vars': {'unenrolled': unenroll_list}})

            if not sailthru_response.is_ok():
                error = sailthru_response.get_error()
                logger.error("Error attempting to update user record in Sailthru: %s", error.get_message())
                return not can_retry_sailthru_request(error)

        return True

    except SailthruClientError as exc:
        logger.exception("Exception attempting to update user record for %s in Sailthru - %s", email, text_type(exc))
        return False
def _update_unenrolled_list ( sailthru_client , email , course_url , unenroll ) : try : # get the user 'vars' values from sailthru sailthru_response = sailthru_client . api_get ( "user" , { "id" : email , "fields" : { "vars" : 1 } } ) if not sailthru_response . is_ok ( ) : error = sailthru_response . get_error ( ) logger . error ( "Error attempting to read user record from Sailthru: %s" , error . get_message ( ) ) return not can_retry_sailthru_request ( error ) response_json = sailthru_response . json unenroll_list = [ ] if response_json and "vars" in response_json and response_json [ "vars" ] and "unenrolled" in response_json [ "vars" ] : unenroll_list = response_json [ "vars" ] [ "unenrolled" ] changed = False # if unenrolling, add course to unenroll list if unenroll : if course_url not in unenroll_list : unenroll_list . append ( course_url ) changed = True # if enrolling, remove course from unenroll list elif course_url in unenroll_list : unenroll_list . remove ( course_url ) changed = True if changed : # write user record back sailthru_response = sailthru_client . api_post ( 'user' , { 'id' : email , 'key' : 'email' , 'vars' : { 'unenrolled' : unenroll_list } } ) if not sailthru_response . is_ok ( ) : error = sailthru_response . get_error ( ) logger . error ( "Error attempting to update user record in Sailthru: %s" , error . get_message ( ) ) return not can_retry_sailthru_request ( error ) return True except SailthruClientError as exc : logger . exception ( "Exception attempting to update user record for %s in Sailthru - %s" , email , text_type ( exc ) ) return False
Maintain a list of courses the user has unenrolled from in the Sailthru user record

    Arguments:
        sailthru_client (object): SailthruClient
        email (str): user's email address
        course_url (str): LMS url for course info page.
        unenroll (boolean): True if unenrolling, False if enrolling

    Returns:
        False if retryable error, else True
Maintain a list of courses the user has unenrolled from in the Sailthru user record