Skip to Content
Menu
This question has been flagged
5 Replies
17175 Views

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
Discard
Best Answer




@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
Discard
Author

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

Author Best Answer

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

Avatar
Discard
Related Posts Replies Views Activity
1
Oct 23
364
2
Oct 23
678
2
Aug 23
1965
4
Aug 23
18249
3
Oct 22
8908