From b23b4ce52549ea18f110d02824fab56b8e5609c2 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Wed, 15 Sep 2021 16:43:36 +0200 Subject: [PATCH 01/62] Add edi_endpoint_oca --- edi_endpoint_oca/README.rst | 1 + edi_endpoint_oca/__init__.py | 2 + edi_endpoint_oca/__manifest__.py | 23 ++++++ edi_endpoint_oca/controllers/__init__.py | 1 + edi_endpoint_oca/controllers/main.py | 13 ++++ edi_endpoint_oca/demo/edi_backend_demo.xml | 30 +++++++ edi_endpoint_oca/models/__init__.py | 3 + edi_endpoint_oca/models/edi_backend.py | 36 +++++++++ edi_endpoint_oca/models/edi_backend_type.py | 17 ++++ edi_endpoint_oca/models/edi_endpoint.py | 78 +++++++++++++++++++ edi_endpoint_oca/readme/CONFIGURE.rst | 1 + edi_endpoint_oca/readme/CONTRIBUTORS.rst | 1 + edi_endpoint_oca/readme/DESCRIPTION.rst | 1 + edi_endpoint_oca/security/ir.model.access.csv | 2 + edi_endpoint_oca/tests/__init__.py | 2 + edi_endpoint_oca/tests/test_edi_endpoint.py | 29 +++++++ .../tests/test_edi_endpoint_controller.py | 23 ++++++ edi_endpoint_oca/views/edi_backend_views.xml | 21 +++++ edi_endpoint_oca/views/edi_endpoint_views.xml | 69 ++++++++++++++++ 19 files changed, 353 insertions(+) create mode 100644 edi_endpoint_oca/README.rst create mode 100644 edi_endpoint_oca/__init__.py create mode 100644 edi_endpoint_oca/__manifest__.py create mode 100644 edi_endpoint_oca/controllers/__init__.py create mode 100644 edi_endpoint_oca/controllers/main.py create mode 100644 edi_endpoint_oca/demo/edi_backend_demo.xml create mode 100644 edi_endpoint_oca/models/__init__.py create mode 100644 edi_endpoint_oca/models/edi_backend.py create mode 100644 edi_endpoint_oca/models/edi_backend_type.py create mode 100644 edi_endpoint_oca/models/edi_endpoint.py create mode 100644 edi_endpoint_oca/readme/CONFIGURE.rst create mode 100644 edi_endpoint_oca/readme/CONTRIBUTORS.rst create mode 100644 edi_endpoint_oca/readme/DESCRIPTION.rst create mode 100644 edi_endpoint_oca/security/ir.model.access.csv create mode 100644 edi_endpoint_oca/tests/__init__.py create mode 100644 edi_endpoint_oca/tests/test_edi_endpoint.py create mode 100644 edi_endpoint_oca/tests/test_edi_endpoint_controller.py create mode 100644 edi_endpoint_oca/views/edi_backend_views.xml create mode 100644 edi_endpoint_oca/views/edi_endpoint_views.xml diff --git a/edi_endpoint_oca/README.rst b/edi_endpoint_oca/README.rst new file mode 100644 index 000000000..89bcd6c21 --- /dev/null +++ b/edi_endpoint_oca/README.rst @@ -0,0 +1 @@ +wait for the bot ;) diff --git a/edi_endpoint_oca/__init__.py b/edi_endpoint_oca/__init__.py new file mode 100644 index 000000000..91c5580fe --- /dev/null +++ b/edi_endpoint_oca/__init__.py @@ -0,0 +1,2 @@ +from . import controllers +from . import models diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py new file mode 100644 index 000000000..77cd2aeae --- /dev/null +++ b/edi_endpoint_oca/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "EDI endpoint", + "summary": """ + Base module allowing configuration of custom endpoints for EDI framework. + """, + "version": "14.0.1.0.0", + "development_status": "Alpha", + "license": "LGPL-3", + "website": "https://github.com/OCA/edi", + "author": "Camptocamp,Odoo Community Association (OCA)", + "depends": ["base_edi", "edi_oca", "endpoint"], + "data": [ + "demo/edi_backend_demo.xml", + "security/ir.model.access.csv", + "views/edi_backend_views.xml", + "views/edi_endpoint_views.xml", + ], + "demo": ["demo/edi_backend_demo.xml"], +} diff --git a/edi_endpoint_oca/controllers/__init__.py b/edi_endpoint_oca/controllers/__init__.py new file mode 100644 index 000000000..12a7e529b --- /dev/null +++ b/edi_endpoint_oca/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/edi_endpoint_oca/controllers/main.py b/edi_endpoint_oca/controllers/main.py new file mode 100644 index 000000000..ff966b03e --- /dev/null +++ b/edi_endpoint_oca/controllers/main.py @@ -0,0 +1,13 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + + +from odoo import http + +from odoo.addons.endpoint.controllers.main import EndpointControllerMixin + + +class EDIEndpointController(http.Controller, EndpointControllerMixin): + def _find_endpoint(self, env, endpoint_route): + return env["edi.endpoint"]._find_endpoint(endpoint_route) diff --git a/edi_endpoint_oca/demo/edi_backend_demo.xml b/edi_endpoint_oca/demo/edi_backend_demo.xml new file mode 100644 index 000000000..871d0d307 --- /dev/null +++ b/edi_endpoint_oca/demo/edi_backend_demo.xml @@ -0,0 +1,30 @@ + + + + EDI backend with endpoints DEMO + + + + + EDI exchange demo + demo_endpoint + + input + + + + + + + EDI Demo Endpoint 1 + + /demo/try + GET + code + +record = endpoint.create_exchange_record() +result = {"response": Response("Created record: %s" % record.identifier)} + + + + diff --git a/edi_endpoint_oca/models/__init__.py b/edi_endpoint_oca/models/__init__.py new file mode 100644 index 000000000..ae81989d9 --- /dev/null +++ b/edi_endpoint_oca/models/__init__.py @@ -0,0 +1,3 @@ +from . import edi_backend +from . import edi_backend_type +from . import edi_endpoint diff --git a/edi_endpoint_oca/models/edi_backend.py b/edi_endpoint_oca/models/edi_backend.py new file mode 100644 index 000000000..89e0bf704 --- /dev/null +++ b/edi_endpoint_oca/models/edi_backend.py @@ -0,0 +1,36 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import api, fields, models + + +class EDIBackend(models.Model): + + _inherit = "edi.backend" + + endpoint_ids = fields.One2many( + string="Endpoints", + comodel_name="edi.endpoint", + inverse_name="backend_id", + ) + endpoints_count = fields.Integer(compute="_compute_endpoints_count") + + @api.depends("endpoint_ids") + def _compute_endpoints_count(self): + for record in self: + record.endpoints_count = len(record.endpoint_ids) + + def action_manage_endpoints(self): + action = self.env.ref("edi_endpoint_oca.edi_endpoint_act_window").read()[0] + action["domain"] = [ + ("backend_type_id", "=", self.backend_type_id), + "|", + ("backend_id", "=", False), + ("backend_id", "=", self.id), + ] + action["context"] = { + "default_backend_id": self.id, + "default_backend_type_id": self.backend_type_id.id, + } + return action diff --git a/edi_endpoint_oca/models/edi_backend_type.py b/edi_endpoint_oca/models/edi_backend_type.py new file mode 100644 index 000000000..178c9d4c2 --- /dev/null +++ b/edi_endpoint_oca/models/edi_backend_type.py @@ -0,0 +1,17 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +# TODO add view +class EDIBackendType(models.Model): + + _inherit = "edi.backend.type" + + endpoint_ids = fields.One2many( + string="Endpoints", + comodel_name="edi.endpoint", + inverse_name="backend_type_id", + ) diff --git a/edi_endpoint_oca/models/edi_endpoint.py b/edi_endpoint_oca/models/edi_endpoint.py new file mode 100644 index 000000000..03c74ea9d --- /dev/null +++ b/edi_endpoint_oca/models/edi_endpoint.py @@ -0,0 +1,78 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from functools import partial + +import werkzeug + +from odoo import _, api, exceptions, fields, models + +from ..controllers.main import EDIEndpointController + + +class EDIEndpoint(models.Model): + """EDI endpoint. + + Manage endpoints used within EDI framework. + """ + + _name = "edi.endpoint" + _inherit = "endpoint.mixin" + _description = "EDI Endpoint" + + _endpoint_route_prefix = "/edi" + + backend_type_id = fields.Many2one( + comodel_name="edi.backend.type", + required=True, + ) + # Leave these as not required to allow pre-configuration of endpoints by backend type + backend_id = fields.Many2one( + comodel_name="edi.backend", domain="[('backend_type_id','=', backend_type_id)]" + ) + exchange_type_id = fields.Many2one( + comodel_name="edi.exchange.type", + domain="[('backend_type_id','=', backend_type_id)]", + ) + + # TODO: add unit tests + + def create_exchange_record(self, file_content=None, **vals): + """Create an EDI exchange record from current endpoint. + + Just a shortcut. + """ + self._check_endpoint_ready() + rec = self.backend_id.create_record(self.exchange_type_id.code, vals) + if file_content: + rec._set_file_content(file_content) + return rec + + def _check_endpoint_ready(self, request=False): + if not self.backend_id or not self.exchange_type_id: + msg = _("Backend and exchange type are mandatory") + if request: + self._logger.error(msg) + raise werkzeug.exceptions.BadRequest("Endpoint mis-configured") + else: + raise exceptions.UserError(msg) + + @api.constrains("exchange_type_id", "backend_type_id") + def _check_backend_type(self): + for rec in self: + if ( + rec.backend_type_id + and rec.exchange_type_id + and not rec.backend_type_id == rec.exchange_type_id.backend_type_id + ): + raise exceptions.UserError( + _("Exchange type not compatible with selected backend type.") + ) + + def _handle_request(self, request): + self._check_endpoint_ready(request=True) + return super()._handle_request(request) + + def _default_endpoint_handler(self): + return partial(EDIEndpointController().auto_endpoint, self.route) diff --git a/edi_endpoint_oca/readme/CONFIGURE.rst b/edi_endpoint_oca/readme/CONFIGURE.rst new file mode 100644 index 000000000..dc2d05dbb --- /dev/null +++ b/edi_endpoint_oca/readme/CONFIGURE.rst @@ -0,0 +1 @@ +Go to "EDI -> Config -> Endpoints". diff --git a/edi_endpoint_oca/readme/CONTRIBUTORS.rst b/edi_endpoint_oca/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..f1c71bce1 --- /dev/null +++ b/edi_endpoint_oca/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Simone Orsi diff --git a/edi_endpoint_oca/readme/DESCRIPTION.rst b/edi_endpoint_oca/readme/DESCRIPTION.rst new file mode 100644 index 000000000..e7951c873 --- /dev/null +++ b/edi_endpoint_oca/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Base module allowing configuration of custom endpoints for EDI framework. diff --git a/edi_endpoint_oca/security/ir.model.access.csv b/edi_endpoint_oca/security/ir.model.access.csv new file mode 100644 index 000000000..9ba995456 --- /dev/null +++ b/edi_endpoint_oca/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_edi_endpoint_edit,edi_endpoint edit,model_edi_endpoint,base_edi.group_edi_manager,1,1,1,1 diff --git a/edi_endpoint_oca/tests/__init__.py b/edi_endpoint_oca/tests/__init__.py new file mode 100644 index 000000000..e93f5885e --- /dev/null +++ b/edi_endpoint_oca/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_edi_endpoint +from . import test_edi_endpoint_controller diff --git a/edi_endpoint_oca/tests/test_edi_endpoint.py b/edi_endpoint_oca/tests/test_edi_endpoint.py new file mode 100644 index 000000000..188e67957 --- /dev/null +++ b/edi_endpoint_oca/tests/test_edi_endpoint.py @@ -0,0 +1,29 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + + +from odoo.addons.endpoint.tests.common import CommonEndpoint + + +class TestEndpoint(CommonEndpoint): + @classmethod + def _setup_records(cls): + super()._setup_records() + cls.endpoint = cls.env.ref("edi_endpoint_oca.edi_endpoint_demo_1") + + def test_endpoint_find(self): + self.assertEqual( + self.env["edi.endpoint"]._find_endpoint("/edi/demo/try"), self.endpoint + ) + + def test_exchange_record(self): + self.endpoint.create_exchange_record() + + def test_route(self): + rec = self.endpoint.copy( + { + "route": "/noprefix", + } + ) + self.assertEqual(rec.route, "/edi/noprefix") diff --git a/edi_endpoint_oca/tests/test_edi_endpoint_controller.py b/edi_endpoint_oca/tests/test_edi_endpoint_controller.py new file mode 100644 index 000000000..88314e681 --- /dev/null +++ b/edi_endpoint_oca/tests/test_edi_endpoint_controller.py @@ -0,0 +1,23 @@ +# Copyright 2021 Camptcamp SA +# @author: Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +import os +import unittest + +from odoo.tests.common import HttpCase + + +@unittest.skipIf(os.getenv("SKIP_HTTP_CASE"), "EDIEndpointHttpCase skipped") +class EDIEndpointHttpCase(HttpCase): + def setUp(self): + super().setUp() + + def test_call1(self): + response = self.url_open("/edi/demo/try") + self.assertEqual(response.status_code, 401) + # Let's login now + self.authenticate("admin", "admin") + response = self.url_open("/edi/demo/try") + self.assertEqual(response.status_code, 200) + self.assertIn("Created record:", response.content.decode()) diff --git a/edi_endpoint_oca/views/edi_backend_views.xml b/edi_endpoint_oca/views/edi_backend_views.xml new file mode 100644 index 000000000..666cc4b08 --- /dev/null +++ b/edi_endpoint_oca/views/edi_backend_views.xml @@ -0,0 +1,21 @@ + + + + edi.backend + + + + +
+ endpoints configured +
+ + +
diff --git a/edi_endpoint_oca/views/edi_exchange_record_views.xml b/edi_endpoint_oca/views/edi_exchange_record_views.xml new file mode 100644 index 000000000..18535545b --- /dev/null +++ b/edi_endpoint_oca/views/edi_exchange_record_views.xml @@ -0,0 +1,33 @@ + + + + edi.exchange.record + + + + + + + + + + edi.exchange.record + + + + + + + + + + edi.exchange.record + + + + + + + + + From d09c55c50b5b0d014650360dfeeaa79e589bc6b8 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 1 Jun 2023 10:11:52 +0000 Subject: [PATCH 28/62] [UPD] Update edi_endpoint_oca.pot --- edi_endpoint_oca/i18n/edi_endpoint_oca.pot | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/edi_endpoint_oca/i18n/edi_endpoint_oca.pot b/edi_endpoint_oca/i18n/edi_endpoint_oca.pot index 77e7ca812..814c56ebf 100644 --- a/edi_endpoint_oca/i18n/edi_endpoint_oca.pot +++ b/edi_endpoint_oca/i18n/edi_endpoint_oca.pot @@ -13,6 +13,16 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: edi_endpoint_oca +#: model_terms:ir.ui.view,arch_db:edi_endpoint_oca.edi_endpoint_form_view +msgid "Exchanges" +msgstr "" + +#. module: edi_endpoint_oca +#: model:ir.model,name:edi_endpoint_oca.model_edi_exchange_consumer_mixin +msgid "Abstract record where exchange records can be assigned" +msgstr "" + #. module: edi_endpoint_oca #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__active msgid "Active" @@ -74,6 +84,8 @@ msgstr "" #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend__display_name #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend_type__display_name #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__display_name +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin__display_name +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record__display_name msgid "Display Name" msgstr "" @@ -103,6 +115,23 @@ msgstr "" msgid "EDI Endpoints" msgstr "" +#. module: edi_endpoint_oca +#: model:ir.model,name:edi_endpoint_oca.model_edi_exchange_record +msgid "EDI exchange Record" +msgstr "" + +#. module: edi_endpoint_oca +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin__origin_edi_endpoint_id +msgid "EDI origin endpoint" +msgstr "" + +#. module: edi_endpoint_oca +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record__edi_endpoint_id +#: model_terms:ir.ui.view,arch_db:edi_endpoint_oca.edi_exchange_record_view_search +#: model_terms:ir.ui.view,arch_db:edi_endpoint_oca.edi_exchange_record_view_tree +msgid "Endpoint" +msgstr "" + #. module: edi_endpoint_oca #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__endpoint_hash msgid "Endpoint Hash" @@ -155,6 +184,8 @@ msgstr "" #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend__id #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend_type__id #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__id +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin__id +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record__id msgid "ID" msgstr "" @@ -167,6 +198,8 @@ msgstr "" #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend____last_update #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend_type____last_update #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint____last_update +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin____last_update +#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record____last_update msgid "Last Modified on" msgstr "" @@ -199,6 +232,12 @@ msgid "" "OFF: record in line with the registry, nothing to do." msgstr "" +#. module: edi_endpoint_oca +#: model:ir.model.fields,help:edi_endpoint_oca.field_edi_exchange_consumer_mixin__origin_edi_endpoint_id +#: model:ir.model.fields,help:edi_endpoint_oca.field_edi_exchange_record__edi_endpoint_id +msgid "Record generated via this endpoint" +msgstr "" + #. module: edi_endpoint_oca #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__registry_sync msgid "Registry Sync" From dbdf1ab2b41d26ee0d79f7c579a4f37fb64d317d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 1 Jun 2023 10:22:31 +0000 Subject: [PATCH 29/62] [UPD] README.rst --- edi_endpoint_oca/README.rst | 9 ++------- edi_endpoint_oca/static/description/index.html | 8 +------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/edi_endpoint_oca/README.rst b/edi_endpoint_oca/README.rst index d236953f2..b19c74827 100644 --- a/edi_endpoint_oca/README.rst +++ b/edi_endpoint_oca/README.rst @@ -7,9 +7,9 @@ EDI endpoint !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status - :alt: Alpha + :alt: Beta .. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 @@ -27,11 +27,6 @@ EDI endpoint Base module allowing configuration of custom endpoints for EDI framework. -.. 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** .. contents:: diff --git a/edi_endpoint_oca/static/description/index.html b/edi_endpoint_oca/static/description/index.html index 3fb667e0c..e7ef8e6bc 100644 --- a/edi_endpoint_oca/static/description/index.html +++ b/edi_endpoint_oca/static/description/index.html @@ -367,14 +367,8 @@

EDI endpoint

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: LGPL-3 OCA/edi Translate me on Weblate Try me on Runbot

+

Beta License: LGPL-3 OCA/edi Translate me on Weblate Try me on Runbot

Base module allowing configuration of custom endpoints for EDI framework.

-
-

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

    From 8f878d6e0436359c39cbb36e0b8e68bcc478d341 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 1 Jun 2023 10:22:31 +0000 Subject: [PATCH 30/62] edi_endpoint_oca 14.0.1.5.0 --- edi_endpoint_oca/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py index c9599a239..da27d4106 100644 --- a/edi_endpoint_oca/__manifest__.py +++ b/edi_endpoint_oca/__manifest__.py @@ -7,7 +7,7 @@ "summary": """ Base module allowing configuration of custom endpoints for EDI framework. """, - "version": "14.0.1.4.0", + "version": "14.0.1.5.0", "development_status": "Beta", "license": "LGPL-3", "website": "https://github.com/OCA/edi", From 21c179c4d026575c35b7b091d0f8d6f75083d90c Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Fri, 9 Jun 2023 14:48:27 +0200 Subject: [PATCH 31/62] edi_endpoint_oca: Migration to 16.0 Moved from OCA/edi repository --- edi_endpoint_oca/__manifest__.py | 4 ++-- .../migrations/14.0.1.4.0/post-migrate.py | 18 ------------------ .../tests/test_edi_endpoint_controller.py | 4 ++-- 3 files changed, 4 insertions(+), 22 deletions(-) delete mode 100644 edi_endpoint_oca/migrations/14.0.1.4.0/post-migrate.py diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py index da27d4106..8e59fcdce 100644 --- a/edi_endpoint_oca/__manifest__.py +++ b/edi_endpoint_oca/__manifest__.py @@ -7,10 +7,10 @@ "summary": """ Base module allowing configuration of custom endpoints for EDI framework. """, - "version": "14.0.1.5.0", + "version": "16.0.1.0.0", "development_status": "Beta", "license": "LGPL-3", - "website": "https://github.com/OCA/edi", + "website": "https://github.com/OCA/edi-framework", "author": "Camptocamp,Odoo Community Association (OCA)", "depends": ["base_edi", "edi_oca", "endpoint"], "data": [ diff --git a/edi_endpoint_oca/migrations/14.0.1.4.0/post-migrate.py b/edi_endpoint_oca/migrations/14.0.1.4.0/post-migrate.py deleted file mode 100644 index 113dd9fc9..000000000 --- a/edi_endpoint_oca/migrations/14.0.1.4.0/post-migrate.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2022 Camptocamp SA (http://www.camptocamp.com) -# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). - -import logging - -from odoo import SUPERUSER_ID, api - -_logger = logging.getLogger(__name__) - - -def migrate(cr, version): - if not version: - return - - env = api.Environment(cr, SUPERUSER_ID, {}) - domain = [("registry_sync", "=", False)] - env["edi.endpoint"].search(domain).write({"registry_sync": True}) - _logger.info("Activate sync for existing EDI endpoints") diff --git a/edi_endpoint_oca/tests/test_edi_endpoint_controller.py b/edi_endpoint_oca/tests/test_edi_endpoint_controller.py index 5bdfa943f..c71a39d9e 100644 --- a/edi_endpoint_oca/tests/test_edi_endpoint_controller.py +++ b/edi_endpoint_oca/tests/test_edi_endpoint_controller.py @@ -5,11 +5,11 @@ import os import unittest -from odoo.tests.common import HttpSavepointCase +from odoo.tests.common import HttpCase @unittest.skipIf(os.getenv("SKIP_HTTP_CASE"), "EDIEndpointHttpCase skipped") -class EDIEndpointHttpCase(HttpSavepointCase): +class EDIEndpointHttpCase(HttpCase): @classmethod def setUpClass(cls): super().setUpClass() From ff572ab8f22de01a6ab733d6da33c8e958bff8eb Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Mon, 18 Dec 2023 10:13:27 +0100 Subject: [PATCH 32/62] edi_endpoint: make pre-commit happy --- edi_endpoint_oca/tests/test_edi_endpoint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/edi_endpoint_oca/tests/test_edi_endpoint.py b/edi_endpoint_oca/tests/test_edi_endpoint.py index 49d033259..4407a9425 100644 --- a/edi_endpoint_oca/tests/test_edi_endpoint.py +++ b/edi_endpoint_oca/tests/test_edi_endpoint.py @@ -9,7 +9,7 @@ class TestEndpoint(CommonEndpoint): @classmethod - def _setup_records(cls): + def _setup_records(cls): # pylint: disable=missing-return super()._setup_records() cls.endpoint = cls.env.ref("edi_endpoint_oca.edi_endpoint_demo_1") From aed4aa74fd1596a855a17d7e83aaeb0677e7d8af Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sun, 4 Feb 2024 11:02:54 +0000 Subject: [PATCH 33/62] [UPD] Update edi_endpoint_oca.pot --- edi_endpoint_oca/i18n/edi_endpoint_oca.pot | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/edi_endpoint_oca/i18n/edi_endpoint_oca.pot b/edi_endpoint_oca/i18n/edi_endpoint_oca.pot index 814c56ebf..6dc3ca91d 100644 --- a/edi_endpoint_oca/i18n/edi_endpoint_oca.pot +++ b/edi_endpoint_oca/i18n/edi_endpoint_oca.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -45,6 +45,7 @@ msgid "Backend Type" msgstr "" #. module: edi_endpoint_oca +#. odoo-python #: code:addons/edi_endpoint_oca/models/edi_endpoint.py:0 #, python-format msgid "Backend and exchange type are mandatory" @@ -81,11 +82,7 @@ msgid "Csrf" msgstr "" #. module: edi_endpoint_oca -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend__display_name -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend_type__display_name #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__display_name -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin__display_name -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record__display_name msgid "Display Name" msgstr "" @@ -160,6 +157,7 @@ msgid "Exchange type" msgstr "" #. module: edi_endpoint_oca +#. odoo-python #: code:addons/edi_endpoint_oca/models/edi_endpoint.py:0 #, python-format msgid "Exchange type not compatible with selected backend type." @@ -181,11 +179,7 @@ msgid "Group By" msgstr "" #. module: edi_endpoint_oca -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend__id -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend_type__id #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__id -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin__id -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record__id msgid "ID" msgstr "" @@ -195,11 +189,7 @@ msgid "Identify the route with its main params" msgstr "" #. module: edi_endpoint_oca -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend____last_update -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_backend_type____last_update #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint____last_update -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_consumer_mixin____last_update -#: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_exchange_record____last_update msgid "Last Modified on" msgstr "" @@ -274,6 +264,7 @@ msgid "Sync registry" msgstr "" #. module: edi_endpoint_oca +#. odoo-python #: code:addons/edi_endpoint_oca/models/edi_backend.py:0 #, python-format msgid "" From cc950652e7940af9caf7117b86bd5a16953574d9 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 4 Feb 2024 11:05:40 +0000 Subject: [PATCH 34/62] [BOT] post-merge updates --- edi_endpoint_oca/README.rst | 29 +++++++------ .../static/description/index.html | 43 ++++++++++--------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/edi_endpoint_oca/README.rst b/edi_endpoint_oca/README.rst index b19c74827..860e163cc 100644 --- a/edi_endpoint_oca/README.rst +++ b/edi_endpoint_oca/README.rst @@ -2,10 +2,13 @@ EDI endpoint ============ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:358ca4c31dd9912d6c53e9b3060f60785713c519fb4b97267c1a3dc3e426f6de + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -13,17 +16,17 @@ EDI endpoint .. |badge2| image:: https://img.shields.io/badge/licence-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%2Fedi-lightgray.png?logo=github - :target: https://github.com/OCA/edi/tree/14.0/edi_endpoint_oca - :alt: OCA/edi +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi--framework-lightgray.png?logo=github + :target: https://github.com/OCA/edi-framework/tree/16.0/edi_endpoint_oca + :alt: OCA/edi-framework .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/edi-14-0/edi-14-0-edi_endpoint_oca + :target: https://translation.odoo-community.org/projects/edi-framework-16-0/edi-framework-16-0-edi_endpoint_oca :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/226/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Base module allowing configuration of custom endpoints for EDI framework. @@ -40,10 +43,10 @@ Go to "EDI -> Config -> Endpoints". Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +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 smashing it by providing a detailed and welcomed -`feedback `_. +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. @@ -73,6 +76,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/edi `_ project on GitHub. +This module is part of the `OCA/edi-framework `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/edi_endpoint_oca/static/description/index.html b/edi_endpoint_oca/static/description/index.html index e7ef8e6bc..0a8cfb0b0 100644 --- a/edi_endpoint_oca/static/description/index.html +++ b/edi_endpoint_oca/static/description/index.html @@ -1,20 +1,19 @@ - - + EDI endpoint -
    -

    EDI endpoint

    +
    + + +Odoo Community Association + +
    +

    EDI endpoint

    -

    Beta License: LGPL-3 OCA/edi-framework Translate me on Weblate Try me on Runboat

    +

    Beta License: LGPL-3 OCA/edi-framework Translate me on Weblate Try me on Runboat

    Base module allowing configuration of custom endpoints for EDI framework.

    Table of contents

    @@ -386,11 +391,11 @@

    EDI endpoint

-

Configuration

+

Configuration

Go to “EDI -> Config -> Endpoints”.

-

Bug Tracker

+

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 @@ -398,21 +403,21 @@

Bug Tracker

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

+ From 2bb3b2d5e118e200ef76056924cca3450ba5a96b Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Fri, 29 Aug 2025 19:23:29 +0200 Subject: [PATCH 56/62] [IMP] edi_endpoint_oca: Adapt to new edi_core_oca logic --- edi_endpoint_oca/__manifest__.py | 2 +- edi_endpoint_oca/demo/edi_backend_demo.xml | 6 +++--- edi_endpoint_oca/models/edi_endpoint.py | 2 +- edi_endpoint_oca/views/edi_backend_views.xml | 2 +- edi_endpoint_oca/views/edi_endpoint_views.xml | 2 +- edi_endpoint_oca/views/edi_exchange_record_views.xml | 6 +++--- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py index bdafbe81b..6d826f2b0 100644 --- a/edi_endpoint_oca/__manifest__.py +++ b/edi_endpoint_oca/__manifest__.py @@ -12,7 +12,7 @@ "license": "LGPL-3", "website": "https://github.com/OCA/edi-framework", "author": "Camptocamp,Odoo Community Association (OCA)", - "depends": ["base_edi", "edi_oca", "endpoint"], + "depends": ["base_edi", "edi_core_oca", "endpoint"], "data": [ "data/server_action.xml", "security/ir.model.access.csv", diff --git a/edi_endpoint_oca/demo/edi_backend_demo.xml b/edi_endpoint_oca/demo/edi_backend_demo.xml index e842ec5d1..cea2db0e8 100644 --- a/edi_endpoint_oca/demo/edi_backend_demo.xml +++ b/edi_endpoint_oca/demo/edi_backend_demo.xml @@ -2,19 +2,19 @@ EDI backend with endpoints DEMO - + EDI exchange demo demo_endpoint - + input - + EDI Demo Endpoint 1 diff --git a/edi_endpoint_oca/models/edi_endpoint.py b/edi_endpoint_oca/models/edi_endpoint.py index 5d41c7dcb..83984b73e 100644 --- a/edi_endpoint_oca/models/edi_endpoint.py +++ b/edi_endpoint_oca/models/edi_endpoint.py @@ -73,7 +73,7 @@ def _handle_request(self, request): def action_view_edi_records(self): self.ensure_one() - xmlid = "edi_oca.act_open_edi_exchange_record_view" + xmlid = "edi_core_oca.act_open_edi_exchange_record_view" action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) action["domain"] = [("edi_endpoint_id", "=", self.id)] # Purge default search filters from ctx to avoid hiding records diff --git a/edi_endpoint_oca/views/edi_backend_views.xml b/edi_endpoint_oca/views/edi_backend_views.xml index 666cc4b08..8838b1930 100644 --- a/edi_endpoint_oca/views/edi_backend_views.xml +++ b/edi_endpoint_oca/views/edi_backend_views.xml @@ -2,7 +2,7 @@ edi.backend - + diff --git a/edi_endpoint_oca/views/edi_endpoint_views.xml b/edi_endpoint_oca/views/edi_endpoint_views.xml index 92a6dbbb3..979e8a1f4 100644 --- a/edi_endpoint_oca/views/edi_endpoint_views.xml +++ b/edi_endpoint_oca/views/edi_endpoint_views.xml @@ -92,7 +92,7 @@ EDI Endpoints - + diff --git a/edi_endpoint_oca/views/edi_exchange_record_views.xml b/edi_endpoint_oca/views/edi_exchange_record_views.xml index 90b5eefe4..5888ebdcb 100644 --- a/edi_endpoint_oca/views/edi_exchange_record_views.xml +++ b/edi_endpoint_oca/views/edi_exchange_record_views.xml @@ -2,7 +2,7 @@ edi.exchange.record - + @@ -12,7 +12,7 @@ edi.exchange.record - + @@ -22,7 +22,7 @@ edi.exchange.record - + From 10aceb83442c96ccfccf57045d32bcb415b84bbc Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Sep 2025 15:30:38 +0000 Subject: [PATCH 57/62] [BOT] post-merge updates --- edi_endpoint_oca/README.rst | 2 +- edi_endpoint_oca/__manifest__.py | 2 +- edi_endpoint_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/edi_endpoint_oca/README.rst b/edi_endpoint_oca/README.rst index 2bdf65fa4..f0e950461 100644 --- a/edi_endpoint_oca/README.rst +++ b/edi_endpoint_oca/README.rst @@ -11,7 +11,7 @@ EDI endpoint !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:46a3d47e5220281e3f20ed22a7e4176d33cad00ffb0893b106123f6e1197b8b2 + !! source digest: sha256:61e5982426475fcce40969c5f34bc4b701092624ecdde5b95cca64daecb36de5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py index 6d826f2b0..cf2f4795d 100644 --- a/edi_endpoint_oca/__manifest__.py +++ b/edi_endpoint_oca/__manifest__.py @@ -7,7 +7,7 @@ "summary": """ Base module allowing configuration of custom endpoints for EDI framework. """, - "version": "18.0.1.0.1", + "version": "18.0.1.0.2", "development_status": "Beta", "license": "LGPL-3", "website": "https://github.com/OCA/edi-framework", diff --git a/edi_endpoint_oca/static/description/index.html b/edi_endpoint_oca/static/description/index.html index 8ca0c2ccf..b1477ff34 100644 --- a/edi_endpoint_oca/static/description/index.html +++ b/edi_endpoint_oca/static/description/index.html @@ -372,7 +372,7 @@

EDI endpoint

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:46a3d47e5220281e3f20ed22a7e4176d33cad00ffb0893b106123f6e1197b8b2 +!! source digest: sha256:61e5982426475fcce40969c5f34bc4b701092624ecdde5b95cca64daecb36de5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: LGPL-3 OCA/edi-framework Translate me on Weblate Try me on Runboat

Base module allowing configuration of custom endpoints for EDI From b651e81ec125b0f2d78406793b7f2f513c2d3174 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 7 Oct 2025 07:01:21 +0000 Subject: [PATCH 58/62] Translated using Weblate (Italian) Currently translated at 100.0% (51 of 51 strings) Translation: edi-framework-18.0/edi-framework-18.0-edi_endpoint_oca Translate-URL: https://translation.odoo-community.org/projects/edi-framework-18-0/edi-framework-18-0-edi_endpoint_oca/it/ --- edi_endpoint_oca/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/edi_endpoint_oca/i18n/it.po b/edi_endpoint_oca/i18n/it.po index cdda80b6b..03ab8f1b4 100644 --- a/edi_endpoint_oca/i18n/it.po +++ b/edi_endpoint_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-15 14:06+0000\n" +"PO-Revision-Date: 2025-10-07 09:43+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Weblate 5.10.4\n" #. module: edi_endpoint_oca #: model_terms:ir.ui.view,arch_db:edi_endpoint_oca.edi_endpoint_form_view @@ -24,7 +24,7 @@ msgstr "Scambi" #. module: edi_endpoint_oca #: model:ir.model,name:edi_endpoint_oca.model_edi_exchange_consumer_mixin msgid "Abstract record where exchange records can be assigned" -msgstr "Record astratto dove i recod di scambio possono essere assegnati" +msgstr "Record astratto dove i record di scambio possono essere assegnati" #. module: edi_endpoint_oca #: model:ir.model.fields,field_description:edi_endpoint_oca.field_edi_endpoint__active From 0fae91bce23d8c734affe245ac338801e5b33a28 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Tue, 14 Oct 2025 09:39:03 +0200 Subject: [PATCH 59/62] edi_endpoint: fix create_exchange_record helper Setting the file content after creating the record might lead to errors when the exchange type is has quick_exec enabled. That's because the backend will try to process the file immediately on create but there's no file content yet. Just populate the file content right away. --- edi_endpoint_oca/models/edi_endpoint.py | 14 +++++++++----- edi_endpoint_oca/tests/test_edi_endpoint.py | 7 +++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/edi_endpoint_oca/models/edi_endpoint.py b/edi_endpoint_oca/models/edi_endpoint.py index 83984b73e..06e7bff26 100644 --- a/edi_endpoint_oca/models/edi_endpoint.py +++ b/edi_endpoint_oca/models/edi_endpoint.py @@ -1,6 +1,8 @@ # Copyright 2021 Camptocamp SA # @author: Simone Orsi # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +import base64 + import werkzeug from odoo import _, api, exceptions, fields, models @@ -32,18 +34,20 @@ class EDIEndpoint(models.Model): domain="[('backend_type_id','=', backend_type_id)]", ) - # TODO: add unit tests - - def create_exchange_record(self, file_content=None, **vals): + def create_exchange_record(self, file_content=None, encoding="utf-8", **vals): """Create an EDI exchange record from current endpoint. Just a shortcut. """ self._check_endpoint_ready() vals["edi_endpoint_id"] = self.id - rec = self.backend_id.create_record(self.exchange_type_id.code, vals) + if file_content: - rec._set_file_content(file_content) + if not isinstance(file_content, bytes): + file_content = bytes(file_content, encoding) + vals["exchange_file"] = base64.b64encode(file_content) + + rec = self.backend_id.create_record(self.exchange_type_id.code, vals) return rec def _check_endpoint_ready(self, request=False): diff --git a/edi_endpoint_oca/tests/test_edi_endpoint.py b/edi_endpoint_oca/tests/test_edi_endpoint.py index 4407a9425..ca4ed1d01 100644 --- a/edi_endpoint_oca/tests/test_edi_endpoint.py +++ b/edi_endpoint_oca/tests/test_edi_endpoint.py @@ -2,6 +2,8 @@ # @author: Simone Orsi # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +import base64 + from odoo import exceptions from odoo.addons.endpoint.tests.common import CommonEndpoint @@ -53,3 +55,8 @@ def test_archive_check(self): def test_sync(self): # FIXME: just testing if the method here is available on GH self.endpoint._handle_registry_sync() + + def test_create_exchange_record_with_file_content(self): + content = "This is a test" + rec = self.endpoint.create_exchange_record(file_content=content) + self.assertEqual(base64.b64decode(rec.exchange_file).decode("utf-8"), content) From b93216a72e8e55cde5c0c1218718137e0f665f1c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 26 Nov 2025 15:03:51 +0000 Subject: [PATCH 60/62] [BOT] post-merge updates --- edi_endpoint_oca/README.rst | 2 +- edi_endpoint_oca/__manifest__.py | 2 +- edi_endpoint_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/edi_endpoint_oca/README.rst b/edi_endpoint_oca/README.rst index f0e950461..88e65de9d 100644 --- a/edi_endpoint_oca/README.rst +++ b/edi_endpoint_oca/README.rst @@ -11,7 +11,7 @@ EDI endpoint !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:61e5982426475fcce40969c5f34bc4b701092624ecdde5b95cca64daecb36de5 + !! source digest: sha256:be80edcaf6371c867bb601aeac3e28356218aef57bdf10256ac79c9fd3ab28f3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py index cf2f4795d..778915393 100644 --- a/edi_endpoint_oca/__manifest__.py +++ b/edi_endpoint_oca/__manifest__.py @@ -7,7 +7,7 @@ "summary": """ Base module allowing configuration of custom endpoints for EDI framework. """, - "version": "18.0.1.0.2", + "version": "18.0.1.0.3", "development_status": "Beta", "license": "LGPL-3", "website": "https://github.com/OCA/edi-framework", diff --git a/edi_endpoint_oca/static/description/index.html b/edi_endpoint_oca/static/description/index.html index b1477ff34..52824a930 100644 --- a/edi_endpoint_oca/static/description/index.html +++ b/edi_endpoint_oca/static/description/index.html @@ -372,7 +372,7 @@

EDI endpoint

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:61e5982426475fcce40969c5f34bc4b701092624ecdde5b95cca64daecb36de5 +!! source digest: sha256:be80edcaf6371c867bb601aeac3e28356218aef57bdf10256ac79c9fd3ab28f3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: LGPL-3 OCA/edi-framework Translate me on Weblate Try me on Runboat

Base module allowing configuration of custom endpoints for EDI From be0ee584cc56c6804529a43aea9f56480ce150bc Mon Sep 17 00:00:00 2001 From: JordiMForgeFlow Date: Mon, 30 Mar 2026 15:56:10 +0200 Subject: [PATCH 61/62] [IMP] edi_endpoint_oca: pre-commit stuff --- requirements.txt | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 4ec60a70e..000000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# generated from manifests external_dependencies -PyYAML -openupgradelib From e173e7add3179b59e5685e64f6bf65608e6cb8f0 Mon Sep 17 00:00:00 2001 From: JordiMForgeFlow Date: Mon, 30 Mar 2026 16:05:28 +0200 Subject: [PATCH 62/62] [MIG] edi_endpoint_oca: Migration to V19 --- edi_endpoint_oca/README.rst | 10 ++++----- edi_endpoint_oca/__manifest__.py | 2 +- .../migrations/18.0.1.0.0/post-migrate.py | 22 ------------------- edi_endpoint_oca/models/edi_backend.py | 21 +++++++++--------- edi_endpoint_oca/models/edi_endpoint.py | 8 ++++--- .../static/description/index.html | 6 ++--- edi_endpoint_oca/views/edi_endpoint_views.xml | 2 +- 7 files changed, 26 insertions(+), 45 deletions(-) delete mode 100644 edi_endpoint_oca/migrations/18.0.1.0.0/post-migrate.py diff --git a/edi_endpoint_oca/README.rst b/edi_endpoint_oca/README.rst index 88e65de9d..19fe1211f 100644 --- a/edi_endpoint_oca/README.rst +++ b/edi_endpoint_oca/README.rst @@ -21,13 +21,13 @@ EDI endpoint :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi--framework-lightgray.png?logo=github - :target: https://github.com/OCA/edi-framework/tree/18.0/edi_endpoint_oca + :target: https://github.com/OCA/edi-framework/tree/19.0/edi_endpoint_oca :alt: OCA/edi-framework .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/edi-framework-18-0/edi-framework-18-0-edi_endpoint_oca + :target: https://translation.odoo-community.org/projects/edi-framework-19-0/edi-framework-19-0-edi_endpoint_oca :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/edi-framework&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -51,7 +51,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -81,6 +81,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/edi-framework `_ project on GitHub. +This module is part of the `OCA/edi-framework `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/edi_endpoint_oca/__manifest__.py b/edi_endpoint_oca/__manifest__.py index 778915393..ac1014199 100644 --- a/edi_endpoint_oca/__manifest__.py +++ b/edi_endpoint_oca/__manifest__.py @@ -7,7 +7,7 @@ "summary": """ Base module allowing configuration of custom endpoints for EDI framework. """, - "version": "18.0.1.0.3", + "version": "19.0.1.0.0", "development_status": "Beta", "license": "LGPL-3", "website": "https://github.com/OCA/edi-framework", diff --git a/edi_endpoint_oca/migrations/18.0.1.0.0/post-migrate.py b/edi_endpoint_oca/migrations/18.0.1.0.0/post-migrate.py deleted file mode 100644 index 71d465492..000000000 --- a/edi_endpoint_oca/migrations/18.0.1.0.0/post-migrate.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2025 Camptocamp SA -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) - -import logging - -from odoo import SUPERUSER_ID, api - -_logger = logging.getLogger(__name__) - - -def migrate(cr, version): - """Force update endpoint_route table. - - New params like `readonly` should be added to the stored routes. - """ - if not version: - return - env = api.Environment(cr, SUPERUSER_ID, {}) - model = env["edi.endpoint"] - records = model.sudo().search([]) - records._handle_registry_sync() - _logger.info("Forced endpoint route sync on %s records", model._name) diff --git a/edi_endpoint_oca/models/edi_backend.py b/edi_endpoint_oca/models/edi_backend.py index e54118d4c..feefcb883 100644 --- a/edi_endpoint_oca/models/edi_backend.py +++ b/edi_endpoint_oca/models/edi_backend.py @@ -2,7 +2,7 @@ # @author: Simone Orsi # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -from odoo import _, api, exceptions, fields, models +from odoo import api, exceptions, fields, models class EDIBackend(models.Model): @@ -17,14 +17,14 @@ class EDIBackend(models.Model): @api.depends("endpoint_ids.active") def _compute_endpoints_count(self): - data = self.env["edi.endpoint"].read_group( - [("backend_id", "in", self.ids), ("active", "=", True)], - ["backend_id"], - ["backend_id"], + data = self.env["edi.endpoint"]._read_group( + domain=[("backend_id", "in", self.ids), ("active", "=", True)], + groupby=["backend_id"], + aggregates=["__count"], ) - by_backend_id = {x["backend_id"][0]: x["backend_id_count"] for x in data} + by_backend_id = {backend.id: count for backend, count in data} for record in self: - record.endpoints_count = by_backend_id.get(record.id) + record.endpoints_count = by_backend_id.get(record.id, 0) def action_manage_endpoints(self): xmlid = "edi_endpoint_oca.edi_endpoint_act_window" @@ -52,7 +52,8 @@ def _check_archive(self): raise exceptions.UserError(self._check_archive_error_msg(to_check)) def _check_archive_error_msg(self, backends): - return _( + return self.env._( "The following backend(s) have endpoints attached. " - "Please archive them before:\n\n%s" - ) % "\n- ".join([x.name for x in backends]) + "Please archive them before:\n\n%s", + "\n- ".join([x.name for x in backends]), + ) diff --git a/edi_endpoint_oca/models/edi_endpoint.py b/edi_endpoint_oca/models/edi_endpoint.py index 06e7bff26..cff7b9e46 100644 --- a/edi_endpoint_oca/models/edi_endpoint.py +++ b/edi_endpoint_oca/models/edi_endpoint.py @@ -5,7 +5,7 @@ import werkzeug -from odoo import _, api, exceptions, fields, models +from odoo import api, exceptions, fields, models from odoo.tools import safe_eval @@ -52,7 +52,7 @@ def create_exchange_record(self, file_content=None, encoding="utf-8", **vals): def _check_endpoint_ready(self, request=False): if not self.backend_id or not self.exchange_type_id: - msg = _("Backend and exchange type are mandatory") + msg = self.env._("Backend and exchange type are mandatory") if request: self._logger.error(msg) raise werkzeug.exceptions.BadRequest("Endpoint mis-configured") @@ -68,7 +68,9 @@ def _check_backend_type(self): and not rec.backend_type_id == rec.exchange_type_id.backend_type_id ): raise exceptions.UserError( - _("Exchange type not compatible with selected backend type.") + self.env._( + "Exchange type not compatible with selected backend type." + ) ) def _handle_request(self, request): diff --git a/edi_endpoint_oca/static/description/index.html b/edi_endpoint_oca/static/description/index.html index 52824a930..73a88b5e7 100644 --- a/edi_endpoint_oca/static/description/index.html +++ b/edi_endpoint_oca/static/description/index.html @@ -374,7 +374,7 @@

EDI endpoint

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:be80edcaf6371c867bb601aeac3e28356218aef57bdf10256ac79c9fd3ab28f3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: LGPL-3 OCA/edi-framework Translate me on Weblate Try me on Runboat

+

Beta License: LGPL-3 OCA/edi-framework Translate me on Weblate Try me on Runboat

Base module allowing configuration of custom endpoints for EDI framework.

Table of contents

@@ -399,7 +399,7 @@

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.

+feedback.

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

@@ -425,7 +425,7 @@

Maintainers

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/edi-framework project on GitHub.

+

This module is part of the OCA/edi-framework project on GitHub.

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

diff --git a/edi_endpoint_oca/views/edi_endpoint_views.xml b/edi_endpoint_oca/views/edi_endpoint_views.xml index 979e8a1f4..d8b15670f 100644 --- a/edi_endpoint_oca/views/edi_endpoint_views.xml +++ b/edi_endpoint_oca/views/edi_endpoint_views.xml @@ -48,7 +48,7 @@ - +