mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
基础调整
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import res_partner
|
||||||
from . import mail_channel
|
from . import mail_channel
|
||||||
from . import res_config_settings
|
from . import res_config_settings
|
||||||
from . import ai_robot
|
from . import ai_robot
|
||||||
from . import res_partner
|
|
||||||
from . import res_partner_ai_use
|
from . import res_partner_ai_use
|
||||||
from . import res_users
|
from . import res_users
|
||||||
from . import mail_message
|
from . import mail_message
|
||||||
|
|||||||
@@ -1,9 +1,58 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from odoo import fields, models
|
from odoo import fields, models, api
|
||||||
|
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
class ResPartner(models.Model):
|
||||||
_inherit = "res.partner"
|
_inherit = "res.partner"
|
||||||
|
|
||||||
gpt_id = fields.Many2one('ai.robot', string='Bind to ChatGpt')
|
gpt_id = fields.Many2one('ai.robot', string='Bind to ChatGpt')
|
||||||
|
|
||||||
|
is_chat_private = fields.Boolean('Allow Chat Private', default=False)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def im_search(self, name, limit=20):
|
||||||
|
users = self.env['res.users'].search([
|
||||||
|
('id', '!=', self.env.user.id),
|
||||||
|
('name', 'ilike', name),
|
||||||
|
('active', '=', True),
|
||||||
|
('share', '=', False),
|
||||||
|
('is_chat_private', '=', True)
|
||||||
|
], order='gpt_id, name, id', limit=limit)
|
||||||
|
return list(users.partner_id.mail_partner_format().values())
|
||||||
|
|
||||||
|
def mail_partner_format(self, fields=None):
|
||||||
|
# 直接覆盖原生,增加 gpt_id 字段
|
||||||
|
partners_format = dict()
|
||||||
|
if not fields:
|
||||||
|
fields = {'id': True, 'name': True, 'email': True, 'active': True, 'im_status': True, 'gpt_id': 0, 'user': {}}
|
||||||
|
for partner in self:
|
||||||
|
data = {}
|
||||||
|
if 'id' in fields:
|
||||||
|
data['id'] = partner.id
|
||||||
|
if 'name' in fields:
|
||||||
|
name = partner.name
|
||||||
|
# 英文不好分,暂时不隐名
|
||||||
|
# if not partner.related_user_id.gpt_id:
|
||||||
|
# name = partner.name[0] + '*' * (len(partner.name) - 1)
|
||||||
|
data['name'] = name
|
||||||
|
if 'email' in fields:
|
||||||
|
data['email'] = partner.email
|
||||||
|
if 'active' in fields:
|
||||||
|
data['active'] = partner.active
|
||||||
|
if 'im_status' in fields:
|
||||||
|
data['im_status'] = partner.im_status
|
||||||
|
if 'gpt_id' in fields:
|
||||||
|
data['gpt_id'] = partner.gpt_id.id if partner.gpt_id else 0
|
||||||
|
if 'user' in fields:
|
||||||
|
internal_users = partner.user_ids - partner.user_ids.filtered('share')
|
||||||
|
main_user = internal_users[0] if len(internal_users) > 0 else partner.user_ids[0] if len(partner.user_ids) > 0 else self.env['res.users']
|
||||||
|
data['user'] = {
|
||||||
|
"id": main_user.id,
|
||||||
|
"isInternalUser": not main_user.share,
|
||||||
|
} if main_user else [('clear',)]
|
||||||
|
# if 'guest' in self.env.context or not self.env.user.has_group('base.group_erp_manager'):
|
||||||
|
# 完全不显示 邮箱
|
||||||
|
data.pop('email', None)
|
||||||
|
partners_format[partner] = data
|
||||||
|
return partners_format
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ class ResUsers(models.Model):
|
|||||||
], string='Allowed Conversation Mode', default='all', ondelete='set default')
|
], string='Allowed Conversation Mode', default='all', ondelete='set default')
|
||||||
gpt_wl_partners = fields.Many2many('res.partner', 'res_partner_ai_use', 'ai_user_id', 'name', string='Allowed Partners')
|
gpt_wl_partners = fields.Many2many('res.partner', 'res_partner_ai_use', 'ai_user_id', 'name', string='Allowed Partners')
|
||||||
gpt_demo_time = fields.Integer('Default Demo Time', default=0)
|
gpt_demo_time = fields.Integer('Default Demo Time', default=0)
|
||||||
|
is_chat_private = fields.Boolean('Allow Chat Private', default=False, related='partner_id.is_chat_private', inherited=True, readonly=False)
|
||||||
Reference in New Issue
Block a user