2016-11-03 3 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) 

После выполнения метода он дает этому TraceBack

 

    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.model на @ api.one или @api .multi я получаю следующую ошибку

 

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

примечания: с @ api.one или @ api.multi аннотации это wokrs прекрасно, если я использовать кнопку мыши для вызова метода.

+0

DEF send_mails (сг, UID, контекст = None): домен = [[» 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.py в аддон email_template и после того, как застрял в некоторых ошибках, я наконец получил что-то работающее. Пыльник мое решение (со старым апи стиле, конечно)

 
    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) 

Я надеюсь, что это поможет кто-то другой

Смежные вопросы