-
-
Notifications
You must be signed in to change notification settings - Fork 161
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ae87c49
commit 782c33e
Showing
9 changed files
with
770 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <https://odoo-community.org/page/development-status>`_ | ||
|
||
`HISTORY.rst` can be auto generated using `towncrier <https://pypi.org/project/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 <https://github.com/OCA/maintainer-tools>`_. | ||
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 | ||
<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: | ||
|
||
.. 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 | ||
<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. | ||
|
||
.. code-block:: python | ||
from odoo import models | ||
class MyModel(models.Model): | ||
_name = 'my.model' | ||
_inherit = ['fs_image.mixin'] | ||
.. code-block:: xml | ||
<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 <https://github.com/OCA/storage/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 <https://github.com/OCA/storage/issues/new?body=module:%20fs_image%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
Credits | ||
======= | ||
|
||
Authors | ||
~~~~~~~ | ||
|
||
* ACSONE SA/NV | ||
|
||
Contributors | ||
~~~~~~~~~~~~ | ||
|
||
* Laurent Mignon <laurent.mignon@acsone.eu> | ||
|
||
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 <https://odoo-community.org/page/maintainer-role>`__: | ||
|
||
|maintainer-lmignon| | ||
|
||
This module is part of the `OCA/storage <https://github.com/OCA/storage/tree/16.0/fs_image>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
Oops, something went wrong.