1# -*- coding: utf-8 -*- 2# Part of Odoo. See LICENSE file for full copyright and licensing details. 3 4from odoo import api, fields, models, tools 5 6 7class HrEmployeePublic(models.Model): 8 _name = "hr.employee.public" 9 _inherit = ["hr.employee.base"] 10 _description = 'Public Employee' 11 _order = 'name' 12 _auto = False 13 _log_access = True # Include magic fields 14 15 # Fields coming from hr.employee.base 16 create_date = fields.Datetime(readonly=True) 17 name = fields.Char(readonly=True) 18 active = fields.Boolean(readonly=True) 19 department_id = fields.Many2one(readonly=True) 20 job_id = fields.Many2one(readonly=True) 21 job_title = fields.Char(readonly=True) 22 company_id = fields.Many2one(readonly=True) 23 address_id = fields.Many2one(readonly=True) 24 mobile_phone = fields.Char(readonly=True) 25 work_phone = fields.Char(readonly=True) 26 work_email = fields.Char(readonly=True) 27 work_location = fields.Char(readonly=True) 28 user_id = fields.Many2one(readonly=True) 29 resource_id = fields.Many2one(readonly=True) 30 resource_calendar_id = fields.Many2one(readonly=True) 31 tz = fields.Selection(readonly=True) 32 color = fields.Integer(readonly=True) 33 34 # hr.employee.public specific fields 35 child_ids = fields.One2many('hr.employee.public', 'parent_id', string='Direct subordinates', readonly=True) 36 image_1920 = fields.Image("Original Image", compute='_compute_image', compute_sudo=True) 37 image_1024 = fields.Image("Image 1024", compute='_compute_image', compute_sudo=True) 38 image_512 = fields.Image("Image 512", compute='_compute_image', compute_sudo=True) 39 image_256 = fields.Image("Image 256", compute='_compute_image', compute_sudo=True) 40 image_128 = fields.Image("Image 128", compute='_compute_image', compute_sudo=True) 41 parent_id = fields.Many2one('hr.employee.public', 'Manager', readonly=True) 42 coach_id = fields.Many2one('hr.employee.public', 'Coach', readonly=True) 43 user_partner_id = fields.Many2one(related='user_id.partner_id', related_sudo=False, string="User's partner") 44 45 def _compute_image(self): 46 for employee in self: 47 # We have to be in sudo to have access to the images 48 employee_id = self.sudo().env['hr.employee'].browse(employee.id) 49 employee.image_1920 = employee_id.image_1920 50 employee.image_1024 = employee_id.image_1024 51 employee.image_512 = employee_id.image_512 52 employee.image_256 = employee_id.image_256 53 employee.image_128 = employee_id.image_128 54 55 @api.model 56 def _get_fields(self): 57 return ','.join('emp.%s' % name for name, field in self._fields.items() if field.store and field.type not in ['many2many', 'one2many']) 58 59 def init(self): 60 tools.drop_view_if_exists(self.env.cr, self._table) 61 self.env.cr.execute("""CREATE or REPLACE VIEW %s as ( 62 SELECT 63 %s 64 FROM hr_employee emp 65 )""" % (self._table, self._get_fields())) 66