콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
1 회신
7247 화면

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?

아바타
취소
작성자

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.

베스트 답변

@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

관련 게시물 답글 화면 활동
1
6월 16
3264
2
11월 22
9581
3
11월 15
7276
1
8월 25
367
2
7월 25
2811