Skip to content

Commit

Permalink
Merge PR #346 into 17.0
Browse files Browse the repository at this point in the history
Signed-off-by gurneyalex
  • Loading branch information
OCA-git-bot committed May 31, 2024
2 parents 962393f + e9c8ee8 commit 04116d5
Show file tree
Hide file tree
Showing 26 changed files with 1,914 additions and 0 deletions.
199 changes: 199 additions & 0 deletions fs_image_thumbnail/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
==================
Fs Image Thumbnail
==================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ae84af058fd490c7c8916156dc7db31813b6d5f7535e722740b152d6955e0d57
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/17.0/fs_image_thumbnail
:alt: OCA/storage
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/storage-17-0/storage-17-0-fs_image_thumbnail
: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=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module extends the **fs_image** addon to support the creation and
the storage of thumbnails for images. This module is a **technical
module** and is not meant to be installed by end-users. It only provides
a mixin to be used by other modules and a model to store the thumbnails.

.. 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>`_

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

In some specific cases you may need to generate and store thumbnails of
images in Odoo. This is the case for example when you want to provide
image in specific sizes for a website or a mobile application.

This module provides a generic way to generate thumbnails of images and
store them in a specific filesystem storage. Indeed, you could need to
store the thumbnails in a different storage than the original image (eg:
store the thumbnails in a CDN) to make sure the thumbnails are served
quickly when requested by an external application and to avoid to expose
the original image storage.

This module uses the
`fs_image <https://github.com/oca/storage/blob/16.0/fs_image/README.rst>`__
module to store the thumbnails in a filesystem storage.

The
`shopinvader_product_image <https://github.com/shopinvader/odoo-shopinvader/blob/16.0/shopinvader_product_image>`__
addon uses this module to generate and store the thumbnails of the
images of the products and categories to be accessible by the website.

Usage
=====

This addon provides a convenient way to get and create if not exists
image thumbnails. All the logic is implemented by the abstract model
fs.image.thumbnail.mixin. The main method is get_or_create_thumbnails
which accepts a *FSImageValue* instance, a list of thumbnail sizes and a
base name.

When the method is called, it will check if the thumbnail exists for the
given sizes and base name. If not, it will create it.

The fs.thumbnail model provided by this addon is a concrete
implementation of the abstract model fs.image.thumbnail.mixin. The
motivation to implement all the logic in an abstract model is to allow
developers to create their own thumbnail models. This could be useful if
you want to store the thumbnails in a different storage since you can
specify the storage to use by model on the fs.storage form view.

Creating / retrieving thumbnails is as simple as:

.. code:: python
from odoo.addons.fs_image.fields import FSImageValue
# create an attachment with a image file
attachment = self.env['ir.attachment'].create({
'name': 'test',
'datas': base64.b64encode(open('test.png', 'rb').read()),
'datas_fname': 'test.png',
})
# create a FSImageValue instance for the attachment
image_value = FSImageValue(attachment)
# get or create the thumbnails
thumbnails = self.env['fs.thumbnail'].get_or_create_thumbnails(
image_value, [(800,600), (400, 200)], 'my base name')
If you've a model with a *FSImage* field, the call to
get_or_create_thumbnails is even simpler:

.. code:: python
from odoo import models
from odoo.addons.fs_image.fields import FSImage
class MyModel(models.Model):
_name = 'my.model'
image = FSImage('Image')
my_record = cls.env['my.model'].create({
'image': open('test.png', 'rb'),
})
# get or create the thumbnails
thumbnails = record.image.get_or_create_thumbnails(my_record.image,
[(800,600), (400, 200)], 'my base name')
Changelog
=========

16.0.1.0.1 (2023-10-04)
-----------------------

**Bugfixes**

- The call to the method *get_or_create_thumbnails* on the
*fs.image.thumbnail.mixin* class returns now an ordered dictionary
where the key is the original image and the value is a recordset of
thumbnail images. The order of the dict is the order of the images
passed to the method. This ensures that when you process the result
of the method you can be sure that the order of the images is the
same as the order of the images passed to the method.
(`#282 <https://github.com/OCA/storage/issues/282>`__)

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_thumbnail%0Aversion:%2017.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> (https://acsone.eu)

Other credits
-------------

The development of this module has been financially supported by:

- `Alcyon Belux <https://www.alcyonbelux.be/>`__

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/17.0/fs_image_thumbnail>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions fs_image_thumbnail/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
23 changes: 23 additions & 0 deletions fs_image_thumbnail/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2023 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Fs Image Thumbnail",
"summary": """
Generate and store thumbnail for images""",
"version": "17.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/storage",
"depends": ["fs_image", "base_partition"],
"data": [
"views/ir_attachment.xml",
"security/fs_thumbnail.xml",
"views/fs_image_thumbnail_mixin.xml",
"views/fs_thumbnail.xml",
],
"demo": [],
"maintainers": ["lmignon"],
"development_status": "Alpha",
"external_dependencies": {"python": ["python_slugify"]},
}
Loading

0 comments on commit 04116d5

Please sign in to comment.