Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,8 @@ exclude: |
^fs_storage_ms_drive/|
^image_tag/|
^microsoft_drive_account/|
^storage_backend/|
^storage_backend_ftp/|
^storage_backend_s3/|
^storage_backend_sftp/|
^storage_file/|
^storage_image/|
^storage_image_product/|
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
fsspec>=2024.5.0
fsspec>=2025.3.0
fsspec[s3]
paramiko
python_slugify
36 changes: 20 additions & 16 deletions storage_backend/README.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

===============
Storage Backend
===============
Expand All @@ -7,23 +11,23 @@ Storage Backend
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:7b577a9f96f6fa3f26a6fa5603de86b8bca5cc78f82d1ed2948b84766989f458
!! source digest: sha256:93486c7bc0b8c99e2e3fa71a055f5e4e43bf92c40926732f17bb557116c84b97
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstorage-lightgray.png?logo=github
:target: https://github.com/OCA/storage/tree/18.0/storage_backend
:target: https://github.com/OCA/storage/tree/19.0/storage_backend
:alt: OCA/storage
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/storage-18-0/storage-18-0-storage_backend
:target: https://translation.odoo-community.org/projects/storage-19-0/storage-19-0-storage_backend
: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=18.0
:target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|
Expand Down Expand Up @@ -51,7 +55,7 @@ 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:%20storage_backend%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/storage/issues/new?body=module:%20storage_backend%0Aversion:%2019.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.

Expand All @@ -66,15 +70,15 @@ Authors
Contributors
------------

- Sébastien BEAU <sebastien.beau@akretion.com>
- Raphaël Reverdy <raphael.reverdy@akretion.com>
- Florian da Costa <florian.dacosta@akretion.com>
- Cédric Pigeon <cedric.pigeon@acsone.eu>
- Renato Lima <renato.lima@akretion.com>
- Benoît Guillot <benoit.guillot@akretion.com>
- Laurent Mignon <laurent.mignon@acsone.eu>
- Denis Roussel <denis.roussel@acsone.eu>
- Thien Vo <thienvh@trobz.com>
- Sébastien BEAU <sebastien.beau@akretion.com>
- Raphaël Reverdy <raphael.reverdy@akretion.com>
- Florian da Costa <florian.dacosta@akretion.com>
- Cédric Pigeon <cedric.pigeon@acsone.eu>
- Renato Lima <renato.lima@akretion.com>
- Benoît Guillot <benoit.guillot@akretion.com>
- Laurent Mignon <laurent.mignon@acsone.eu>
- Denis Roussel <denis.roussel@acsone.eu>
- Thien Vo <thienvh@trobz.com>

Other credits
-------------
Expand All @@ -95,6 +99,6 @@ 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.

This module is part of the `OCA/storage <https://github.com/OCA/storage/tree/18.0/storage_backend>`_ project on GitHub.
This module is part of the `OCA/storage <https://github.com/OCA/storage/tree/19.0/storage_backend>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
9 changes: 5 additions & 4 deletions storage_backend/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@
{
"name": "Storage Backend",
"summary": "Implement the concept of Storage with amazon S3, sftp...",
"version": "18.0.1.0.0",
"version": "19.0.1.0.0",
"category": "Storage",
"website": "https://github.com/OCA/storage",
"author": " Akretion, Odoo Community Association (OCA)",
"license": "LGPL-3",
"development_status": "Production/Stable",
"installable": False,
"installable": True,
"depends": ["base", "component", "server_environment"],
"data": [
"views/backend_storage_view.xml",
"data/data.xml",
"security/ir.model.access.csv",
"data/data.xml",
"views/backend_storage_view.xml",
"views/storage_backend_category_view.xml",
],
}
4 changes: 2 additions & 2 deletions storage_backend/components/filesystem_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ def _basedir(self):
def _fullpath(self, relative_path):
"""This will build the full path for the file, we force to
store the data inside the filestore in the directory 'storage".
Becarefull if you implement your own custom path, end user
Be careful if you implement your own custom path, end user
should never be able to write or read unwanted filesystem file"""
full_path = super()._fullpath(relative_path)
base_dir = self._basedir()
full_path = os.path.join(base_dir, full_path)
if not is_safe_path(base_dir, full_path):
raise AccessError(self.env._("Access to %s is forbidden") % full_path)
raise AccessError(self.env._("Access to %s is forbidden", full_path))
return full_path

def add(self, relative_path, data, **kwargs):
Expand Down
38 changes: 38 additions & 0 deletions storage_backend/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,23 @@ msgstr "Tipo de servidor"
msgid "Backend Type Env Default"
msgstr "Tipo de servidor Ent Por defecto"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__backend_ids
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_category_view_form
msgid "Backends"
msgstr ""

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__categ_id
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_view_search
msgid "Category"
msgstr ""

#. module: storage_backend
#: model:ir.model.fields,help:storage_backend.field_storage_backend__categ_id
msgid "Category to group backends for swapping operations"
msgstr ""

#. module: storage_backend
#. odoo-python
#: code:addons/storage_backend/models/storage_backend.py:0
Expand All @@ -46,14 +63,21 @@ msgstr "¡Conexión de Prueba Exitosa!"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__create_uid
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__create_uid
msgid "Created by"
msgstr "Creado por"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__create_date
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__create_date
msgid "Created on"
msgstr "Creado el"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__description
msgid "Description"
msgstr ""

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__directory_path
msgid "Directory Path"
Expand All @@ -66,6 +90,7 @@ msgstr "Ruta del Directorio Ent Predet"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__display_name
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"

Expand All @@ -87,21 +112,25 @@ msgstr "Tiene Validación"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__id
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__id
msgid "ID"
msgstr "ID(identificación)"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__write_uid
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__write_uid
msgid "Last Updated by"
msgstr "Última Actualización por"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__write_date
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__write_date
msgid "Last Updated on"
msgstr "Última Actualización el"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__name
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__name
msgid "Name"
msgstr "Nombre"

Expand All @@ -126,6 +155,15 @@ msgstr "Valores por defecto del Entorno de Servidor"
msgid "Storage Backend"
msgstr "Servidor de Almacenamiento"

#. module: storage_backend
#: model:ir.actions.act_window,name:storage_backend.act_open_storage_backend_category_view
#: model:ir.model,name:storage_backend.model_storage_backend_category
#: model:ir.ui.menu,name:storage_backend.menu_storage_backend_category
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_category_view_form
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_category_view_search
msgid "Storage Backend Category"
msgstr ""

#. module: storage_backend
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_view_form
msgid "Test connection"
Expand Down
42 changes: 40 additions & 2 deletions storage_backend/i18n/it.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-06-03 09:27+0000\n"
"PO-Revision-Date: 2026-07-01 11:46+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"
"X-Generator: Weblate 5.15.2\n"

#. module: storage_backend
#. odoo-python
Expand All @@ -32,6 +32,23 @@ msgstr "Tipo backend"
msgid "Backend Type Env Default"
msgstr "Tipo backend ambiente predefinito"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__backend_ids
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_category_view_form
msgid "Backends"
msgstr "Backend"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__categ_id
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_view_search
msgid "Category"
msgstr "Categoria"

#. module: storage_backend
#: model:ir.model.fields,help:storage_backend.field_storage_backend__categ_id
msgid "Category to group backends for swapping operations"
msgstr "Categoria per raggruppare backend per operazioni di scambio"

#. module: storage_backend
#. odoo-python
#: code:addons/storage_backend/models/storage_backend.py:0
Expand All @@ -46,14 +63,21 @@ msgstr "Test connessione avvenuto con successo!"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__create_uid
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__create_uid
msgid "Created by"
msgstr "Creato da"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__create_date
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__create_date
msgid "Created on"
msgstr "Creato il"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__description
msgid "Description"
msgstr "Descrizione"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__directory_path
msgid "Directory Path"
Expand All @@ -66,6 +90,7 @@ msgstr "Percorso cartella ambiente predefinito"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__display_name
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__display_name
msgid "Display Name"
msgstr "Nome visualizzato"

Expand All @@ -87,21 +112,25 @@ msgstr "Ha validazione"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__id
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__id
msgid "ID"
msgstr "ID"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__write_uid
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__write_date
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"

#. module: storage_backend
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend__name
#: model:ir.model.fields,field_description:storage_backend.field_storage_backend_category__name
msgid "Name"
msgstr "Nome"

Expand All @@ -126,6 +155,15 @@ msgstr "Predefiniti ambiente server"
msgid "Storage Backend"
msgstr "Backend deposito"

#. module: storage_backend
#: model:ir.actions.act_window,name:storage_backend.act_open_storage_backend_category_view
#: model:ir.model,name:storage_backend.model_storage_backend_category
#: model:ir.ui.menu,name:storage_backend.menu_storage_backend_category
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_category_view_form
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_category_view_search
msgid "Storage Backend Category"
msgstr "Categoria backend deposito"

#. module: storage_backend
#: model_terms:ir.ui.view,arch_db:storage_backend.storage_backend_view_form
msgid "Test connection"
Expand Down
Loading
Loading