← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 609153] Re: Forms unable to handle accented characters

 

** Changed in: openobject-client-web
       Status: Fix Committed => Fix Released

-- 
Forms unable to handle accented characters
https://bugs.launchpad.net/bugs/609153
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.

Status in OpenObject Web Client: Fix Released
Status in OpenObject Server: Invalid

Bug description:
Openerp6 craches when there is accents in french translation; when trying to go in administration>Séquence>Séquence for exemple

<type 'exceptions.UnicodeEncodeError'>	Python 2.6.5: /usr/bin/python
Fri Jul 23 15:51:27 2010

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
 /usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cprequest.py in respond(self=<cherrypy._cprequest.Request object>, path_info='/openerp/tree/open')
  604                     if self.handler:
  605                         self.stage = 'handler'
  606                         cherrypy.response.body = self.handler()
  607                     
  608                     self.stage = 'before_finalize'
global cherrypy = <module 'cherrypy' from '/usr/local/lib/python2..../CherryPy-3.1.2-py2.6.egg/cherrypy/__init__.pyc'>, cherrypy.response = <cherrypy._ThreadLocalProxy object>, cherrypy.response.body = [], self = <cherrypy._cprequest.Request object>, self.handler = <cherrypy._cpdispatch.LateParamPageHandler object>
 /usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object>)
   23     def __call__(self):
   24         try:
   25             return self.callable(*self.args, **self.kwargs)
   26         except TypeError, x:
   27             test_callable_spec(self.callable, self.args, self.kwargs)
self = <cherrypy._cpdispatch.LateParamPageHandler object>, self.callable = <bound method Root.default of <openobject.controllers._root.Root object>>, self.args = ('openerp', 'tree', 'open'), self.kwargs = {'id': '22', 'model': 'ir.ui.menu'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openobject.controllers._root.Root object>, 'openerp', 'tree', 'open'), **kw={'id': '22', 'model': 'ir.ui.menu'})
  200         def func_wrapper(*args, **kw):
  201 
  202             res = func(*args, **kw)
  203 
  204             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
global res = '/usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/config/openobject-web.cfg', func = <function default>, args = (<openobject.controllers._root.Root object>, 'openerp', 'tree', 'open'), kw = {'id': '22', 'model': 'ir.ui.menu'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/openobject/controllers/_root.py in default(self=<openobject.controllers._root.Root object>, *args=('openerp', 'tree', 'open'), **kw={'id': '22', 'model': 'ir.ui.menu'})
   35             request.handler = cherrypy.NotFound()
   36 
   37         return request.handler()
   38 
   39     def find_handler(self):
request = <cherrypy._ThreadLocalProxy object>, request.handler = <cherrypy._cpdispatch.LateParamPageHandler object>
 /usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object>)
   23     def __call__(self):
   24         try:
   25             return self.callable(*self.args, **self.kwargs)
   26         except TypeError, x:
   27             test_callable_spec(self.callable, self.args, self.kwargs)
self = <cherrypy._cpdispatch.LateParamPageHandler object>, self.callable = <function open>, self.args = (), self.kwargs = {'id': '22', 'model': 'ir.ui.menu'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/utils.py in wrapper(*args=(), **kw={'id': '22', 'model': 'ir.ui.menu'})
  122             # User is logged in; allow access
  123             clear_login_fields(kw)
  124             return fn(*args, **kw)
  125         else:
  126             # User isn't logged in yet.
fn = <bound method Tree.open of <openerp.controllers.tree.Tree object>>, args = (), kw = {'id': '22', 'model': 'ir.ui.menu'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.tree.Tree object>,), **kw={'id': '22', 'model': 'ir.ui.menu'})
  200         def func_wrapper(*args, **kw):
  201 
  202             res = func(*args, **kw)
  203 
  204             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
global res = '/usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/config/openobject-web.cfg', func = <function open>, args = (<openerp.controllers.tree.Tree object>,), kw = {'id': '22', 'model': 'ir.ui.menu'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/tree.py in open(self=<openerp.controllers.tree.Tree object>, **kw={'id': '22', 'model': 'ir.ui.menu'})
  261         return self.do_action('tree_but_open', datas={
  262                 '_terp_model': kw.get('model'),
  263                 '_terp_context': kw.get('context', {}),
  264                 '_terp_domain': kw.get('domain', []),
  265                 'ids': kw.get('id')})
kw = {'id': '22', 'model': 'ir.ui.menu'}, kw.get = <built-in method get of dict object>
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/tree.py in do_action(self=<openerp.controllers.tree.Tree object>, name='tree_but_open', adds={}, datas={'_terp_context': {}, '_terp_domain': [], '_terp_model': 'ir.ui.menu', 'ids': '22'})
  222             return actions.execute_by_keyword(
  223                     name, adds=adds, model=model, id=id, ids=ids, context=ctx,
  224                     report_type='pdf')
  225         else:
  226             raise common.message(_("No record selected!"))
report_type undefined
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/actions.py in execute_by_keyword(keyword='tree_but_open', adds={}, **data={'context': {'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, 'id': 22, 'ids': [22], 'model': 'ir.ui.menu', 'report_type': 'pdf'})
  383     if len(keyact) == 1:
  384         data['context'].update(rpc.session.context)
  385         return execute(action, **data)
  386     else:
  387         return Selection().create(keyact, **data)
global execute = <function execute>, action = {'auto_refresh': 0, 'auto_search': True, 'context': u"{'active_test': False}", 'default_user_ids': [], 'display_help': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': False, 'id': 8, ...}, data = {'context': {'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, 'id': 22, 'ids': [22], 'model': 'ir.ui.menu', 'report_type': 'pdf'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/actions.py in execute(action={'auto_refresh': 0, 'auto_search': True, 'context': u"{'active_test': False}", 'default_user_ids': [], 'display_help': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': False, 'id': 8, ...}, **data={'context': {'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, 'id': 22, 'ids': [22], 'limit': 80, 'model': 'ir.ui.menu', 'report_type': 'pdf', 'res_id': None, 'res_model': u'ir.sequence', 'search_view': u'{\'name\': u\'ir.sequence.form\', \'type\': u\'form\', \'...ode" select="1"/></form>\', \'field_parent\': False}', 'view_mode': u'tree,form', ...})
  262                              target=action.get('target'),
  263                              limit=data.get('limit'),
  264                              search_view = data['search_view'])
  265 
  266         return res
search_view = False, data = {'context': {'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, 'id': 22, 'ids': [22], 'limit': 80, 'model': 'ir.ui.menu', 'report_type': 'pdf', 'res_id': None, 'res_model': u'ir.sequence', 'search_view': u'{\'name\': u\'ir.sequence.form\', \'type\': u\'form\', \'...ode" select="1"/></form>\', \'field_parent\': False}', 'view_mode': u'tree,form', ...}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/actions.py in execute_window(view_ids=[19, False], model=u'ir.sequence', res_id=None, domain=[], view_type=u'form', context={'_terp_view_name': u'S\xe9quences', 'active_id': 22, 'active_ids': [22], 'active_model': 'ir.ui.menu', 'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, mode=[u'tree', u'form'], name=u'S\xe9quences', target=u'current', limit=80, search_view=u'{\'name\': u\'ir.sequence.form\', \'type\': u\'form\', \'...ode" select="1"/></form>\', \'field_parent\': False}')
   84         params.view_mode=mode
   85 
   86         return Form().create(params)
   87 
   88     elif view_type == 'tree':
global Form = <class 'openerp.controllers.form.Form'>, ).create = <unbound method Form.create>, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/utils.py in wrapper(*args=({'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]},), **kw={})
  122             # User is logged in; allow access
  123             clear_login_fields(kw)
  124             return fn(*args, **kw)
  125         else:
  126             # User isn't logged in yet.
fn = <bound method Form.create of <openerp.controllers.form.Form object>>, args = ({'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]},), kw = {}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.form.Form object>, {'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}), **kw={})
  200         def func_wrapper(*args, **kw):
  201 
  202             res = func(*args, **kw)
  203 
  204             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
global res = '/usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/config/openobject-web.cfg', func = <function create>, args = (<openerp.controllers.form.Form object>, {'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}), kw = {}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/form.py in create(self=<openerp.controllers.form.Form object>, params={'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}, tg_errors=None)
  200         if params.view_type == 'tree':
  201             params.editable = True
  202         form = self.create_form(params, tg_errors)
  203 
  204         if not tg_errors:
form undefined, self = <openerp.controllers.form.Form object>, self.create_form = <bound method Form.create_form of <openerp.controllers.form.Form object>>, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}, tg_errors = None
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/controllers/form.py in create_form(self=<openerp.controllers.form.Form object>, params={'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}, tg_errors=None)
  191         params.view_type = params.view_type or params.view_mode[0]
  192 
  193         return tw.form_view.ViewForm(params, name="view_form", action="/openerp/form/save")
  194 
  195     @expose(template="templates/form.mako")
global tw = <module 'openerp.widgets' from '/usr/local/lib/p...ev-py2.6.egg/addons/openerp/widgets/__init__.py'>, tw.form_view = <module 'openerp.widgets.form_view' from '/usr/l...v-py2.6.egg/addons/openerp/widgets/form_view.py'>, tw.form_view.ViewForm = <class 'openerp.widgets.form_view.ViewForm'>, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}, name undefined, action undefined
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/openobject/widgets/_meta.py in wrapper(self=ViewForm, *args=({'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]},), **kw={'action': '/openerp/form/save', 'name': 'view_form'})
   38             self.__initstack.append(1)
   39 
   40         res = func(self, *args, **kw)
   41         try:
   42             self.__initstack.pop()
res undefined, func = <function __init__>, self = ViewForm, args = ({'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]},), kw = {'action': '/openerp/form/save', 'name': 'view_form'}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/widgets/form_view.py in __init__(self=ViewForm, params={'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}, **kw={'action': '/openerp/form/save', 'name': 'view_form'})
   89         if params.view_type in ('tree', 'graph'):
   90             self.search = Search(model=params.model, domain=search_param, context=params.context, values=params.search_data or {},
   91                                  filter_domain=params.filter_domain or [], search_view=params.search_view, group_by_ctx=params.group_by_ctx or [])
   92             
   93             cherrypy.request.custom_search_domain = self.search.listof_domain or []
filter_domain undefined, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ...tment_id': False}, '_terp_view_ids': [19, False]}, params.filter_domain = None, search_view undefined, params.search_view = {'arch': u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', 'field_parent': False, 'fields': {'active': {'selectable': True, 'string': u'Actif', 'type': 'boolean'}, 'code': {'required': True, 'selectable': True, 'selection': [(u'account.invoice.out_invoice', u'Account Invoice Out'), (u'account.invoice.in_invoice', u'Account Invoice In'), (u'account.invoice.out_refund', u'Account Refund Out'), (u'account.invoice.in_refund', u'Account Refund In'), (u'account.analytic.account', u'Analytic account'), (u'account.journal', u'Account Journal'), (u'account.reconcile', u'Account reconcile sequence'), (u'account.bank.statement', u'Bank Statement'), (u'saj', u'Sales Journal - (test)'), (u'scnj', u'Sales Credit Note Journal - (test)'), (u'exj', u'Expenses Journal - (test)'), (u'ecnj', u'Expenses Credit Notes Journal - (test)'), (u'bnk', u'Bank Journal - (test)'), (u'chk', u'Checks Journal - (test)')], 'size': 64, 'string': u'Code de la s\xe9quence', 'type': 'selection'}, 'company_id': {'context': {}, 'domain': [], 'relation': 'res.company', 'selectable': True, 'string': u'Soci\xe9t\xe9', 'type': 'many2one'}, 'fiscal_ids': {'context': {}, 'domain': [], 'relation': 'account.sequence.fiscalyear', 'selectable': True, 'string': u'S\xe9quences', 'type': 'one2many'}, 'name': {'required': True, 'selectable': True, 'size': 64, 'string': u'Nom de la s\xe9quence', 'type': 'char'}, 'number_increment': {'required': True, 'selectable': True, 'string': u'Incr\xe9menter le Num\xe9ro', 'type': 'integer'}, 'number_next': {'required': True, 'selectable': True, 'string': u'Num\xe9ro suivant', 'type': 'integer'}, 'padding': {'help': "OpenERP will automatically adds some '0' on the ...e 'Next Number' to get the required padding size.", 'required': True, 'selectable': True, 'string': u'Remplissage', 'type': 'integer'}, 'prefix': {'selectable': True, 'size': 64, 'string': u'Pr\xe9fixe', 'type': 'char'}, 'suffix': {'selectable': True, 'size': 64, 'string': u'Suffixe', 'type': 'char'}}, 'model': 'ir.sequence', 'name': u'ir.sequence.form', 'type': u'form', 'view_id': 18}, group_by_ctx undefined, params.group_by_ctx = None
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/openobject/widgets/_meta.py in wrapper(self=Search, *args=(), **kw={'context': {'_terp_view_name': u'S\xe9quences', 'active_id': 22, 'active_ids': [22], 'active_model': 'ir.ui.menu', 'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, 'domain': [], 'filter_domain': [], 'group_by_ctx': [], 'model': u'ir.sequence', 'search_view': {'arch': u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', 'field_parent': False, 'fields': {'active': {'selectable': True, 'string': u'Actif', 'type': 'boolean'}, 'code': {'required': True, 'selectable': True, 'selection': [(u'account.invoice.out_invoice', u'Account Invoice Out'), (u'account.invoice.in_invoice', u'Account Invoice In'), (u'account.invoice.out_refund', u'Account Refund Out'), (u'account.invoice.in_refund', u'Account Refund In'), (u'account.analytic.account', u'Analytic account'), (u'account.journal', u'Account Journal'), (u'account.reconcile', u'Account reconcile sequence'), (u'account.bank.statement', u'Bank Statement'), (u'saj', u'Sales Journal - (test)'), (u'scnj', u'Sales Credit Note Journal - (test)'), (u'exj', u'Expenses Journal - (test)'), (u'ecnj', u'Expenses Credit Notes Journal - (test)'), (u'bnk', u'Bank Journal - (test)'), (u'chk', u'Checks Journal - (test)')], 'size': 64, 'string': u'Code de la s\xe9quence', 'type': 'selection'}, 'company_id': {'context': {}, 'domain': [], 'relation': 'res.company', 'selectable': True, 'string': u'Soci\xe9t\xe9', 'type': 'many2one'}, 'fiscal_ids': {'context': {}, 'domain': [], 'relation': 'account.sequence.fiscalyear', 'selectable': True, 'string': u'S\xe9quences', 'type': 'one2many'}, 'name': {'required': True, 'selectable': True, 'size': 64, 'string': u'Nom de la s\xe9quence', 'type': 'char'}, 'number_increment': {'required': True, 'selectable': True, 'string': u'Incr\xe9menter le Num\xe9ro', 'type': 'integer'}, 'number_next': {'required': True, 'selectable': True, 'string': u'Num\xe9ro suivant', 'type': 'integer'}, 'padding': {'help': "OpenERP will automatically adds some '0' on the ...e 'Next Number' to get the required padding size.", 'required': True, 'selectable': True, 'string': u'Remplissage', 'type': 'integer'}, 'prefix': {'selectable': True, 'size': 64, 'string': u'Pr\xe9fixe', 'type': 'char'}, 'suffix': {'selectable': True, 'size': 64, 'string': u'Suffixe', 'type': 'char'}}, 'model': 'ir.sequence', 'name': u'ir.sequence.form', 'type': u'form', 'view_id': 18}, 'values': {}})
   38             self.__initstack.append(1)
   39 
   40         res = func(self, *args, **kw)
   41         try:
   42             self.__initstack.pop()
res undefined, func = <function __init__>, self = Search, args = (), kw = {'context': {'_terp_view_name': u'S\xe9quences', 'active_id': 22, 'active_ids': [22], 'active_model': 'ir.ui.menu', 'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, 'domain': [], 'filter_domain': [], 'group_by_ctx': [], 'model': u'ir.sequence', 'search_view': {'arch': u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', 'field_parent': False, 'fields': {'active': {'selectable': True, 'string': u'Actif', 'type': 'boolean'}, 'code': {'required': True, 'selectable': True, 'selection': [(u'account.invoice.out_invoice', u'Account Invoice Out'), (u'account.invoice.in_invoice', u'Account Invoice In'), (u'account.invoice.out_refund', u'Account Refund Out'), (u'account.invoice.in_refund', u'Account Refund In'), (u'account.analytic.account', u'Analytic account'), (u'account.journal', u'Account Journal'), (u'account.reconcile', u'Account reconcile sequence'), (u'account.bank.statement', u'Bank Statement'), (u'saj', u'Sales Journal - (test)'), (u'scnj', u'Sales Credit Note Journal - (test)'), (u'exj', u'Expenses Journal - (test)'), (u'ecnj', u'Expenses Credit Notes Journal - (test)'), (u'bnk', u'Bank Journal - (test)'), (u'chk', u'Checks Journal - (test)')], 'size': 64, 'string': u'Code de la s\xe9quence', 'type': 'selection'}, 'company_id': {'context': {}, 'domain': [], 'relation': 'res.company', 'selectable': True, 'string': u'Soci\xe9t\xe9', 'type': 'many2one'}, 'fiscal_ids': {'context': {}, 'domain': [], 'relation': 'account.sequence.fiscalyear', 'selectable': True, 'string': u'S\xe9quences', 'type': 'one2many'}, 'name': {'required': True, 'selectable': True, 'size': 64, 'string': u'Nom de la s\xe9quence', 'type': 'char'}, 'number_increment': {'required': True, 'selectable': True, 'string': u'Incr\xe9menter le Num\xe9ro', 'type': 'integer'}, 'number_next': {'required': True, 'selectable': True, 'string': u'Num\xe9ro suivant', 'type': 'integer'}, 'padding': {'help': "OpenERP will automatically adds some '0' on the ...e 'Next Number' to get the required padding size.", 'required': True, 'selectable': True, 'string': u'Remplissage', 'type': 'integer'}, 'prefix': {'selectable': True, 'size': 64, 'string': u'Pr\xe9fixe', 'type': 'char'}, 'suffix': {'selectable': True, 'size': 64, 'string': u'Suffixe', 'type': 'char'}}, 'model': 'ir.sequence', 'name': u'ir.sequence.form', 'type': u'form', 'view_id': 18}, 'values': {}}
 /usr/local/lib/python2.6/dist-packages/openobject_web-5.2dev-py2.6.egg/addons/openerp/widgets/search.py in __init__(self=Search, model=u'ir.sequence', domain=[], context={'_terp_view_name': u'S\xe9quences', 'active_id': 22, 'active_ids': [22], 'active_model': 'ir.ui.menu', 'active_test': False, 'client': 'web', 'department_id': False, 'lang': u'fr_FR', 'tz': False}, values={}, filter_domain=[], search_view={'arch': u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', 'field_parent': False, 'fields': {'active': {'selectable': True, 'string': u'Actif', 'type': 'boolean'}, 'code': {'required': True, 'selectable': True, 'selection': [(u'account.invoice.out_invoice', u'Account Invoice Out'), (u'account.invoice.in_invoice', u'Account Invoice In'), (u'account.invoice.out_refund', u'Account Refund Out'), (u'account.invoice.in_refund', u'Account Refund In'), (u'account.analytic.account', u'Analytic account'), (u'account.journal', u'Account Journal'), (u'account.reconcile', u'Account reconcile sequence'), (u'account.bank.statement', u'Bank Statement'), (u'saj', u'Sales Journal - (test)'), (u'scnj', u'Sales Credit Note Journal - (test)'), (u'exj', u'Expenses Journal - (test)'), (u'ecnj', u'Expenses Credit Notes Journal - (test)'), (u'bnk', u'Bank Journal - (test)'), (u'chk', u'Checks Journal - (test)')], 'size': 64, 'string': u'Code de la s\xe9quence', 'type': 'selection'}, 'company_id': {'context': {}, 'domain': [], 'relation': 'res.company', 'selectable': True, 'string': u'Soci\xe9t\xe9', 'type': 'many2one'}, 'fiscal_ids': {'context': {}, 'domain': [], 'relation': 'account.sequence.fiscalyear', 'selectable': True, 'string': u'S\xe9quences', 'type': 'one2many'}, 'name': {'required': True, 'selectable': True, 'size': 64, 'string': u'Nom de la s\xe9quence', 'type': 'char'}, 'number_increment': {'required': True, 'selectable': True, 'string': u'Incr\xe9menter le Num\xe9ro', 'type': 'integer'}, 'number_next': {'required': True, 'selectable': True, 'string': u'Num\xe9ro suivant', 'type': 'integer'}, 'padding': {'help': "OpenERP will automatically adds some '0' on the ...e 'Next Number' to get the required padding size.", 'required': True, 'selectable': True, 'string': u'Remplissage', 'type': 'integer'}, 'prefix': {'selectable': True, 'size': 64, 'string': u'Pr\xe9fixe', 'type': 'char'}, 'suffix': {'selectable': True, 'size': 64, 'string': u'Suffixe', 'type': 'char'}}, 'model': 'ir.sequence', 'name': u'ir.sequence.form', 'type': u'form', 'view_id': 18}, group_by_ctx=[])
  272             self.fields_list.sort(lambda x, y: cmp(x[1], y[1]))
  273 
  274         dom = xml.dom.minidom.parseString(self.search_view['arch'])
  275         self.view_type = dom.firstChild.localName
  276         self.string = dom.documentElement.getAttribute('string')
dom undefined, global xml = <module 'xml' from '/usr/lib/python2.6/xml/__init__.pyc'>, xml.dom = <module 'xml.dom' from '/usr/lib/python2.6/xml/dom/__init__.pyc'>, xml.dom.minidom = <module 'xml.dom.minidom' from '/usr/lib/python2.6/xml/dom/minidom.pyc'>, xml.dom.minidom.parseString = <function parseString>, self = Search, self.search_view = {'arch': u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', 'field_parent': False, 'fields': {'active': {'selectable': True, 'string': u'Actif', 'type': 'boolean'}, 'code': {'required': True, 'selectable': True, 'selection': [(u'account.invoice.out_invoice', u'Account Invoice Out'), (u'account.invoice.in_invoice', u'Account Invoice In'), (u'account.invoice.out_refund', u'Account Refund Out'), (u'account.invoice.in_refund', u'Account Refund In'), (u'account.analytic.account', u'Analytic account'), (u'account.journal', u'Account Journal'), (u'account.reconcile', u'Account reconcile sequence'), (u'account.bank.statement', u'Bank Statement'), (u'saj', u'Sales Journal - (test)'), (u'scnj', u'Sales Credit Note Journal - (test)'), (u'exj', u'Expenses Journal - (test)'), (u'ecnj', u'Expenses Credit Notes Journal - (test)'), (u'bnk', u'Bank Journal - (test)'), (u'chk', u'Checks Journal - (test)')], 'size': 64, 'string': u'Code de la s\xe9quence', 'type': 'selection'}, 'company_id': {'context': {}, 'domain': [], 'relation': 'res.company', 'selectable': True, 'string': u'Soci\xe9t\xe9', 'type': 'many2one'}, 'fiscal_ids': {'context': {}, 'domain': [], 'relation': 'account.sequence.fiscalyear', 'selectable': True, 'string': u'S\xe9quences', 'type': 'one2many'}, 'name': {'required': True, 'selectable': True, 'size': 64, 'string': u'Nom de la s\xe9quence', 'type': 'char'}, 'number_increment': {'required': True, 'selectable': True, 'string': u'Incr\xe9menter le Num\xe9ro', 'type': 'integer'}, 'number_next': {'required': True, 'selectable': True, 'string': u'Num\xe9ro suivant', 'type': 'integer'}, 'padding': {'help': "OpenERP will automatically adds some '0' on the ...e 'Next Number' to get the required padding size.", 'required': True, 'selectable': True, 'string': u'Remplissage', 'type': 'integer'}, 'prefix': {'selectable': True, 'size': 64, 'string': u'Pr\xe9fixe', 'type': 'char'}, 'suffix': {'selectable': True, 'size': 64, 'string': u'Suffixe', 'type': 'char'}}, 'model': 'ir.sequence', 'name': u'ir.sequence.form', 'type': u'form', 'view_id': 18}
 /usr/lib/python2.6/xml/dom/minidom.py in parseString(string=u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', parser=None)
 1926     if parser is None:
 1927         from xml.dom import expatbuilder
 1928         return expatbuilder.parseString(string)
 1929     else:
 1930         from xml.dom import pulldom
expatbuilder = <module 'xml.dom.expatbuilder' from '/usr/lib/python2.6/xml/dom/expatbuilder.pyc'>, expatbuilder.parseString = <function parseString>, string = u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>'
 /usr/lib/python2.6/xml/dom/expatbuilder.py in parseString(string=u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', namespaces=True)
  938     else:
  939         builder = ExpatBuilder()
  940     return builder.parseString(string)
  941 
  942 
builder = <xml.dom.expatbuilder.ExpatBuilderNS instance>, builder.parseString = <bound method ExpatBuilderNS.parseString of <xml.dom.expatbuilder.ExpatBuilderNS instance>>, string = u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>'
 /usr/lib/python2.6/xml/dom/expatbuilder.py in parseString(self=<xml.dom.expatbuilder.ExpatBuilderNS instance>, string=u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>')
  221         parser = self.getParser()
  222         try:
  223             parser.Parse(string, True)
  224             self._setup_subset(string)
  225         except ParseEscape:
parser = <pyexpat.xmlparser object>, parser.Parse = <built-in method Parse of pyexpat.xmlparser object>, string = u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', builtin True = True

<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode character u'\xe9' in position 37: ordinal not in range(128)
      args = ('ascii', u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>', 37, 38, 'ordinal not in range(128)')
      encoding = 'ascii'
      end = 38
      message = ''
      object = u'<?xml version="1.0" ?><form string="S\xe9quences">\n...elect="1"/><field name="code" select="1"/></form>'
      reason = 'ordinal not in range(128)'
      start = 37