Odoo Help
Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM
|
e-Commerce
|
Accounting
|
Inventory
|
PoS
|
Project management
|
MRP
|
etc.
Problems with new api function inheritance
I am trying to inherit email.template function with the signature:
def generate_email_batch(self, cr, uid, template_id, res_ids, context=None, fields=None):
But when my custom function calls super fails, i think this is because the function not have ids and "fields" are after the context
my module code:
from openerp import models, fields, api
class EmailTemplate(models.Model):
_inherit = 'email.template'
@api.multi
def generate_email_batch(self, res_ids, fields=None):
res = super(EmailTemplate,self).generate_email_batch(res_ids, fields)
if i change the signature of original function to:
def generate_email_batch(self, cr, uid, ids, res_ids=None, fields=None, context=None):
i have no problem to inherit in new api.
I'm doing something wrong or the new api can't inherit functions with the ids field with another name and field after context?
@api.multi implies that there will be ids in the arguments passed if the original method is defined in old API signature. If template_id is the single id of model that owns generate_email_batch, use @api.one decorator. If it will be passed as argument, use @api.model decorator.
This slide provide a good overview of the decorators compared to the old API: http://www.slideshare.net/openobject/odoo-from-v7-to-v8-the-new-api
About This Community
This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.
RegisterOdoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.
Test it nowQuestion tools
Stats
Asked: 1/27/15, 5:10 AM |
Seen: 3221 times |
Last updated: 3/16/15, 8:10 AM |
Thanks you Ivan, but the problem with the context persist, i do not know if the problem is because the argument fields is after context or is another problem with my code. File "/opt/openerp/buildout_projects/parts/odoo/openerp/api.py", line 462, in new_api result = method(self._model, cr, uid, *args, **kwargs) TypeError: generate_email_batch() got multiple values for keyword argument 'context' @api.model def generate_email_batch(self, template_id, res_ids, fields=None): res = super(EmailTemplate,self).generate_email_batch(template_id, res_ids, fields)
change it to super(EmailTemplate,self).generate_email_batch(template_id, res_ids, fields=fields). If fields is specified without name it will fill into the place of context, which is the next argument. Since @api.model also adds context=context, it complains about multiple values for keyword argument 'context'. - I think.