Files
test/sg_wechat_enterprise/models/we_conf.py
2024-07-10 15:58:47 +08:00

62 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import logging
import requests
import time
import base64
from odoo.http import request
from odoo import api, models, exceptions, fields, _
from wechatpy.enterprise import WeChatClient
from .client import JkmWeChatClient
from json import *
_logger = logging.getLogger(__name__)
class WechatEnterpriseConfigration(models.Model):
_name = 'we.config'
name = fields.Char(u'名称', required=True, help=u'取个好名字吧!')
corp_id = fields.Char(u'企业ID', required=True, help=u'企业ID必填项')
corp_secret = fields.Char(u'通讯录同步Secret', required=True, help=u'通讯录同步Secret,必填项')
odoo_app_id = fields.Many2one('we.app', u'Odoo应用', help=u'在企业微信工作台配置的与Odoo进行连接的应用')
company_id = fields.Many2one('res.company', string=u'所属公司')
_sql_constraints = [
('code_complete_name_uniq', 'unique (company_id)', '一个所属公司只能定义一个企业微信!')
]
def get_wechat(self, agent_id=None, company_id=1):
"""
取得wechat app的实例
:param agent_id: conf or None (是企业号对象还是应用对象)
:return:
"""
enterprise = self.env['we.config'].sudo().search([('company_id', '=', company_id)], limit=1)
if agent_id:
enterprise_app = self.env['we.app'].sudo().search([('agentid', '=', agent_id)])
return WeChatClient(corp_id=enterprise.corp_id, secret=enterprise_app.secret)
return WeChatClient(corp_id=enterprise.corp_id, secret=enterprise.corp_secret)
def get_odoo_wechat(self, company_id=1):
"""
取得Odoo wechat app的实例
:param agent_id: conf or None (是企业号对象还是应用对象)
:return:
"""
enterprise = self.env['we.config'].sudo().search([('company_id', '=', company_id)], limit=1)
if enterprise.odoo_app_id:
return (JkmWeChatClient(corp_id=enterprise.corp_id, secret=enterprise.odoo_app_id.secret),
enterprise.odoo_app_id.agentid)
else:
raise exceptions.Warning(u'Odoo应用未配置. ')
def get_wechat_app(self, app_code=None, company_id=1):
"""
取得wechat app的实例
:param app_code: 应用代码
:return:
"""
enterprise = self.env['we.config'].sudo().search([('company_id', '=', company_id)], limit=1)
if app_code:
enterprise_app = self.env['we.app'].sudo().search([('code', '=', app_code)])
return WeChatClient(corp_id=enterprise.corp_id, secret=enterprise_app.secret)
return WeChatClient(corp_id=enterprise.corp_id, secret=enterprise.corp_secret)