diff --git a/soong_workflow/models/soong_user_role.py b/soong_workflow/models/soong_user_role.py index 3a6f7917e..029f75e21 100644 --- a/soong_workflow/models/soong_user_role.py +++ b/soong_workflow/models/soong_user_role.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- from odoo import api, fields, models, _ +from pypinyin import pinyin,lazy_pinyin +from odoo.osv import expression class YuthonUserRole(models.Model): @@ -18,6 +20,7 @@ class YuthonUserRole(models.Model): child_ids = fields.One2many('soong.user.role', 'parent_id', string='子集角色') yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储'), ('thtjbb', '天河投资本部')], string="所属公司", compute='compute_company') + pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True, store=True) @api.depends('department_id') def compute_company(self): @@ -38,4 +41,18 @@ class YuthonUserRole(models.Model): break department = department.parent_id else: - record.yuthon_company = 'thtz' \ No newline at end of file + record.yuthon_company = 'thtz' + + @api.depends('name') + def _compute_pinyin(self): + for employee in self: + employee.pinyin_name = ''.join(lazy_pinyin(employee.name)) + + @api.model + def _name_search(self, name, domain=None, operator='ilike', limit=None, order=None): + domain = domain or [] + if name: + input_pinyin = ''.join(lazy_pinyin(name)) + search_domain = ['|', ('pinyin_name', operator, input_pinyin), ('name', operator, name)] + domain = expression.AND([search_domain, domain]) + return self._search(domain, limit=limit, order=order) diff --git a/soong_workflow/views/soong_user_role_views.xml b/soong_workflow/views/soong_user_role_views.xml index 334d1c15e..c938cbf15 100644 --- a/soong_workflow/views/soong_user_role_views.xml +++ b/soong_workflow/views/soong_user_role_views.xml @@ -10,6 +10,7 @@ +