Skip to Content
Menú
This question has been flagged
1 Respondre
9847 Vistes

We have write one method to send daily task notification email on my custom module, that we need to call via ir.cron . When cron run automatically it works fine but when I click on run manually button it gives strange error as "Comparing apples and oranges".here is the steps.
I write following methods for cron job.

Put this method in cron job and when cron run it works perfectly and send daily emails to the users.
But when I click on Run Manually button on ir.cron, it throws error.
Current behavior:
when I click on Run Manually button on ir.cron with above method, it throws following error.
Comparing apples and oranges: res.users(1,) == 1 (/home/browseinfo/workspace/v9/openerp/addons/base/ir/ir_model.py:783)2016-12-15 06:50:59,236 13934 INFO v9c_project_task_old_api openerp.sql_db: Programming error: can't adapt type 'res.users', in query SELECT MAX(CASE WHEN perm_read THEN 1 ELSE 0 END) FROM ir_model_access a JOIN ir_model m ON (m.id = a.model_id) JOIN res_groups_users_rel gu ON (gu.gid = a.group_id) WHERE m.model = %s AND gu.uid = %s AND a.active IS True2016-12-15 06:50:59,237 13934 ERROR v9c_project_task_old_api openerp.addons.base.ir.ir_cron: Call of self.pool.get('project.task').send_summery(cr, uid, *(False,)) failed in Job 6

@api.model    def send_summery(self):
user_ids = [] review_ids = [] user_id = self.env['res.users'] template_id = self.env['ir.model.data'].get_object_reference( 'v9c_custom_project', 'email_template_send_summery')[1] email_template_obj = self.env['mail.template'].browse(template_id) if template_id:
res_user_ids = user_id.browse(user_id.search([])) for record in res_user_ids:
email_to = '' table = '' search_task = self.search(['|', ('user_id', '=', record.id), ('reviewer_id', '=', record.id), ]) if search_task:
stage_id = self.env['project.task.type'].search([('name', '=', 'Done')]) if stage_id: search_task1 = search_task.search([('date_deadline', '<', time.strftime('%Y-%m-%d')), ('stage_id', '!=', stage_id[0].id)]) table = "<table border='1'><tr><td>Task Name</td><td>deadline Date</td>" for task in search_task1:
table += "<tr><td>" + str(task.name) +"</td><td>" + str(task.date_deadline) + "</td></tr>" table += "</tr></table>" email_to += str(record.login) if search_task:
values = email_template_obj.generate_email(self.id, fields=None) values['email_from'] = self.env['res.users'].sudo(1).browse(self._uid).partner_id.email values['email_to'] = email_to values['res_id'] = False values['body_html'] = table mail_mail_obj = self.env['mail.mail'] msg_id = mail_mail_obj.sudo(1).create(values) if msg_id:
mail_mail_obj.send([msg_id]) return True
Avatar
Descartar
Best Answer

Hi, I am late but may be this will help. The following part is wrong in your code:
   search_task = self.search(['|', ('user_id', '=', record.id), ('reviewer_id', '=', record.id), ])
There you need to compare the id not the object. Its clear in logs(Comparing apples and oranges: res.users(1,) == 1 (/home/browseinfo/workspace/v9/openerp/addons/base/ir/ir_model.py:783))  but may be you missed. Problem was solved if you use.
   search_task = self.search(['|', ('user_id.id', '=', record.id), ('reviewer_id', '=', record.id), ])

Avatar
Descartar
Related Posts Respostes Vistes Activitat
6
de maig 20
8335
3
d’abr. 17
5713
1
de set. 16
3512
0
de jul. 16
3647
7
de jul. 24
19664