diff --git a/README.md b/README.md index d725ccb3b9..588cb9dc16 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ addon | version | maintainers | summary --- | --- | --- | --- [fs_attachment](fs_attachment/) | 16.0.1.0.1 | [![lmignon](https://github.com/lmignon.png?size=30px)](https://github.com/lmignon) | Store attachments on external object store [fs_file](fs_file/) | 16.0.1.0.0 | [![lmignon](https://github.com/lmignon.png?size=30px)](https://github.com/lmignon) | Field to store files into filesystem storages -[fs_file_demo](fs_file_demo/) | 16.0.1.0.0 | | Demo addon for fs_file +[fs_file_demo](fs_file_demo/) | 16.0.1.0.0 | | Demo addon for fs_file and fs_image +[fs_image](fs_image/) | 16.0.1.0.0 | [![lmignon](https://github.com/lmignon.png?size=30px)](https://github.com/lmignon) | Field to store images into filesystem storages [fs_storage](fs_storage/) | 16.0.1.0.1 | | Implement the concept of Storage with amazon S3, sftp... [storage_backend](storage_backend/) | 16.0.1.0.1 | | Implement the concept of Storage with amazon S3, sftp... diff --git a/fs_file/README.rst b/fs_file/README.rst index ac42e78de8..cbae4f1d1c 100644 --- a/fs_file/README.rst +++ b/fs_file/README.rst @@ -7,7 +7,7 @@ Fs File !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5094be1442c83e8740a7b5341e7a32f3ead5e76f283ddc99c3717e2bd39f6769 + !! source digest: sha256:f0169d8f5d35c5ef78404fe1e2da2b7cc53e16f1003317287483947024173c2d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png @@ -28,6 +28,10 @@ Fs File |badge1| |badge2| |badge3| |badge4| |badge5| +This addon defines a new field type `FSFile` which is a file field that stores +a file in an external filesystem instead of the odoo's filestore. This is useful for +large files that you don't want to store in the filestore. Moreover, the field +value provides you an interface to access the file's contents and metadata. .. IMPORTANT:: This is an alpha version, the data model and design can change at any time without warning. diff --git a/fs_file/static/description/index.html b/fs_file/static/description/index.html index f0231e9456..7a3e682a66 100644 --- a/fs_file/static/description/index.html +++ b/fs_file/static/description/index.html @@ -367,9 +367,13 @@

Fs File

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:5094be1442c83e8740a7b5341e7a32f3ead5e76f283ddc99c3717e2bd39f6769 +!! source digest: sha256:f0169d8f5d35c5ef78404fe1e2da2b7cc53e16f1003317287483947024173c2d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

+

This addon defines a new field type FSFile which is a file field that stores +a file in an external filesystem instead of the odoo’s filestore. This is useful for +large files that you don’t want to store in the filestore. Moreover, the field +value provides you an interface to access the file’s contents and metadata.

Important

This is an alpha version, the data model and design can change at any time without warning. diff --git a/fs_file_demo/README.rst b/fs_file_demo/README.rst index de4cfb80ce..cd2eda1903 100644 --- a/fs_file_demo/README.rst +++ b/fs_file_demo/README.rst @@ -7,7 +7,7 @@ Fs File Demo !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:0c6de6acbf54a597cb13e00e69e2c24d40afd539e001c27f5703a191f6baad9c + !! source digest: sha256:3ead524540cb0a8b73635f81f0120949b650b3dfd83029f94bb67492e6a4223c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_file_demo/static/description/index.html b/fs_file_demo/static/description/index.html index 993c2bd437..e008874a16 100644 --- a/fs_file_demo/static/description/index.html +++ b/fs_file_demo/static/description/index.html @@ -367,7 +367,7 @@

Fs File Demo

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:0c6de6acbf54a597cb13e00e69e2c24d40afd539e001c27f5703a191f6baad9c +!! source digest: sha256:3ead524540cb0a8b73635f81f0120949b650b3dfd83029f94bb67492e6a4223c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This addon is a demo addon for fs_file.

diff --git a/fs_image/README.rst b/fs_image/README.rst index 38929e8775..adfdec8ee5 100644 --- a/fs_image/README.rst +++ b/fs_image/README.rst @@ -1,35 +1,220 @@ -**This file is going to be generated by oca-gen-addon-readme.** +======== +Fs Image +======== -*Manual changes will be overwritten.* +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:117413401c2187f3807cd4ce73ae108acacc5347ac150ec1fce965b5d073ee25 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -Please provide content in the ``readme`` directory: +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstorage-lightgray.png?logo=github + :target: https://github.com/OCA/storage/tree/16.0/fs_image + :alt: OCA/storage +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_image + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=16.0 + :alt: Try me on Runboat -* **DESCRIPTION.rst** (required) -* INSTALL.rst (optional) -* CONFIGURE.rst (optional) -* **USAGE.rst** (optional, highly recommended) -* DEVELOP.rst (optional) -* ROADMAP.rst (optional) -* HISTORY.rst (optional, recommended) -* **CONTRIBUTORS.rst** (optional, highly recommended) -* CREDITS.rst (optional) +|badge1| |badge2| |badge3| |badge4| |badge5| -Content of this README will also be drawn from the addon manifest, -from keys such as name, authors, maintainers, development_status, -and license. +This addon defines a new field **FSImage** to use in your models. It is a +subclass of the **FSFile** field and comes with the same features. It extends +the **FSFile** field with specific properties dedicated to images. On the field +definition, the following additional properties are available: -A good, one sentence summary in the manifest is also highly recommended. +* **max_width** (int): maximum width of the image in pixels (default: ``0``, no limit) +* **max_height** (int): maximum height of the image in pixels (default: ``0``, no limit) +* **verify_resolution** (bool):whether the image resolution should be verified + to ensure it doesn't go over the maximum image resolution (default: ``True``). + See `odoo.tools.image.ImageProcess` for maximum image resolution (default: ``50e6``). +On the field's value side, the value is an instance of a subclass of +`odoo.addons.fs_file.fields.FSFileValue`. It extends the class to allows +you to manage an alt_text for the image. The alt_text is a text that will be +displayed when the image cannot be displayed. -Automatic changelog generation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ -`HISTORY.rst` can be auto generated using `towncrier `_. +**Table of contents** -Just put towncrier compatible changelog fragments into `readme/newsfragments` -and the changelog file will be automatically generated and updated when a new fragment is added. +.. contents:: + :local: -Please refer to `towncrier` documentation to know more. +Usage +===== -NOTE: the changelog will be automatically generated when using `/ocabot merge $option`. -If you need to run it manually, refer to `OCA/maintainer-tools README `_. +This new field type can be used in the same way as the odoo 'Image' field type. + +.. code-block:: python + + 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) + + +.. code-block:: xml + + + my.model.form + my.model + +
+ + + + + +
+
+
+ + +In the example above, the image will be resized to 1920x1920px if it is larger than that. +The widget used in the form view will also allow the user set an 'alt' text for the image. + + +A mode advanced and useful example is the following: + +.. code-block:: python + + 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) + + +.. code-block:: xml + + + my.model.form + my.model + +
+ + + + + +
+
+
+ +In the example above we have two fields, one for the original image and one for a thumbnail. +As the thumbnail is defined as a related stored field it's automatically generated +from the original image, resized at the given size and stored in the database. +The thumbnail is then used as a preview image for the original image in the form view. +The main advantage of this approach is that the original image is not loaded in the form view +and the thumbnail is used instead, which is much smaller in size and faster to load. +The 'zoom' option allows the user to see the original image in a popup when clicking on the thumbnail. + +For convenience, the 'fs_image' module also provides a 'FSImageMixin' mixin class +that can be used to add the 'image' and 'image_medium' fields to a model. It only +define the medium thumbnail as a 128x128px image since it's the most common use case. +When using an image field in a model, it's recommended to use this mixin class +in order ensure that the 'image_medium' field is always defined. A good practice +is to use the `image_medium` field as a preview image for the `image` field in +the form view to avoid to overload the form view with a large image and consume +too much bandwidth. + +.. code-block:: python + + from odoo import models + + class MyModel(models.Model): + _name = 'my.model' + _inherit = ['fs_image.mixin'] + + +.. code-block:: xml + + + my.model.form + my.model + +
+ + + + + +
+
+
+ +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Laurent Mignon + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-lmignon| image:: https://github.com/lmignon.png?size=40px + :target: https://github.com/lmignon + :alt: lmignon + +Current `maintainer `__: + +|maintainer-lmignon| + +This module is part of the `OCA/storage `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fs_image/static/description/index.html b/fs_image/static/description/index.html new file mode 100644 index 0000000000..9cedc21bdd --- /dev/null +++ b/fs_image/static/description/index.html @@ -0,0 +1,545 @@ + + + + + + +Fs Image + + + +
+

Fs Image

+ + +

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

+

This addon defines a new field FSImage to use in your models. It is a +subclass of the FSFile field and comes with the same features. It extends +the FSFile field with specific properties dedicated to images. On the field +definition, the following additional properties are available:

+
    +
  • max_width (int): maximum width of the image in pixels (default: 0, no limit)
  • +
  • max_height (int): maximum height of the image in pixels (default: 0, no limit)
  • +
  • verify_resolution (bool):whether the image resolution should be verified +to ensure it doesn’t go over the maximum image resolution (default: True). +See odoo.tools.image.ImageProcess for maximum image resolution (default: 50e6).
  • +
+

On the field’s value side, the value is an instance of a subclass of +odoo.addons.fs_file.fields.FSFileValue. It extends the class to allows +you to manage an alt_text for the image. The alt_text is a text that will be +displayed when the image cannot be displayed.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Usage

+

This new field type can be used in the same way as the odoo ‘Image’ field type.

+
+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>
+
+

In the example above, the image will be resized to 1920x1920px if it is larger than that. +The widget used in the form view will also allow the user set an ‘alt’ text for the image.

+

A mode advanced and useful example is the following:

+
+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>
+
+

In the example above we have two fields, one for the original image and one for a thumbnail. +As the thumbnail is defined as a related stored field it’s automatically generated +from the original image, resized at the given size and stored in the database. +The thumbnail is then used as a preview image for the original image in the form view. +The main advantage of this approach is that the original image is not loaded in the form view +and the thumbnail is used instead, which is much smaller in size and faster to load. +The ‘zoom’ option allows the user to see the original image in a popup when clicking on the thumbnail.

+

For convenience, the ‘fs_image’ module also provides a ‘FSImageMixin’ mixin class +that can be used to add the ‘image’ and ‘image_medium’ fields to a model. It only +define the medium thumbnail as a 128x128px image since it’s the most common use case. +When using an image field in a model, it’s recommended to use this mixin class +in order ensure that the ‘image_medium’ field is always defined. A good practice +is to use the image_medium field as a preview image for the image field in +the form view to avoid to overload the form view with a large image and consume +too much bandwidth.

+
+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>
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

lmignon

+

This module is part of the OCA/storage project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/setup/_metapackage/VERSION.txt b/setup/_metapackage/VERSION.txt index 8e4fd00be1..7085de6800 100644 --- a/setup/_metapackage/VERSION.txt +++ b/setup/_metapackage/VERSION.txt @@ -1 +1 @@ -16.0.20230824.2 \ No newline at end of file +16.0.20230922.0 \ No newline at end of file diff --git a/setup/_metapackage/setup.py b/setup/_metapackage/setup.py index c113d6641c..e56f86e278 100644 --- a/setup/_metapackage/setup.py +++ b/setup/_metapackage/setup.py @@ -11,6 +11,7 @@ 'odoo-addon-fs_attachment>=16.0dev,<16.1dev', 'odoo-addon-fs_file>=16.0dev,<16.1dev', 'odoo-addon-fs_file_demo>=16.0dev,<16.1dev', + 'odoo-addon-fs_image>=16.0dev,<16.1dev', 'odoo-addon-fs_storage>=16.0dev,<16.1dev', 'odoo-addon-storage_backend>=16.0dev,<16.1dev', ],