add a 'settings' attribute on loggers to store user values like 'save_responses', 'responses_dirname', 'ssl_insecure', etc.

This commit is contained in:
Romain Bignon 2014-03-25 22:58:35 +01:00
commit 42028c390f
5 changed files with 34 additions and 39 deletions

View file

@ -21,7 +21,6 @@
from copy import copy
from httplib import BadStatusLine
from logging import warning
try:
import mechanize
@ -41,6 +40,7 @@ import time
import urllib
import urllib2
import mimetypes
import logging
from contextlib import closing
from gzip import GzipFile
import warnings
@ -55,7 +55,7 @@ from weboob.tools.parsers import get_parser
try:
from .firefox_cookies import FirefoxCookieJar
except ImportError as e:
warning("Unable to store cookies: %s" % e)
logging.warning("Unable to store cookies: %s", e)
HAVE_COOKIES = False
else:
HAVE_COOKIES = True
@ -194,15 +194,11 @@ class StandardBrowser(mechanize.Browser):
'wget': 'Wget/1.11.4',
}
USER_AGENT = USER_AGENTS['desktop_firefox']
SAVE_RESPONSES = False
DEBUG_HTTP = False
DEBUG_MECHANIZE = False
DEFAULT_TIMEOUT = 15
INSECURE = False # if True, do not validate SSL
responses_dirname = None
responses_count = 0
logger = None
# ------ Browser methods ---------------------------------------
@ -244,11 +240,14 @@ class StandardBrowser(mechanize.Browser):
# display messages from httplib
self.set_debug_http(True)
if self.DEBUG_MECHANIZE:
if logging.root.level == logging.DEBUG:
# Enable log messages from mechanize.Browser
self.set_debug_redirects(True)
mech_logger = logging.getLogger("mechanize")
mech_logger.setLevel(logging.INFO)
self.responses_dirname = responses_dirname
self.responses_count = 0
def __enter__(self):
self.lock.acquire()
@ -304,7 +303,7 @@ class StandardBrowser(mechanize.Browser):
result = self.openurl(url, *args, **kwargs)
if result:
if self.SAVE_RESPONSES:
if self.logger.settings['save_responses']:
self.save_response(result)
return result.read()
else:
@ -431,7 +430,7 @@ class StandardBrowser(mechanize.Browser):
return
def lowsslcheck(self, domain, hsh):
if self.INSECURE:
if self.INSECURE or self.logger.settings['ssl_insecure']:
return
certhash = self._certhash(domain)
if self.logger:
@ -698,7 +697,7 @@ class BaseBrowser(StandardBrowser):
self.logger.debug('[user_id=%s] Went on %s' % (self.username, result.geturl()))
self.last_update = time.time()
if self.SAVE_RESPONSES:
if self.logger.settings['save_responses']:
self.save_response(result)
document = self.get_document(result, parser, encoding=pageCls.ENCODING)