2016-11-03 25 views
1

我正在開發一個odoo項目,我需要每天早上10點自動發送電子郵件。我已經創建了預定的操作,但是我遇到了問題。這是我用它來進行發送動作使用預定動作發送電子郵件

@api.model 
def send_mails(self): 
    domain = [['name', 'like', 'Production Report']] 
    template = self.env['email.template'].search(domain)[0] 
    template.send_mail(self.id, True) 

它給這個回溯

 

    2016-11-03 17:35:15,158 4912 ERROR sintramdb openerp.addons.base.ir.ir_cron: Call of self.pool.get('production.ouvrages').send_mails(cr, uid, *()) failed in Job 9 
    Traceback (most recent call last): 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\base\ir\ir_cron.py", line 138, in _callback 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 268, in wrapper 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 372, in old_api 
     File "C:\Users\3D SKILLS\AppData\Local\OpenERP S.A.\Odoo\addons\8.0\production\models.py", line 347, in send_mails 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 266, in wrapper 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 549, in new_api 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\email_template\email_template.py", line 558, in send_mail 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 268, in wrapper 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\email_template\email_template.py", line 595, in generate_email 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 268, in wrapper 
     File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\email_template\email_template.py", line 484, in generate_email_batch 
    AttributeError: 'bool' object has no attribute 'lang' 

如果我通過@ api.one或@api更換@ api.model方法執行後的方法。多我得到以下錯誤

 

    TypeError: old_api() takes at least 4 arguments (3 given) 

注意:使用@ api.one或@ api.multi註解它完美wokrs如果我使用一個按鈕來調用該方法。

+0

高清send_mails(CR,UID,背景=無): 域= [」 name','like','Production Report']] template = self.pool.get('email.template')。search(domain)[0] template.send_mail(cr,uid,[self.id] ,True,context = None) –

+1

嘗試使用舊的api。這可能是最快的解決方案。雖然煩人。 –

+0

如果您查看文件email_template.py,但是它會查找它認爲是上述錯誤中的布爾值的模板的lang屬性。我會認爲是假的。有可能模板沒有被傳遞給方法。 –

回答

0

試試這個

@api.v8 
@api.model 
def send_mails(self): 
    domain = [['name', 'like', 'Production Report']] 
    template = self.env['email.template'].search(domain)[0] 
    template.send_mail(self.id, True) 

如果不行嘗試此解決方案。

@api.model  
def send_mails(self): 
    domain = [['name', 'like', 'Production Report']] 
    template = self.env['email.template'].search(domain)[0] 
    template.send_mail(self._cr,self._uid,self.id, True) 
0

首先感謝你們的快速回復!

當我嘗試修復後,我仍然無法解決問題。所以我決定深入研究email_template插件中的email_template.py文件,在遇到一些錯誤後,我終於找到了一些工作。貝婁是我的解決方案(當然,舊的API風格)

 
    def send_mails(self, cr, uid, *args, **kwargs): 
     domain = [['name', 'like', 'Production Report']] 
     template_id = self.pool.get('email.template').search(cr, uid,domain,offset=0, limit=None, order=None, context=None, count=False)[0] 
     template_obj = self.pool.get('email.template').browse(cr, uid, template_id) 
     template_obj.send_mail(3, True, None) 

我希望這會幫助別人