def login(session, username, password, class_name=None):
    """
    Login on coursera.org with the given credentials.

    This adds the following cookies to the session:
        sessionid, maestro_login, maestro_login_flag
    """

    logging.debug('Initiating login.')
    try:
        session.cookies.clear('.coursera.org')
        logging.debug('Cleared .coursera.org cookies.')
    except KeyError:
        logging.debug('There were no .coursera.org cookies to be cleared.')

    # Hit class url
    if class_name is not None:
        class_url = CLASS_URL.format(class_name=class_name)
        r = requests.get(class_url, allow_redirects=False)
        try:
            r.raise_for_status()
        except requests.exceptions.HTTPError as e:
            logging.error(e)
            raise ClassNotFound(class_name)

    headers = prepare_auth_headers(session, include_cauth=False)

    data = {
        'email': username,
        'password': password,
        'webrequest': 'true'
    }

    # Auth API V3
    r = session.post(AUTH_URL_V3, data=data,
                     headers=headers, allow_redirects=False)
    try:
        r.raise_for_status()

        # Some how the order of cookies parameters are important
        # for coursera!!!
        v = session.cookies.pop('CAUTH')
        session.cookies.set('CAUTH', v)
    except requests.exceptions.HTTPError as e:
        raise AuthenticationFailed('Cannot login on coursera.org: %s' % e)

    logging.info('Logged in on coursera.org.')
def login ( session , username , password , class_name = None ) : logging . debug ( 'Initiating login.' ) try : session . cookies . clear ( '.coursera.org' ) logging . debug ( 'Cleared .coursera.org cookies.' ) except KeyError : logging . debug ( 'There were no .coursera.org cookies to be cleared.' ) if class_name is not None : class_url = CLASS_URL . format ( class_name = class_name ) r = requests . get ( class_url , allow_redirects = False ) try : r . raise_for_status ( ) except requests . exceptions . HTTPError as e : logging . error ( e ) raise ClassNotFound ( class_name ) headers = prepare_auth_headers ( session , include_cauth = False ) data = { 'email' : username , 'password' : password , 'webrequest' : 'true' } r = session . post ( AUTH_URL_V3 , data = data , headers = headers , allow_redirects = False ) try : r . raise_for_status ( ) v = session . cookies . pop ( 'CAUTH' ) session . cookies . set ( 'CAUTH' , v ) except requests . exceptions . HTTPError as e : raise AuthenticationFailed ( 'Cannot login on coursera.org: %s' % e ) logging . info ( 'Logged in on coursera.org.' )
Login on coursera.org with the given credentials.

    This adds the following cookies to the session:
        sessionid, maestro_login, maestro_login_flag