跳转到主要内容

存储图像到文件系统存储的域

项目描述

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

此插件定义了一个新的字段 FSImage,用于在您的模型中。它是 FSFile 字段的子类,并具有相同的功能。它扩展了 FSFile 字段,添加了特定于图像的属性。在字段定义中,以下额外的属性可用

  • max_width (int): 图像的最大宽度(以像素为单位)(默认:0,无限制)

  • max_height (int): 图像的最大高度(以像素为单位)(默认:0,无限制)

  • verify_resolution (bool): 是否应验证图像分辨率以确保不超过最大图像分辨率(默认:True)。有关最大图像分辨率,请参阅 odoo.tools.image.ImageProcess(默认:50e6)。

在字段的值方面,值是 odoo.addons.fs_file.fields.FSFileValue 子类的实例。它扩展了该类,允许您为图像管理 alt_text。alt_text 是在图像无法显示时将显示的文本。

目录

用法

这种新的字段类型可以像Odoo的‘图片’字段类型一样使用。

from odoo import models
from odoo.addons.fs_image.fields import FSImage

class MyModel(models.Model):
    _name = 'my.model'

    image = FSImage('Image', max_width=1920, max_height=1920)
<record id="my_model_form" model="ir.ui.view">
    <field name="name">my.model.form</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <field name="image" class="oe_avatar"/>
                </group>
            </sheet>
        </form>
    </field>
</record>

在上述示例中,如果图片大小超过1920x1920px,将会被调整到这个大小。表单视图中所使用的组件也会允许用户为图片设置‘alt’文本。

以下是一个高级且实用的示例:

from odoo import models
from odoo.addons.fs_image.fields import FSImage

class MyModel(models.Model):
    _name = 'my.model'

    image_1920 = FSImage('Image', max_width=1920, max_height=1920)
    image_128 = FSImage('Image', max_width=128, max_height=128, related='image_1920', store=True)
<record id="my_model_form" model="ir.ui.view">
    <field name="name">my.model.form</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <field
                        name="image_1920"
                        class="oe_avatar"
                         options="{'preview_image': 'image_128', 'zoom': true}"
                     />
                </group>
            </sheet>
        </form>
    </field>
</record>

在上述示例中,我们有两个字段,一个用于原始图片,另一个用于缩略图。由于缩略图被定义为相关存储字段,它会自动从原始图片生成,调整到指定大小并在数据库中存储。缩略图随后被用作表单视图中原图片的预览图。这种方法的优点是原始图片不会在表单视图中加载,而是使用缩略图,其大小更小,加载更快。‘缩放’选项允许用户在点击缩略图时在弹出窗口中查看原始图片。

为了方便,‘fs_image’模块还提供了一个名为‘FSImageMixin’的混合类,可以将其用于向模型添加‘image’和‘image_medium’字段。它只将中等缩略图定义为128x128px的图片,因为它是最常见的使用案例。在使用模型中的图片字段时,建议使用此混合类以确保始终定义‘image_medium’字段。一个好的做法是将image_medium字段用作表单视图中图片字段的预览图,以避免在表单视图中加载大图片并消耗过多带宽。

from odoo import models

class MyModel(models.Model):
    _name = 'my.model'
    _inherit = ['fs_image.mixin']
<record id="my_model_form" model="ir.ui.view">
    <field name="name">my.model.form</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <field
                        name="image"
                        class="oe_avatar"
                        options="{'preview_image': 'image_medium', 'zoom': true}"
                    />
                </group>
            </sheet>
        </form>
    </field>
</record>

变更日志

16.0.1.0.3 (2024-02-23)

错误修复

16.0.1.0.2 (2023-12-02)

错误修复

  • 修复上传图片时视图崩溃的问题

    rawCacheKey由基类适当地管理,并反映了记录的最后更新日期时间(write_date)。由于它没有设置器,尝试使值无效会导致视图崩溃。尽管如此,值会在保存记录时自动更新。(#305

16.0.1.0.1 (2023-12-02)

错误修复

  • 避免在读取图片字段时生成SQL更新查询。

    修复在读取字段时初始化图片字段值对象时出现的错误。在此修复之前,每当值对象初始化时都会在构造函数中执行一个附件的赋值。这个赋值会将字段标记为已更改,并在请求结束时生成一个SQL更新查询。FSImageValue类的构造函数中的alt文本只能在类未使用附件初始化时使用。我们现在检查是否同时提供了附件和alt文本,并在这种情况发生时抛出异常。(#307

问题跟踪器

错误在GitHub Issues上追踪。如果遇到问题,请检查是否已报告您的问题。如果您首先发现,请提供详细且受欢迎的反馈以帮助我们解决问题。

请不要直接联系贡献者以获取支持或帮助解决技术问题。

致谢

作者

  • ACSONE SA/NV

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。

当前维护者

lmignon

此模块是GitHub上OCA/storage项目的一部分。

欢迎您贡献。要了解如何贡献,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

本发布没有可用的源分发文件。请参阅生成分发存档的教程

构建分发

odoo_addon_fs_image-17.0.1.0.1.2-py3-none-any.whl (43.4 kB 查看哈希值)

上传于 Python 3