Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
1 Balas
7244 Tampilan

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?

Avatar
Buang
Penulis

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.

Jawaban Terbai

@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.

Avatar
Buang

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

Post Terkait Replies Tampilan Aktivitas
1
Jun 16
3264
2
Nov 22
9581
3
Nov 15
7276
1
Agu 25
362
2
Jul 25
2809