[MERGE] forward port of branch saas-3 up to revid 9450 chs@openerp.com-20140507153348...
authorChristophe Simonis <chs@openerp.com>
Wed, 7 May 2014 16:00:23 +0000 (18:00 +0200)
committerChristophe Simonis <chs@openerp.com>
Wed, 7 May 2014 16:00:23 +0000 (18:00 +0200)
bzr revid: chs@openerp.com-20140507160023-8wwqlbf3bv7yqe67

1  2 
addons/crm/crm_lead_data.xml
addons/hr/hr.py
addons/hr_timesheet_sheet/hr_timesheet_sheet.py
addons/mail/mail_mail.py
addons/mail/mail_thread.py
addons/point_of_sale/point_of_sale.py

Simple merge
diff --cc addons/hr/hr.py
@@@ -248,31 -226,30 +248,37 @@@ class hr_employee(osv.osv)
          '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
@@@ -288,7 -298,16 +292,15 @@@ class mail_mail(osv.Model)
  
                  # /!\ 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'})
Simple merge
Simple merge