odoorpc 上传图片

那人,那事,那代码 / 2023-08-03 / 原文

以产品图片为例上传

    def product_upload_image(self):
        """
        # product.template(26265,).write_fast({'product_image_ids': [[4, 6, False], [0, 'virtual_1947', {'name': ' DZ01XHY B.Duck 小黄鸭刀架收纳桶 ', 'product_tmpl_id': 26265, 'image': 'iVB
        :return:
        """
        for code,file in self.get_item():
            print(code,file)
            list_product_temp_id = self.odoo.env['product.template'].search([('default_code','=',code)])
            if not list_product_temp_id:
                continue
            product_temp_id = self.odoo.env['product.template'].browse(list_product_temp_id)

            with open(os.path.join(r'D:\Temp\full',file),'rb') as f:
                res = f.read()
				# 图片需要base64 加密
                blob2_b64 = base64.b64encode(res)
				# 上传图片关键代码
                product_temp_id.write({'product_image_ids':[[0,0,{'name': file, 'product_tmpl_id': list_product_temp_id[0], 'image': blob2_b64.decode('utf-8')}],]})

    @staticmethod
    def get_item():
# 获取图片路径
        for i in os.listdir(r'D:\Temp\full'):
            item = i.split('--')[0].strip()

            yield i[0:5], i