odoo后台调用路由接口

发布时间 2023-05-21 18:43:44作者: CrossPython
from odoo.exceptions import UserError
import requests
from odoo.http import request

  

    def action_commit_approval(self,action_type='commit_approval'):
        """
        action_type : commit_approval/cancel_approval
        """
        self.ensure_one()
        base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url', default='http://localhost:8069')
        data = {
            'model_name': self._name,
            'res_id': self.id,
            'action_type': action_type
        }
        session = request.session
        opener = requests.Session()
        opener.cookies['session_id'] = session.sid
        res = opener.post(url=base_url + '/web/dataset/control_approval', json={'params': data})
        resp = json.loads(res.content)
        if resp.get('result') and resp['result'].get('state') == 1:
            print('提交审批成功1')
            res = opener.post(url=base_url+'/web/dataset/instance_get_info',json={'params': data})
            resp = json.loads(res.content)
            if resp.get('result'):
                print('提交审批成功2',resp.get('result').get('approval_state'))
        else:
            error = resp.get('error').get('data').get('message')
            raise UserError(error)