Se rendre au contenu
Menu
Cette question a été signalée
5 Réponses
18226 Vues

this code worked perfect on Friday and today it just stopped working. Any reason?


@api.onchange('res_users_id')

def do_stuff(self):

if self.res_users_id != '':

self.beschreibung = 'Some text' + '\n' + self.beschreibung


Full error message:


Traceback (most recent call last):

File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 530, in _handle_exception

return super(JsonRequest, self)._handle_exception(exception)

File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 567, in dispatch

result = self._call_function(**self.params)

File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 303, in _call_function

return checked_call(self.db, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 113, in wrapper

return f(dbname, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 300, in checked_call

return self.endpoint(*a, **kw)

File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 796, in __call__

return self.method(*args, **kw)

File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 396, in response_wrap

response = f(*args, **kw)

File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 936, in call_kw

return self._call_kw(model, method, args, kwargs)

File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 928, in _call_kw

return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper

return old_api(self, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 363, in old_api

result = method(recs, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5846, in onchange

record._onchange_eval(name, field_onchange[name], result)

File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5727, in _onchange_eval

method_res = method(self)

File "/home/vagrant/addons/training/training.py", line 28, in do_stuff

self.beschreibung = 'Some text' + '\n' + self.beschreibung

TypeError: cannot concatenate 'str' and 'bool' objects

Avatar
Ignorer
Meilleure réponse




@api.onchange('res_users_id')
def do_stuff(self):
if self.res_users_id != '':
self.beschreibung = 'Some text' + '\n' + self.beschreibung and self.beschreibung or ""


OR

@api.onchange('res_users_id')
def do_stuff(self):
if self.res_users_id != '':
self.beschreibung = 'Some text' + '\n' + unicode(self.beschreibung)


Avatar
Ignorer
Auteur

Thank you Temur. This works great I am just curious why it stopped working in the first place also it now seems not to like the "\n" anymore: self.beschreibung = 'Some text' + '\n' + str(self.beschreibung) UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 25: ordinal not in range(128) I will keep working on it..

You're right, str() will give ascii codec error if it gets unicode string. here unicode() is more appropriate, I'll update my answer with it. Thanks

Auteur Meilleure réponse

Solved: added unicode instead of str self.beschreibung = 'Some text' + '\n' + unicode(self.beschreibung)

Avatar
Ignorer
Publications associées Réponses Vues Activité
1
oct. 23
2114
2
oct. 23
2362
2
août 23
4405
4
août 23
20756
3
oct. 22
11175