diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py index 99d56edac..d6f7be7d3 100644 --- a/soong_workflow/__manifest__.py +++ b/soong_workflow/__manifest__.py @@ -10,7 +10,6 @@ "data/soong_workflow_note_data.xml", "data/soong_workflow_inspector_code.xml", "data/soong_workflow_time.xml", - "data/soong_user_role_data.xml", "data/notice_template_data.xml", "security/soong_workflow_security.xml", "security/ir.model.access.csv", diff --git a/soong_workflow/data/soong_user_role_data.xml b/soong_workflow/data/soong_user_role_data.xml deleted file mode 100644 index 98aa62061..000000000 --- a/soong_workflow/data/soong_user_role_data.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - 工作流管理员 - - - 天河投资工作流管理员 - - - 天河物管工作流管理员 - - - 天河粮储工作流管理员 - - diff --git a/soong_workflow/models/ir_model.py b/soong_workflow/models/ir_model.py index 255a53e01..c7de0753a 100644 --- a/soong_workflow/models/ir_model.py +++ b/soong_workflow/models/ir_model.py @@ -15,8 +15,5 @@ class IrModel(models.Model): def _reflect_model_params(self, model): vals = super(IrModel, self)._reflect_model_params(model) - vals["is_workflow"] = ( - issubclass(type(model), self.pool["soong.workflow.mixin"]) - and model._name != "soong.workflow.mixin" - ) + vals["is_workflow"] = (issubclass(type(model), self.pool["soong.workflow.mixin"]) and model._name != "soong.workflow.mixin") return vals diff --git a/soong_workflow/models/soong_approval_users.py b/soong_workflow/models/soong_approval_users.py index fb518fc4b..3f6a88bb7 100644 --- a/soong_workflow/models/soong_approval_users.py +++ b/soong_workflow/models/soong_approval_users.py @@ -22,7 +22,7 @@ class SoongApprovalUsers(models.Model): res_model = fields.Char('Workflow Ref Model', index=True, related='res_model_id.model', precompute=True, store=True, readonly=True) res_id = fields.Many2oneReference(string='Workflow Ref.', index=True, model_field='res_model') approval_user_id = fields.Many2one('res.users', string='审批人') - approval_user = fields.Many2one('soong.user.role', string='审批角色', domain=[('user_type', '!=', 'lv_role')]) + approval_user = fields.Many2one('soong.user.role', string='审批角色',) approval_user_datetime = fields.Datetime(string='审批时间') approval_user_notice = fields.Char(string='审批意见') approval_user_state = fields.Selection([('will', '待审批')], string='状态') diff --git a/soong_workflow/models/soong_hr_employee.py b/soong_workflow/models/soong_hr_employee.py index 2dc606fc9..e7c77a5e3 100644 --- a/soong_workflow/models/soong_hr_employee.py +++ b/soong_workflow/models/soong_hr_employee.py @@ -3,13 +3,10 @@ from odoo import api, fields, models class YuthonHrEmployee(models.Model): - """ - 对原模型数据的隐藏,字段的开发和添加 - """ _inherit = "hr.employee" - user_role_id = fields.Many2one('soong.user.role', string="主角色", store=True, domain=[('user_type', '!=', 'lv_role')]) - user_role_ids = fields.Many2many('soong.user.role', string="辅助角色", store=True, index=True, domain=[('user_type', '!=', 'lv_role'), ('name', '!=', 'user_role_id.name')]) + user_role_id = fields.Many2one('soong.user.role', string="主角色", store=True,) + user_role_ids = fields.Many2many('soong.user.role', string="辅助角色", store=True, index=True) department_ids = fields.Many2many('hr.department', string="辅助部门", store=True) @api.onchange('user_role_id') diff --git a/soong_workflow/models/soong_user_role.py b/soong_workflow/models/soong_user_role.py index 39f6e99bc..aba9df3a9 100644 --- a/soong_workflow/models/soong_user_role.py +++ b/soong_workflow/models/soong_user_role.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from odoo import api, fields, models, _ -from pypinyin import pinyin,lazy_pinyin +from pypinyin import pinyin, lazy_pinyin from odoo.osv import expression @@ -9,22 +9,18 @@ class YuthonUserRole(models.Model): _order = 'number asc' name = fields.Char(string="角色名称") - number = fields.Char(string="序号", store=True) - user_type = fields.Selection([("system_global_user", "系统全局角色"), - ("departmental_role", "部门私有角色"), - ("lv_role", "部门层级角色")], string="角色类型") - department_id = fields.Many2one('hr.department', string="所属机构部门") + number = fields.Char(string="序号") + department_id = fields.Many2one('hr.department', string="所属部门") create_time = fields.Date(string="生效日期", default=fields.Datetime.today()) end_time = fields.Date(string="终止日期") - parent_id = fields.Many2one('soong.user.role', string='上级角色', index=True) + parent_id = fields.Many2one('soong.user.role', string='上级角色') user_role_group_ids = fields.Many2many('soong.user.role.group', string='角色分组', index=True) - personnel_ids = fields.Many2many('hr.employee', string='在岗人员', store=True) - number_people = fields.Integer(string="在岗人数", compute='_compute_employee_ids', store=True) - personnel = fields.Text(string="在岗人员", store=True) + personnel_ids = fields.Many2many('hr.employee', string='在岗人员') + number_people = fields.Integer(string="在岗人数", compute='_compute_employee_ids') + personnel = fields.Text(string="在岗人员") employee_ids = fields.One2many('hr.employee', 'user_role_id') - child_ids = fields.One2many('soong.user.role', 'parent_id', string='下级角色', index=True) - company_id = fields.Many2one('res.company', string="所属公司", index=True, default=lambda self: self.env.company) - pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True, store=True) + company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company) + pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True) @api.depends('department_id') def _compute_display_name(self): @@ -66,32 +62,6 @@ class YuthonUserRole(models.Model): rec.number_people = len(rec.personnel_ids) - - def f5_new(self): - job_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id'))) - for job in job_ids: - department_id = self.env['hr.department'].search([('name', '=', job.department_id.name)]) - if department_id: - job.sudo().write({'department_id': department_id.id if len(department_id) == 1 else department_id[0].id}) - - def f6_new(self): - role_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id'))) - for role in role_ids: - company_id = role.department_id.company_id - role.sudo().write({'company_id': company_id.id if company_id else False}) - - def sync_new(self): - job_ids = self.env["soong.user.role"].browse(self._context.get('active_ids', self._context.get('active_id'))) - for job in job_ids: - employee_ids = self.env['hr.employee'].search([('id', 'in', job.personnel_ids.ids)]) - for employee_id in employee_ids: - if employee_id.user_role_ids: - current_role_ids = employee_id.user_role_ids.ids - missing_role_ids = [child.id for child in job.child_ids if child.id not in current_role_ids] - if missing_role_ids: - employee_id.user_role_ids = [(4, role_id) for role_id in missing_role_ids] - - class YuthonUserRoleGroup(models.Model): _name = 'soong.user.role.group' _order = 'number asc' @@ -117,10 +87,11 @@ class YuthonUserRoleGroup(models.Model): } } + class YuthonRoleTree(models.Model): _name = 'soong.role.tree' _order = 'number asc' name = fields.Char(string="角色名称") - department_id = fields.Many2one('hr.department', string="所属机构部门") + department_id = fields.Many2one('hr.department', string="所属部门") company_id = fields.Many2one('res.company', string="所属公司", index=True, default=lambda self: self.env.company) \ No newline at end of file diff --git a/soong_workflow/models/soong_workflow.py b/soong_workflow/models/soong_workflow.py index 26047b06d..6e387dc8f 100644 --- a/soong_workflow/models/soong_workflow.py +++ b/soong_workflow/models/soong_workflow.py @@ -51,7 +51,7 @@ class SoongWorkflow(models.Model): is_enable_return_button = fields.Boolean(string="是否启用收回", default=True) is_enable_transmitted_button = fields.Boolean(string="是否启用转交", default=True) approvals_group_id = fields.Many2one('soong.approval.group', string="审批分组") - user_role_ids = fields.Many2many('soong.user.role', string="授权范围", store=True, domain=[('user_type', '!=', 'lv_role')], + user_role_ids = fields.Many2many('soong.user.role', string="授权范围", store=True, default=lambda self: [(6, 0, [self.env.ref('soong_workflow.soong_user_role_workflow_admin').id])]) department_role_ids = fields.Many2many('hr.department', string="授权部门范围", store=True) is_user_department_role = fields.Boolean(string="是否有权限查看", store=False, search="_search_is_user_department_role") diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py index 5dbc176a4..2c5fc44e9 100644 --- a/soong_workflow/models/soong_workflow_node.py +++ b/soong_workflow/models/soong_workflow_node.py @@ -346,7 +346,7 @@ class SoongWorkflowNodeButton(models.Model): is_review_invisible = fields.Boolean(string="使用范围", default=False) reviewer_id = fields.Many2one(comodel_name="res.users", string="Reviewer") reviewer_group_id = fields.Many2one(comodel_name="res.groups", string="Reviewer group") - users_role_id = fields.Many2one(comodel_name="soong.user.role", string="主角色", domain=[('user_type', '!=', 'lv_role')]) + users_role_id = fields.Many2one(comodel_name="soong.user.role", string="主角色",) users_role_group_ids = fields.Many2many(comodel_name="soong.user.role.group", string="角色组") reviewer_expression = fields.Text( string="Review Expression", diff --git a/soong_workflow/views/soong_user_role_views.xml b/soong_workflow/views/soong_user_role_views.xml index da4270f3f..69f9e139f 100644 --- a/soong_workflow/views/soong_user_role_views.xml +++ b/soong_workflow/views/soong_user_role_views.xml @@ -1,28 +1,5 @@ - - 刷新部门 - - - code - action = model._compute_employee_ids() - - - - 更新公司 - - - code - action = model.f6_new() - - - 同步花名册 - - - code - action = model.sync_new() - - soong.user.role.tree soong.user.role @@ -31,13 +8,10 @@ - - - @@ -59,7 +33,6 @@ - @@ -67,10 +40,8 @@ - - @@ -85,9 +56,6 @@ - - - @@ -97,7 +65,6 @@ 角色配置 soong.user.role tree,search,form - {'search_default_department_id': True} diff --git a/yuthon_hr_employee/models/inherit_res_groups.py b/yuthon_hr_employee/models/inherit_res_groups.py index eac338b9f..e17132a67 100644 --- a/yuthon_hr_employee/models/inherit_res_groups.py +++ b/yuthon_hr_employee/models/inherit_res_groups.py @@ -9,7 +9,7 @@ class ResGroups(models.Model): users_ids = fields.Many2many('res.users', string="权限用户") employee_ids = fields.Many2many('hr.employee', string="权限员工") department_ids = fields.Many2many("hr.department", string="权限部门") - user_role_ids = fields.Many2many("soong.user.role", string="权限主角色", domain=[('user_type', '!=', 'lv_role')]) + user_role_ids = fields.Many2many("soong.user.role", string="权限主角色",) def users_unlink(self): users_to_unlink = self.users.filtered(lambda user: user.name != 'Administrator') diff --git a/yuthon_performance/models/yuthon_employee_performance.py b/yuthon_performance/models/yuthon_employee_performance.py index 2daa10609..d0736eab7 100644 --- a/yuthon_performance/models/yuthon_employee_performance.py +++ b/yuthon_performance/models/yuthon_employee_performance.py @@ -63,7 +63,7 @@ class YuthonRoleDetailLines(models.Model): role_id = fields.Many2one('yuthon.employee.performance', string="关联员工绩效(考核任务)") organization_id = fields.Many2one('yuthon.duty.management', string='组织绩效考核角色明细行') - in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')]) + in_charge_role_id = fields.Many2one('soong.user.role', string='角色') employee_ids = fields.Many2many('hr.employee', string='人员', compute='_compute_employee_ids', store=True) weight = fields.Float(string="权重" ) diff --git a/yuthon_performance/models/yuthon_index_approval.py b/yuthon_performance/models/yuthon_index_approval.py index f3d9443ae..ae9a4706d 100644 --- a/yuthon_performance/models/yuthon_index_approval.py +++ b/yuthon_performance/models/yuthon_index_approval.py @@ -62,7 +62,7 @@ class NewIndexManagement(models.Model): ('two_index', '双向指标'), ], '计算类别') new_check_norm = fields.Char('考核标准', required=True) new_department_ids = fields.Many2many("hr.department", string="指标来源", required=True) - new_in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')]) + new_in_charge_role_id = fields.Many2one('soong.user.role', string='角色') new_employee_ids = fields.Many2many('hr.employee', string="人员") new_start_index_time = fields.Date(string='生效时间', required=True) new_end_index_time = fields.Date(string='失效时间') diff --git a/yuthon_performance/models/yuthon_index_employee.py b/yuthon_performance/models/yuthon_index_employee.py index de35b3ea8..96c06c15c 100644 --- a/yuthon_performance/models/yuthon_index_employee.py +++ b/yuthon_performance/models/yuthon_index_employee.py @@ -11,7 +11,7 @@ class YuthonIndexEmployee(models.Model): score_range_on = fields.Float(string='分值范围') score_range_off = fields.Float(string='分值范围') description_score = fields.Text(string='分值说明') - in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')]) + in_charge_role_id = fields.Many2one('soong.user.role', string='角色') employee_ids = fields.Many2many('hr.employee', string='人员范围') department_ids = fields.Many2many('hr.department', string='部门') change_employee_library_id = fields.Many2one('yuthon.employee.approval', string='变更指标库') diff --git a/yuthon_performance/models/yuthon_index_management.py b/yuthon_performance/models/yuthon_index_management.py index 16dcdb194..1348b87dc 100644 --- a/yuthon_performance/models/yuthon_index_management.py +++ b/yuthon_performance/models/yuthon_index_management.py @@ -19,7 +19,7 @@ class YuthonIndexManagement(models.Model): ('two_index', '双向指标'),],'计算类别') check_norm = fields.Text('考核标准') department_ids = fields.Many2many("hr.department", string="指标来源") - in_charge_role_id = fields.Many2one('soong.user.role', string='角色', domain=[('user_type', '!=', 'lv_role')]) + in_charge_role_id = fields.Many2one('soong.user.role', string='角色') employee_ids = fields.Many2many('hr.employee', string='人员范围') start_index_time = fields.Date(string='生效时间', default=fields.Date.today()) end_index_time = fields.Date(string='失效时间')