コード例 #1
0
 def memoizer(*args, **kwargs):
     key = str(args) + str(kwargs)
     if key not in cache:
         default_log.debug("memoize cache miss")
         cache[key] = obj(*args, **kwargs)
     else:
         default_log.debug("memoize cache hit")
     return cache[key]
コード例 #2
0
def create_browser(auth_required, login, password, login_handler):
    """
    Creates a browser and logs into website or service, if auth is required.

    This fn is memoized, so same browser object is returned on subsequent calls
    with the same args.

    :param auth_required: boolean
    :param login_handler: function
    :param login: string
    :param password: string
    :return:
    """

    global _browser, _browser_init_success

    default_log.debug("creating browser object...")
    _browser = browser()
    if auth_required:
        default_log.debug("logging in...")
        login_handler(_browser, login, password)

    return _browser
コード例 #3
0
    for form in browser.forms():
        browser.form = form
        login_populated, password_populated = False, False
        for possible_login_field in ['email', 'login']:
            try:
                browser[possible_login_field] = login
                login_populated = True
            except ControlNotFoundError, e:
                pass
            if login_populated:
                break
        try:
            browser['password'] = password
            password_populated = True
        except ControlNotFoundError, e:
            pass
        if login_populated and password_populated:
            response = browser.submit()
            break

    if "Logout" in response.read():
        default_log.debug("Login seemed successful")
        success = True
    else:
        success = False
        # subsequent requests using this browser will fail. oh well. :(
        # we can't do much about it here.
        default_log.error("Login seemed to fail on page %s" % (config.get('auth_url')))

    return success