添加功能
This commit is contained in:
@@ -22,7 +22,6 @@ class Room(models.Model):
|
||||
name = fields.Char(string="会议室", required=True, tracking=2)
|
||||
description = fields.Html(string="Amenities", translate=html_translate, sanitize=False)
|
||||
office_id = fields.Many2one("room.office", string="Office", tracking=3)
|
||||
company_id = fields.Many2one(related="office_id.company_id", string="Company", store=True)
|
||||
room_booking_ids = fields.One2many("room.booking", "room_id", string="Bookings")
|
||||
short_code = fields.Char("Short Code", default=lambda self: str(uuid4())[:8], copy=False, required=True, tracking=1)
|
||||
# Technical/Statistics
|
||||
@@ -42,7 +41,7 @@ class Room(models.Model):
|
||||
meet_equipment = fields.Char(string="会议室设备")
|
||||
|
||||
office_address = fields.Char(string="会议室地址", required=True)
|
||||
department_id = fields.Many2one("hr.department", string="公司", required=True)
|
||||
company_id = fields.Many2one("hr.department", string="公司", required=True)
|
||||
meeting_type_template = fields.Selection([('template1', '默认模板')], string='会议室模板')
|
||||
meet_document_id = fields.Many2one('documents.document', string="布局图片")
|
||||
meet_capacity = fields.Integer(string="容纳人数", required=True)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<filter name="meet_capacity" string="二十人以上" domain="[('meet_capacity', '>', 20)]"/>
|
||||
<filter name="meet_capacity" string="二十人以下" domain="[('meet_capacity', '<', 20)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="公司" name="group_department_id" context="{'group_by': 'department_id'}"/>
|
||||
<filter string="公司" name="group_company_id" context="{'group_by': 'company_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -55,7 +55,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span><field name="department_id"/></span>
|
||||
<span><field name="company_id"/></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -72,7 +72,7 @@
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="office_address"/>
|
||||
<field name="department_id" widget="ztree_select"/>
|
||||
<field name="company_id" widget="ztree_select"/>
|
||||
<field name="is_available" string="Is Currently Available"/>
|
||||
<field name="next_booking_start"/>
|
||||
</tree>
|
||||
@@ -119,7 +119,7 @@
|
||||
<field name="meeting_type_template"/>
|
||||
<field name="meet_document_id"/>
|
||||
<field name="office_address"/>
|
||||
<field name="department_id" widget="ztree_select"/>
|
||||
<field name="company_id" widget="ztree_select"/>
|
||||
<field name="short_code" invisible="1"/>
|
||||
</group>
|
||||
<!-- <group>-->
|
||||
@@ -169,7 +169,7 @@
|
||||
<field name="name">会议室</field>
|
||||
<field name="res_model">room.room</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="context">{'search_default_group_department_id': True,}</field>
|
||||
<field name="context">{'search_default_group_company_id': True,}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create Rooms
|
||||
|
||||
@@ -19,15 +19,23 @@ class ResGroups(models.Model):
|
||||
self.write({'users': [(3, user.id) for user in users_to_unlink2]})
|
||||
self.write({'users_ids': [(5, 0, 0)]})
|
||||
self.write({'employee_ids': [(5, 0, 0)]})
|
||||
self.write({'department_ids': [(5, 0, 0)]})
|
||||
self.write({'user_role_ids': [(5, 0, 0)]})
|
||||
self.write({'users_role_group_ids': [(5, 0, 0)]})
|
||||
|
||||
def rule_unlink(self):
|
||||
self.rule_groups.unlink()
|
||||
self.model_access.unlink()
|
||||
|
||||
def users_add(self):
|
||||
for user in self.employee_ids:
|
||||
if user.user_id:
|
||||
self.write({'users': [(4, user.user_id.id)]})
|
||||
@api.onchange('employee_ids', 'department_ids', 'user_role_ids', 'users_role_group_ids')
|
||||
def _onchange_update_users(self):
|
||||
"""动态更新 users 字段,基于员工、部门和角色的选择"""
|
||||
all_user_ids = set()
|
||||
# 1. 添加选中员工对应的用户
|
||||
for employee in self.employee_ids:
|
||||
if employee.user_id:
|
||||
all_user_ids.add(employee.user_id.id)
|
||||
# 2. 添加选中部门及其子部门的所有员工对应的用户
|
||||
def get_department_employees(department_id):
|
||||
valid_user_ids = set()
|
||||
employee_ids = self.env['hr.employee'].search([('department_id', '=', department_id.id)])
|
||||
@@ -37,16 +45,22 @@ class ResGroups(models.Model):
|
||||
valid_user_ids.update(get_department_employees(child))
|
||||
return valid_user_ids
|
||||
for department_id in self.department_ids:
|
||||
valid_user_ids = get_department_employees(department_id)
|
||||
if valid_user_ids:
|
||||
self.write({'users': [(4, user_id) for user_id in valid_user_ids]})
|
||||
all_user_ids.update(get_department_employees(department_id))
|
||||
# 3. 添加选中角色对应的用户
|
||||
for user_role in self.user_role_ids:
|
||||
user_employee_ids = self.env['hr.employee'].search(['|', ('user_role_id', '=', user_role.id), ('user_role_ids', 'in', [user_role.id])])
|
||||
self.write({'users': [(4, user.user_id.id) for user in user_employee_ids]})
|
||||
|
||||
user_employee_ids = self.env['hr.employee'].search(
|
||||
['|', ('user_role_id', '=', user_role.id.origin), ('user_role_ids', 'in', [user_role.id.origin])]
|
||||
)
|
||||
all_user_ids.update([user.user_id.id for user in user_employee_ids if user.user_id])
|
||||
# 4. 添加角色组对应的用户
|
||||
for record in self:
|
||||
group_role_ids = record.users_role_group_ids.user_role_ids
|
||||
for user_role in group_role_ids:
|
||||
user_employee_ids = self.env['hr.employee'].search(['|', ('user_role_id', '=', user_role.id), ('user_role_ids', 'in', [user_role.id])])
|
||||
self.write({'users': [(4, user.user_id.id) for user in user_employee_ids]})
|
||||
user_employee_ids = self.env['hr.employee'].search(
|
||||
['|', ('user_role_id', '=', user_role.id.origin), ('user_role_ids', 'in', [user_role.id.origin])]
|
||||
)
|
||||
all_user_ids.update([user.user_id.id for user in user_employee_ids if user.user_id])
|
||||
|
||||
# 更新 users 字段(使用 replace 操作)
|
||||
self.users = [(6, 0, list(all_user_ids))]
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
</xpath>
|
||||
<xpath expr="//group" position="before">
|
||||
<header>
|
||||
<button class="oe_highlight" name="users_add" string="更新用户" type="object"/>
|
||||
<button class="oe_highlight" name="users_unlink" string="清除用户" type="object"/>
|
||||
<button class="oe_highlight" name="rule_unlink" string="清除规则权限" type="object"/>
|
||||
</header>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='work_email']" position="after">
|
||||
<field name="user_state"/>
|
||||
<field name="user_state" readonly="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="attributes">
|
||||
<attribute name="widget">ztree_select</attribute>
|
||||
@@ -101,7 +101,13 @@
|
||||
<xpath expr="//field[@name='job_id']" position="after">
|
||||
<field name="number"/>
|
||||
<field name="user_number"/>
|
||||
<field name="use_user_type"/>
|
||||
<field name="use_user_type" readonly="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='job_id']" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='identification_id']" position="after">
|
||||
<field name="is_identification" invisible="1"/>
|
||||
|
||||
Reference in New Issue
Block a user