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)