[MERGE] forward port of branch 7.0 up to revid 10037 mat@openerp.com-20140507133552...
authorChristophe Simonis <chs@openerp.com>
Wed, 7 May 2014 15:33:48 +0000 (17:33 +0200)
committerChristophe Simonis <chs@openerp.com>
Wed, 7 May 2014 15:33:48 +0000 (17:33 +0200)
bzr revid: chs@openerp.com-20140507153348-g2qw61dkxvps13br

1  2 
addons/account/account_move_line.py
addons/hr/hr.py
addons/hr_timesheet_sheet/hr_timesheet_sheet.py
addons/mail/mail_thread.py
addons/mail/res_config.py
addons/stock/stock.py
addons/warning/warning.py

Simple merge
diff --cc addons/hr/hr.py
@@@ -217,37 -210,24 +217,43 @@@ class hr_employee(osv.osv)
          'last_login': fields.related('user_id', 'date', type='datetime', string='Latest Connection', readonly=1),
      }
  
 -    _order='name_related'
 +    def _get_default_image(self, cr, uid, context=None):
 +        image_path = get_module_resource('hr', 'static/src/img', 'default_image.png')
 +        return tools.image_resize_image_big(open(image_path, 'rb').read().encode('base64'))
 +
 +    defaults = {
 +        'active': 1,
 +        '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):
 -        employee_id = super(hr_employee, self).create(cr, uid, data, context=context)
 -        try:
 -            (model, mail_group_id) = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'mail', 'group_all_employees')
 -            employee = self.browse(cr, uid, employee_id, context=context)
 -            self.pool.get('mail.group').message_post(cr, uid, [mail_group_id],
 -                body=_('Welcome to %s! Please help him/her take the first steps with OpenERP!') % (employee.name),
 -                subtype='mail.mt_comment', context=context)
 -        except:
 -            pass # group deleted: do not push a message
 +        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)
 +        employee = self.browse(cr, uid, employee_id, context=context)
 +        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)))
 +        else:
 +            partner_ids = []
 +        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
 +        )
          return employee_id
  
      def unlink(self, cr, uid, ids, context=None):
          (_check_recursion, 'Error! You cannot create recursive hierarchy of Employee(s).', ['parent_id']),
      ]
  
 -hr_employee()
  
  class hr_department(osv.osv):
 -    _description = "Department"
 -    _inherit = 'hr.department'
 +
 +    def _dept_name_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
 +        res = self.name_get(cr, uid, ids, context=context)
 +        return dict(res)
 +
 +    _name = "hr.department"
      _columns = {
 +        'name': fields.char('Department Name', size=64, required=True),
 +        'complete_name': fields.function(_dept_name_get_fnc, type="char", string='Name'),
 +        'company_id': fields.many2one('res.company', 'Company', select=True, required=False),
 +        'parent_id': fields.many2one('hr.department', 'Parent Department', select=True),
 +        'child_ids': fields.one2many('hr.department', 'parent_id', 'Child Departments'),
          'manager_id': fields.many2one('hr.employee', 'Manager'),
          'member_ids': fields.one2many('hr.employee', 'department_id', 'Members', readonly=True),
 +        'jobs_ids': fields.one2many('hr.job', 'department_id', 'Jobs'),
 +        'note': fields.text('Note'),
      }
  
 +    _defaults = {
 +        'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'hr.department', context=c),
 +    }
 +
 +    def _check_recursion(self, cr, uid, ids, context=None):
 +        if context is None:
 +            context = {}
 +        level = 100
 +        while len(ids):
 +            cr.execute('select distinct parent_id from hr_department where id IN %s',(tuple(ids),))
 +            ids = filter(None, map(lambda x:x[0], cr.fetchall()))
 +            if not level:
 +                return False
 +            level -= 1
 +        return True
 +
 +    _constraints = [
 +        (_check_recursion, 'Error! You cannot create recursive departments.', ['parent_id'])
 +    ]
 +
 +    def name_get(self, cr, uid, ids, context=None):
 +        if context is None:
 +            context = {}
 +        if not ids:
 +            return []
 +        reads = self.read(cr, uid, ids, ['name','parent_id'], context=context)
 +        res = []
 +        for record in reads:
 +            name = record['name']
 +            if record['parent_id']:
 +                name = record['parent_id'][1]+' / '+name
 +            res.append((record['id'], name))
 +        return res
 +
-     def copy(self, cr, uid, ids, default=None, context=None):
+     def copy_data(self, cr, uid, ids, default=None, context=None):
          if default is None:
              default = {}
-         default = default.copy()
          default['member_ids'] = []
-         return super(hr_department, self).copy(cr, uid, ids, default, context=context)
+         return super(hr_department, self).copy_data(cr, uid, ids, default, context=context)
  
 +
  class res_users(osv.osv):
      _name = 'res.users'
      _inherit = 'res.users'
  
+     def copy_data(self, cr, uid, ids, default=None, context=None):
+         if default is None:
+             default = {}
+         default.update({'employee_ids': False})
+         return super(res_users, self).copy_data(cr, uid, ids, default, context=context)
+     
 -    def create(self, cr, uid, data, context=None):
 -        user_id = super(res_users, self).create(cr, uid, data, context=context)
 -
 -        # add shortcut unless 'noshortcut' is True in context
 -        if not(context and context.get('noshortcut', False)):
 -            data_obj = self.pool.get('ir.model.data')
 -            try:
 -                data_id = data_obj._get_id(cr, uid, 'hr', 'ir_ui_view_sc_employee')
 -                view_id  = data_obj.browse(cr, uid, data_id, context=context).res_id
 -                self.pool.get('ir.ui.view_sc').copy(cr, uid, view_id, default = {
 -                                            'user_id': user_id}, context=context)
 -            except:
 -                # Tolerate a missing shortcut. See product/product.py for similar code.
 -                _logger.debug('Skipped meetings shortcut for user "%s".', data.get('name','<new'))
 -
 -        return user_id
 -
      _columns = {
          'employee_ids': fields.one2many('hr.employee', 'user_id', 'Related employees'),
 -        }
 -
 -res_users()
 +    }
  
  
  # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
Simple merge
Simple merge
Simple merge
Simple merge