微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Odoo 13 压缩表单中的所有二进制字段并下载它

如何解决Odoo 13 压缩表单中的所有二进制字段并下载它

我有一个表单视图,其中有 5 个二进制字段,即 4 个是图像,1 个是音频。我需要压缩这些字段,用户应该能够从树视图中为选定的记录下载它,可能是通过单击按钮或操作下拉列表中的新选项。有没有可能的解决方案?任何帮助,将不胜感激。提前致谢。

我在表单视图中使用了两个按钮进行了尝试,一个用于生成 zip,一个用于下载,但我需要从树视图中下载相同的多个记录。

def generate_zip(self):
crop_stage = request.env['crop.stage'].sudo().search([('id','=',self.id)])

    for rec in crop_stage:
        directory = rec.crop_id.name
        print('directory name',directory)
        #parent_dir = r"odoo\custom_addons\farm_management\static\zip"
        parent_dir = r"E:\XAMPP\htdocs"
        print('parent dir',parent_dir)
        path = os.path.join(parent_dir,directory)
        if not os.path.exists(path):
            os.makedirs(path)
        print("Directory '% s' created" % directory)
        print('Path',path)
        img = base64.b64decode(rec.image)
        img_conv = Image.open(io.BytesIO(img))
        print('img type',type(img_conv))
        print('img',img_conv)
        img_format = img_conv.format
        img_conv.save('{}/{}'.format(path,rec.image_name),format(img_format))
        print(img_conv.format)

        img1 = base64.b64decode(rec.image1)
        img1_conv = Image.open(io.BytesIO(img1))
        print('img type',type(img1_conv))
        print('img1',img1_conv)
        img1_format = img1_conv.format
        img1_conv.save('{}/{}'.format(path,rec.image1_name),format(img1_format))
        print(img1_conv.format)

        img2 = base64.b64decode(rec.image2)
        img2_conv = Image.open(io.BytesIO(img2))
        print('img type',type(img2_conv))
        print('img2',img2_conv)
        img2_format = img2_conv.format
        img2_conv.save('{}/{}'.format(path,rec.image2_name),format(img2_format))
        print(img2_conv.format)

        img3 = base64.b64decode(rec.image3)
        img3_conv = Image.open(io.BytesIO(img3))
        print('img type',type(img3_conv))
        print('img3',img3_conv)
        img3_format = img3_conv.format
        img3_conv.save('{}/{}'.format(path,rec.image3_name),format(img3_format))
        print(img3_conv.format)
        print('end path',path)

        folder_to_zip = path
        # folder_to_zip = '{}'.format(rec.crop_id.name)
        print('folder_to_zip',folder_to_zip)
        # write_path = "odoo/custom_addons/farm_management/static"
        temp_path = r"E:\XAMPP\htdocs"
        src_path = os.path.join(temp_path,directory)
        print(src_path)
        if not os.path.exists(src_path):
            os.makedirs(src_path)

        shutil.make_archive(src_path,'zip',src_path)

        print('End')


@api.model
def download_zip(self):
    print('entered download_to_zip1')
    pass


#script to download
<script type="text/javascript">
            $(".download_file").click(function(){
             console.log("Clicked")
                   var x = document.getElementsByClassName("crop_name_fms");
                  console.log(x)
                  console.log(x[0].value)
                    console.log(x[0].innerText)

                  if(x[0].value != 'undefined')
                  {
                  console.log("first if")
                  console.log(x[0].value)
                    window.location.href = "http://localhost/"+x[0].value+".zip";
                  }
                  if(x[0].innerText != null)
                  {
                    console.log("second if")
                    window.location.href = "http://localhost/"+x[0].innerText+".zip";
                  }
            });
              </script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。