'image': _get_default_image,
'color': 0,
}
-
+
+ def copy_data(self, cr, uid, ids, default=None, context=None):
+ if default is None:
+ default = {}
+ default.update({'child_ids': False})
+ return super(hr_employee, self).copy_data(cr, uid, ids, default, context=context)
+
- def create(self, cr, uid, data, context=None):
- if context is None:
- context = {}
- create_ctx = dict(context, mail_create_nolog=True)
- employee_id = super(hr_employee, self).create(cr, uid, data, context=create_ctx)
+ def _broadcast_welcome(self, cr, uid, employee_id, context=None):
+ """ Broadcast the welcome message to all users in the employee company. """
employee = self.browse(cr, uid, employee_id, context=context)
+ partner_ids = []
+ _model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user')
if employee.user_id:
- res_users = self.pool['res.users']
- # send a copy to every user of the company
- # TODO: post to the `Whole Company` mail.group when we'll be able to link to the employee record
- _model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user')
- user_ids = res_users.search(cr, uid, [('company_id', '=', employee.user_id.company_id.id),
- ('groups_id', 'in', group_id)])
- partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, uid, user_ids, context=context)))
+ company_id = employee.user_id.company_id.id
+ elif employee.company_id:
+ company_id = employee.company_id.id
+ elif employee.job_id:
+ company_id = employee.job_id.company_id.id
+ elif employee.department_id:
+ company_id = employee.department_id.company_id.id
else:
- partner_ids = []
- self.message_post(cr, uid, [employee_id],
+ company_id = self.pool['res.company']._company_default_get(cr, uid, 'hr.employee', context=context)
+ res_users = self.pool['res.users']
+ user_ids = res_users.search(
+ cr, SUPERUSER_ID, [
+ ('company_id', '=', company_id),
+ ('groups_id', 'in', group_id)
+ ], context=context)
+ partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, SUPERUSER_ID, user_ids, context=context)))
+ self.message_post(
+ cr, uid, [employee_id],
body=_('Welcome to %s! Please help him/her take the first steps with OpenERP!') % (employee.name),
partner_ids=partner_ids,
subtype='mail.mt_comment', context=context
# /!\ can't use mail.state here, as mail.refresh() will cause an error
# see revid:odo@openerp.com-20120622152536-42b2s28lvdv3odyr in 6.1
- if mail_sent:
+ self._postprocess_sent_message(cr, uid, mail, context=context, mail_sent=mail_sent)
+ _logger.info('Mail with ID %r and Message-Id %r successfully sent', mail.id, mail.message_id)
- self._postprocess_sent_message(cr, uid, mail, context=context)
+ except MemoryError:
+ # prevent catching transient MemoryErrors, bubble up to notify user or abort cron job
+ # instead of marking the mail as failed
+ _logger.exception('MemoryError while processing mail with ID %r and Msg-Id %r. '\
+ 'Consider raising the --limit-memory-hard startup option',
+ mail.id, mail.message_id)
+ raise
except Exception as e:
_logger.exception('failed sending mail.mail %s', mail.id)
mail.write({'state': 'exception'})