返回

Odoo14 前端批量下载附件 —— 快速、高效、无忧!

后端

Odoo 14:前端批量下载附件,提升效率省时省力

在 Odoo 14 中,前端批量下载附件功能为用户提供了极大的便利。借助此功能,用户可以轻松下载所选记录的所有附件,极大提升了工作效率,避免了逐个附件下载的繁琐操作。

一、批量下载附件的优势

  • 高效省时: 一键批量下载附件,无需手动逐个下载,节省大量时间和精力。
  • 压缩成包,便于管理: 所有附件将被压缩成一个文件包,便于下载和管理,还可以轻松与他人共享。
  • 分类存储,一目了然: 附件将根据记录表单字段值进行分类,让您快速找到所需文件,告别杂乱无章的附件管理。

二、实现批量下载附件的方法

  1. 安装模块: 安装 web_export_viewzip_export 模块。
  2. 创建自定义动作: 创建一个自定义动作,用于触发前端批量下载附件操作。
  3. 创建自定义导出视图: 创建一个自定义导出视图,定义附件的导出方式和分类规则。
  4. 在动作中引用导出视图: 将自定义导出视图引用到自定义动作中,并在触发动作时执行导出操作。

代码示例

from odoo import api, fields, models

class MyExportAction(models.TransientModel):
    _name = 'my.export.action'

    def export_attachments(self):
        active_ids = self.env.context.get('active_ids', [])
        records = self.env['my.model'].browse(active_ids)

        export_view = self.env.ref('my_module.my_export_view')
        export_data = export_view.render_template(records)

        filename = 'my_attachments.zip'
        zip_file = tempfile.NamedTemporaryFile(suffix='.zip')
        with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zf:
            for data in export_data:
                zf.writestr(data['filename'], data['content'])

        zip_file.seek(0)
        attachment = self.env['ir.attachment'].create({
            'name': filename,
            'datas': base64.b64encode(zip_file.read()),
            'res_model': 'my.model',
            'res_id': active_ids[0],
        })

        return {
            'type': 'ir.actions.act_url',
            'url': '/web/content/%s?download=true' % (attachment.id),
            'target': 'self',
        }

三、结语

Odoo 14 中的批量下载附件功能,为用户带来了极大的便利性。通过简单易用的操作,即可高效下载大量附件,节省了宝贵的时间,提升了工作效率,告别了繁琐的手动下载附件操作,让附件管理变得更加轻松有序。

常见问题解答

1. 如何安装所需的模块?

打开 Odoo 应用程序,转到应用程序列表,点击“安装应用程序”,搜索所需的模块,并将其安装。

2. 如何创建自定义导出视图?

转到“技术”菜单,点击“导出视图”,选择所需的模型,创建导出视图,定义附件的导出方式和分类规则。

3. 如何触发批量下载附件操作?

选择需要下载附件的记录,点击自定义动作按钮,运行批量下载附件动作。

4. 附件会如何组织?

附件将根据记录表单字段值进行分类,便于快速找到所需文件。

5. 可以自定义批量下载附件的设置吗?

是的,可以通过修改自定义导出视图的设置来实现附件的导出和分类的自定义。