44 lines
2.3 KiB
Python
44 lines
2.3 KiB
Python
from odoo import api, fields, models, tools
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class RoomSelectRangeWizard(models.Model):
|
|
_name = 'room.select.range.wizard'
|
|
_description = '选择范围弹窗'
|
|
|
|
department_ids = fields.Many2many('hr.department', string='部门范围')
|
|
employee_ids = fields.Many2many('hr.employee', string='人员范围')
|
|
users_role_ids = fields.Many2many('soong.user.role', string='角色范围')
|
|
room_booking_id = fields.Many2one('room.booking')
|
|
room_users_ids = fields.Many2many('res.users', string="会议参加人员", compute="compute_room_users_ids", store=True)
|
|
|
|
@api.depends('department_ids', 'employee_ids', 'users_role_ids')
|
|
def compute_room_users_ids(self):
|
|
department_users_list = users_role_list = []
|
|
for users in self:
|
|
if users.department_ids:
|
|
# 查看是否下级部门
|
|
for depart in users.department_ids:
|
|
department_users_data = users.env['hr.employee'].search([('department_id', '=', depart.id)])
|
|
department_users_list = [de.user_id.id for de in department_users_data]
|
|
if depart.child_ids:
|
|
for child in depart.child_ids:
|
|
department_child_users_data = users.env['hr.employee'].search(
|
|
[('department_id', '=', child.id)])
|
|
department_users_list += [de.user_id.id for de in department_child_users_data]
|
|
employee_users_list = users.employee_ids.user_id.ids
|
|
if users.users_role_ids:
|
|
for user_id in users.users_role_ids:
|
|
user_role_data = users.env['hr.employee'].search(
|
|
['|', ('user_role_id', '=', user_id.id), ('user_role_ids', '=', user_id.id)])
|
|
users_role_list = [ro.user_id.id for ro in user_role_data]
|
|
publish_user_list = department_users_list + employee_users_list + users_role_list
|
|
false_none_list = [x for x in publish_user_list if x != False]
|
|
users.room_users_ids = [(6, 0, list(set(false_none_list)))]
|
|
|
|
def action_select_values(self):
|
|
self.ensure_one()
|
|
self.room_booking_id.write({
|
|
'room_users_ids': [(6, 0, self.room_users_ids.ids)],
|
|
})
|