From 09b0ae72d4e4c5bea09c94bc42dd4feb968edc4a Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Mon, 1 Apr 2013 17:24:20 +0200 Subject: [PATCH] implicitly convert unicode objects to str for form values --- weboob/tools/browser/browser.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/weboob/tools/browser/browser.py b/weboob/tools/browser/browser.py index 7a0c5fa0..0757aad4 100644 --- a/weboob/tools/browser/browser.py +++ b/weboob/tools/browser/browser.py @@ -44,6 +44,7 @@ from urlparse import urlsplit import mimetypes from contextlib import closing from gzip import GzipFile +import warnings from weboob.tools.decorators import retry from weboob.tools.log import getLogger @@ -122,6 +123,11 @@ class NoHistory(object): class BrokenPageError(Exception): pass +class FormFieldConversionWarning(UserWarning): + """ + A value has been set to a form's field and has been implicitly converted. + """ + class BasePage(object): """ @@ -441,6 +447,16 @@ class StandardBrowser(mechanize.Browser): if certhash not in hsh: raise ssl.SSLError() + def __setitem__(self, key, value): + if isinstance(value, unicode): + value = value.encode(self.ENCODING or 'utf-8') + warnings.warn('Implicit conversion of form field %r from unicode to str' % key, + FormFieldConversionWarning, stacklevel=2) + if self.form is None: + raise AttributeError('Please select a form before setting values to fields') + return self.form.__setitem__(key, value) + + class BaseBrowser(StandardBrowser): """