62 lines
2.6 KiB
Python
62 lines
2.6 KiB
Python
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) |