'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: