Перейти к содержимому
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
2 Ответы
6433 Представления

I've overridden the create method for my custom module to create only records that have certain data in vals dict. I did this because the model is being filled by a service over xml-rpc calls, so I don't want to create a record if a user does not exist in odoo.

So I first check if the key is even in vals dict and if it is I check if it's in Odoo else I return False (tried None same error). The error is caused by the models.py original create method because of the decorator @api.returns('self', lambda value: value.id). So every time that I want to return false I get an AttributeError: 'bool' object has no attribute 'id' in my log.

Is there a way to return False/None without raising an AttributeError? I can't make this check in the script that's executed by the service, because every xml-rpc call/response takes ~ 1s and I need to do 3-5 and this would take to long. 


@api.model
def create(self, vals):
if 'from_number' not in vals or 'to_number' not in vals:
_logger.error(u'TABLA: from or to number not in vals! Exiting! vals: {}'.format(vals))
return False

if vals['from_number'] != '':
caller_partner_id = self.get_partner_by_number(vals['from_number'])
if caller_partner_id:
vals['caller_partner_id'] = caller_partner_id
else:
_logger.error(u'TABLA: from number not in vals! Exiting! vals: {}'.format(vals))
return False

# some more checks, same style

call = super(TablaAsteriskCalls, self).create(vals)

# some more code if the record is created

return call


   

Аватар
Отменить
Автор Лучший ответ

It's just a simple fix... just had to override the lamdba in the decorator.

@api.returns('self', lambda value: value.id if value else False)
Аватар
Отменить
Лучший ответ

Hello,

Instead of returning False/None just return empty record, as following :

return self.browse()
Аватар
Отменить
Автор

yep... you answer works to.

Related Posts Ответы Просмотры Активность
1
нояб. 17
3683
1
мая 19
5426
1
мар. 18
11224
3
мая 17
11079
1
дек. 19
3690