From 090f52c9ab93c4b2e139a59bcd0062e748cf4dda Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Wed, 19 Oct 2022 00:04:51 +0200 Subject: [PATCH 1/5] [ADD] base_external_dbsource_sap_hana: New module to connect to SAP Hana using Alchemy TT38753 [UPD] Update base_external_dbsource_sap_hana.pot [UPD] README.rst --- base_external_dbsource_sap_hana/README.rst | 108 +++++ base_external_dbsource_sap_hana/__init__.py | 1 + .../__manifest__.py | 14 + .../demo/base_external_dbsource.xml | 9 + .../i18n/base_external_dbsource_sap_hana.pot | 19 + .../models/__init__.py | 1 + .../models/base_external_dbsource.py | 37 ++ .../readme/CONFIGURE.rst | 4 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 2 + .../readme/INSTALL.rst | 3 + .../readme/USAGE.rst | 9 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 456 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_base_external_dbsource_sap_hana.py | 56 +++ 16 files changed, 724 insertions(+) create mode 100644 base_external_dbsource_sap_hana/README.rst create mode 100644 base_external_dbsource_sap_hana/__init__.py create mode 100644 base_external_dbsource_sap_hana/__manifest__.py create mode 100644 base_external_dbsource_sap_hana/demo/base_external_dbsource.xml create mode 100644 base_external_dbsource_sap_hana/i18n/base_external_dbsource_sap_hana.pot create mode 100644 base_external_dbsource_sap_hana/models/__init__.py create mode 100644 base_external_dbsource_sap_hana/models/base_external_dbsource.py create mode 100644 base_external_dbsource_sap_hana/readme/CONFIGURE.rst create mode 100644 base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst create mode 100644 base_external_dbsource_sap_hana/readme/DESCRIPTION.rst create mode 100644 base_external_dbsource_sap_hana/readme/INSTALL.rst create mode 100644 base_external_dbsource_sap_hana/readme/USAGE.rst create mode 100644 base_external_dbsource_sap_hana/static/description/icon.png create mode 100644 base_external_dbsource_sap_hana/static/description/index.html create mode 100644 base_external_dbsource_sap_hana/tests/__init__.py create mode 100644 base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py diff --git a/base_external_dbsource_sap_hana/README.rst b/base_external_dbsource_sap_hana/README.rst new file mode 100644 index 000000000..5b1e2756b --- /dev/null +++ b/base_external_dbsource_sap_hana/README.rst @@ -0,0 +1,108 @@ +===================================== +External Database Source - SAP - Hana +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b85a80a6fdb648c130cc6fdce284d503c8bc94a3878ddc2c51dc24f1d0764481 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :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 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github + :target: https://github.com/OCA/server-backend/tree/15.0/base_external_dbsource_sap_hana + :alt: OCA/server-backend +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-backend-15-0/server-backend-15-0-base_external_dbsource_sap_hana + :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/server-backend&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends ``base_external_dbsource``, allowing you to connect to +foreign SAP HANA databases using SQLAlchemy. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +To install this module, you need to: + +* Install ``sqlalchemy_hana`` and ``hdbcli`` python libraries + +Configuration +============= + +To configure this module, you need to: + +#. Database sources can be configured in Settings > Technical > + Database Structure > Database sources. + +Usage +===== + +To use this module: + +* Go to Settings > Technical > Database Structure > Database Sources +* Click on Create to enter the following information: + +* Datasource name?? +* Pasword +* Connector: Choose the database to which you want to connect +* Connection string: Specify how to connect to database + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `__: + + * Carlos Dauden + * Sergio Teruel + +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. + +This module is part of the `OCA/server-backend `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_external_dbsource_sap_hana/__init__.py b/base_external_dbsource_sap_hana/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/base_external_dbsource_sap_hana/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/base_external_dbsource_sap_hana/__manifest__.py b/base_external_dbsource_sap_hana/__manifest__.py new file mode 100644 index 000000000..c8e724c43 --- /dev/null +++ b/base_external_dbsource_sap_hana/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2022 Tecnativa - Sergio Teruel +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). +{ + "name": "External Database Source - SAP - Hana", + "version": "15.0.1.0.0", + "category": "Tools", + "author": "Tecnativa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-backend", + "license": "LGPL-3", + "depends": ["base_external_dbsource"], + "external_dependencies": {"python": ["sqlalchemy", "sqlalchemy-hana", "hdbcli"]}, + "demo": ["demo/base_external_dbsource.xml"], + "installable": True, +} diff --git a/base_external_dbsource_sap_hana/demo/base_external_dbsource.xml b/base_external_dbsource_sap_hana/demo/base_external_dbsource.xml new file mode 100644 index 000000000..23fc1c5a8 --- /dev/null +++ b/base_external_dbsource_sap_hana/demo/base_external_dbsource.xml @@ -0,0 +1,9 @@ + + + + SAP Hana Demo + hana://username:password@example.de:30015 + password + sap_hana + + diff --git a/base_external_dbsource_sap_hana/i18n/base_external_dbsource_sap_hana.pot b/base_external_dbsource_sap_hana/i18n/base_external_dbsource_sap_hana.pot new file mode 100644 index 000000000..1b9695847 --- /dev/null +++ b/base_external_dbsource_sap_hana/i18n/base_external_dbsource_sap_hana.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_external_dbsource_sap_hana +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_external_dbsource_sap_hana +#: model:ir.model,name:base_external_dbsource_sap_hana.model_base_external_dbsource +msgid "External Database Sources" +msgstr "" diff --git a/base_external_dbsource_sap_hana/models/__init__.py b/base_external_dbsource_sap_hana/models/__init__.py new file mode 100644 index 000000000..91032fcb6 --- /dev/null +++ b/base_external_dbsource_sap_hana/models/__init__.py @@ -0,0 +1 @@ +from . import base_external_dbsource diff --git a/base_external_dbsource_sap_hana/models/base_external_dbsource.py b/base_external_dbsource_sap_hana/models/base_external_dbsource.py new file mode 100644 index 000000000..d386558ac --- /dev/null +++ b/base_external_dbsource_sap_hana/models/base_external_dbsource.py @@ -0,0 +1,37 @@ +# Copyright 2022 Tecnativa - Sergio Teruel +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + + +import sqlalchemy + +from odoo import models + +from odoo.addons.base_external_dbsource.models import base_external_dbsource + +base_external_dbsource.BaseExternalDbsource.CONNECTORS.append(("sap_hana", "SAP-Hana")) + + +class BaseExternalDbsource(models.Model): + """It provides logic for connection to a SAP Hana data source.""" + + _inherit = "base.external.dbsource" + + def connection_close_sap_hana(self, connection): + return connection.close() + + def connection_open_sap_hana(self): + return sqlalchemy.create_engine(self.conn_string_full).connect() + + def execute_sap_hana(self, sqlquery, sqlparams, metadata): + # FIXME: Duplicated method in modules to be consolidated in base + rows, cols = list(), list() + for record in self: + with record.connection_open() as connection: + if sqlparams is None: + cur = connection.execute(sqlquery) + else: + cur = connection.execute(sqlquery, sqlparams) + if metadata: + cols = list(cur.keys()) + rows = [r for r in cur] + return rows, cols diff --git a/base_external_dbsource_sap_hana/readme/CONFIGURE.rst b/base_external_dbsource_sap_hana/readme/CONFIGURE.rst new file mode 100644 index 000000000..f8fb7dd36 --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +To configure this module, you need to: + +#. Database sources can be configured in Settings > Technical > + Database Structure > Database sources. diff --git a/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst b/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..46fa878cd --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `__: + + * Carlos Dauden + * Sergio Teruel diff --git a/base_external_dbsource_sap_hana/readme/DESCRIPTION.rst b/base_external_dbsource_sap_hana/readme/DESCRIPTION.rst new file mode 100644 index 000000000..f9f7b12dc --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends ``base_external_dbsource``, allowing you to connect to +foreign SAP HANA databases using SQLAlchemy. diff --git a/base_external_dbsource_sap_hana/readme/INSTALL.rst b/base_external_dbsource_sap_hana/readme/INSTALL.rst new file mode 100644 index 000000000..4a976e6f1 --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/INSTALL.rst @@ -0,0 +1,3 @@ +To install this module, you need to: + +* Install ``sqlalchemy_hana`` and ``hdbcli`` python libraries diff --git a/base_external_dbsource_sap_hana/readme/USAGE.rst b/base_external_dbsource_sap_hana/readme/USAGE.rst new file mode 100644 index 000000000..e91b212b6 --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/USAGE.rst @@ -0,0 +1,9 @@ +To use this module: + +* Go to Settings > Technical > Database Structure > Database Sources +* Click on Create to enter the following information: + +* Datasource name?? +* Pasword +* Connector: Choose the database to which you want to connect +* Connection string: Specify how to connect to database diff --git a/base_external_dbsource_sap_hana/static/description/icon.png b/base_external_dbsource_sap_hana/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/base_external_dbsource_sap_hana/static/description/index.html b/base_external_dbsource_sap_hana/static/description/index.html new file mode 100644 index 000000000..2e68d4314 --- /dev/null +++ b/base_external_dbsource_sap_hana/static/description/index.html @@ -0,0 +1,456 @@ + + + + + + +External Database Source - SAP - Hana + + + +
+

External Database Source - SAP - Hana

+ + +

Beta License: LGPL-3 OCA/server-backend Translate me on Weblate Try me on Runboat

+

This module extends base_external_dbsource, allowing you to connect to +foreign SAP HANA databases using SQLAlchemy.

+

Table of contents

+ +
+

Installation

+

To install this module, you need to:

+
    +
  • Install sqlalchemy_hana and hdbcli python libraries
  • +
+
+
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Database sources can be configured in Settings > Technical > +Database Structure > Database sources.
  2. +
+
+
+

Usage

+

To use this module:

+
    +
  • Go to Settings > Technical > Database Structure > Database Sources
  • +
  • Click on Create to enter the following information:
  • +
  • Datasource name??
  • +
  • Pasword
  • +
  • Connector: Choose the database to which you want to connect
  • +
  • Connection string: Specify how to connect to database
  • +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Carlos Dauden
    • +
    • Sergio Teruel
    • +
    +
  • +
+
+
+

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.

+

This module is part of the OCA/server-backend project on GitHub.

+

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

+
+
+
+ + diff --git a/base_external_dbsource_sap_hana/tests/__init__.py b/base_external_dbsource_sap_hana/tests/__init__.py new file mode 100644 index 000000000..c48ef497a --- /dev/null +++ b/base_external_dbsource_sap_hana/tests/__init__.py @@ -0,0 +1 @@ +from . import test_base_external_dbsource_sap_hana diff --git a/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py b/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py new file mode 100644 index 000000000..689044948 --- /dev/null +++ b/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py @@ -0,0 +1,56 @@ +# Copyright 2022 Tecnativa - Sergio Teruel +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from unittest import mock + +from odoo.tests import common + +ADAPTER = "odoo.addons.base_external_dbsource_sap_hana.models.base_external_dbsource.SAPhanaDB" + + +class TestBaseExternalDbsource(common.TransactionCase): + def setUp(self): + super(TestBaseExternalDbsource, self).setUp() + self.dbsource = self.env.ref("base_external_dbsource_sap_hana.demo_sap_hana") + + def _test_adapter_method( + self, + method_name, + side_effect=None, + return_value=None, + create=False, + args=None, + kwargs=None, + ): + if args is None: + args = [] + if kwargs is None: + kwargs = {} + adapter = "%s_sap_hana" % method_name + with mock.patch.object(type(self.dbsource), adapter, create=create) as adapter: + if side_effect is not None: + adapter.side_effect = side_effect + elif return_value is not None: + adapter.return_value = return_value + res = getattr(self.dbsource, method_name)(*args, **kwargs) + return res, adapter + + def test_connection_close_sap_hana(self): + """It should close the connection""" + args = [mock.MagicMock()] + res, adapter = self._test_adapter_method("connection_close", args=args) + adapter.assert_called_once_with(args[0]) + + def test_connection_open_sap_hana(self): + """It should call SQLAlchemy open""" + with mock.patch.object(type(self.dbsource), "connection_open") as connection: + res = self.dbsource.conn_open() + self.assertEqual(res, connection().__enter__()) + + def test_excecute_sap_hana(self): + """It should pass args to SQLAlchemy execute""" + expect = "sqlquery", "sqlparams", "metadata" + with mock.patch.object(type(self.dbsource), "execute_sap_hana") as execute: + execute.return_value = "rows", "cols" + self.dbsource.execute(*expect) + execute.assert_called_once_with(*expect) From 45051cc788ee466c60b202a2dcd432d85c90e1f8 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Fri, 15 Sep 2023 14:43:17 +0000 Subject: [PATCH 2/5] Added translation using Weblate (Spanish) Translated using Weblate (Spanish) Currently translated at 100.0% (1 of 1 strings) Translation: server-backend-15.0/server-backend-15.0-base_external_dbsource_sap_hana Translate-URL: https://translation.odoo-community.org/projects/server-backend-15-0/server-backend-15-0-base_external_dbsource_sap_hana/es/ --- base_external_dbsource_sap_hana/i18n/es.po | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 base_external_dbsource_sap_hana/i18n/es.po diff --git a/base_external_dbsource_sap_hana/i18n/es.po b/base_external_dbsource_sap_hana/i18n/es.po new file mode 100644 index 000000000..6b771afd1 --- /dev/null +++ b/base_external_dbsource_sap_hana/i18n/es.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_external_dbsource_sap_hana +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 07:49+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\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 4.17\n" + +#. module: base_external_dbsource_sap_hana +#: model:ir.model,name:base_external_dbsource_sap_hana.model_base_external_dbsource +msgid "External Database Sources" +msgstr "Fuentes de bases de datos externas" From ed7f42f2001fda3a8980696ff0ff400bfba5ed2a Mon Sep 17 00:00:00 2001 From: Pablo Castelo Date: Sat, 23 May 2026 04:50:41 +0000 Subject: [PATCH 3/5] Added translation using Weblate (Galician) Translated using Weblate (Galician) Currently translated at 100.0% (1 of 1 strings) Translation: server-backend-15.0/server-backend-15.0-base_external_dbsource_sap_hana Translate-URL: https://translation.odoo-community.org/projects/server-backend-15-0/server-backend-15-0-base_external_dbsource_sap_hana/gl/ --- base_external_dbsource_sap_hana/i18n/gl.po | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 base_external_dbsource_sap_hana/i18n/gl.po diff --git a/base_external_dbsource_sap_hana/i18n/gl.po b/base_external_dbsource_sap_hana/i18n/gl.po new file mode 100644 index 000000000..1077cbb91 --- /dev/null +++ b/base_external_dbsource_sap_hana/i18n/gl.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_external_dbsource_sap_hana +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-05-23 07:54+0000\n" +"Last-Translator: Pablo Castelo \n" +"Language-Team: none\n" +"Language: gl\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.15.2\n" + +#. module: base_external_dbsource_sap_hana +#: model:ir.model,name:base_external_dbsource_sap_hana.model_base_external_dbsource +msgid "External Database Sources" +msgstr "Fuentes de bases de datos externas" From 83e1fe45deefc6fb4ca14430da5e49404525a3ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 18 Jun 2026 09:49:23 +0200 Subject: [PATCH 4/5] [IMP] base_external_dbsource_sap_hana: pre-commit auto fixes --- base_external_dbsource_sap_hana/README.rst | 45 +++++++++---------- .../pyproject.toml | 3 ++ .../readme/CONFIGURE.md | 4 ++ .../readme/CONFIGURE.rst | 4 -- .../readme/CONTRIBUTORS.md | 3 ++ .../readme/CONTRIBUTORS.rst | 4 -- .../readme/DESCRIPTION.md | 2 + .../readme/DESCRIPTION.rst | 2 - .../readme/INSTALL.md | 3 ++ .../readme/INSTALL.rst | 3 -- .../readme/USAGE.md | 8 ++++ .../readme/USAGE.rst | 9 ---- .../static/description/index.html | 26 ++++++----- .../test_base_external_dbsource_sap_hana.py | 2 +- requirements.txt | 2 + 15 files changed, 62 insertions(+), 58 deletions(-) create mode 100644 base_external_dbsource_sap_hana/pyproject.toml create mode 100644 base_external_dbsource_sap_hana/readme/CONFIGURE.md delete mode 100644 base_external_dbsource_sap_hana/readme/CONFIGURE.rst create mode 100644 base_external_dbsource_sap_hana/readme/CONTRIBUTORS.md delete mode 100644 base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst create mode 100644 base_external_dbsource_sap_hana/readme/DESCRIPTION.md delete mode 100644 base_external_dbsource_sap_hana/readme/DESCRIPTION.rst create mode 100644 base_external_dbsource_sap_hana/readme/INSTALL.md delete mode 100644 base_external_dbsource_sap_hana/readme/INSTALL.rst create mode 100644 base_external_dbsource_sap_hana/readme/USAGE.md delete mode 100644 base_external_dbsource_sap_hana/readme/USAGE.rst diff --git a/base_external_dbsource_sap_hana/README.rst b/base_external_dbsource_sap_hana/README.rst index 5b1e2756b..3f50213e3 100644 --- a/base_external_dbsource_sap_hana/README.rst +++ b/base_external_dbsource_sap_hana/README.rst @@ -17,19 +17,19 @@ External Database Source - SAP - Hana :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github - :target: https://github.com/OCA/server-backend/tree/15.0/base_external_dbsource_sap_hana + :target: https://github.com/OCA/server-backend/tree/18.0/base_external_dbsource_sap_hana :alt: OCA/server-backend .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-backend-15-0/server-backend-15-0-base_external_dbsource_sap_hana + :target: https://translation.odoo-community.org/projects/server-backend-18-0/server-backend-18-0-base_external_dbsource_sap_hana :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/server-backend&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-backend&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module extends ``base_external_dbsource``, allowing you to connect to -foreign SAP HANA databases using SQLAlchemy. +This module extends ``base_external_dbsource``, allowing you to connect +to foreign SAP HANA databases using SQLAlchemy. **Table of contents** @@ -41,28 +41,27 @@ Installation To install this module, you need to: -* Install ``sqlalchemy_hana`` and ``hdbcli`` python libraries +- Install ``sqlalchemy_hana`` and ``hdbcli`` python libraries Configuration ============= To configure this module, you need to: -#. Database sources can be configured in Settings > Technical > - Database Structure > Database sources. +1. Database sources can be configured in Settings > Technical > Database + Structure > Database sources. Usage ===== To use this module: -* Go to Settings > Technical > Database Structure > Database Sources -* Click on Create to enter the following information: - -* Datasource name?? -* Pasword -* Connector: Choose the database to which you want to connect -* Connection string: Specify how to connect to database +- Go to Settings > Technical > Database Structure > Database Sources +- Click on Create to enter the following information: +- Datasource name?? +- Pasword +- Connector: Choose the database to which you want to connect +- Connection string: Specify how to connect to database Bug Tracker =========== @@ -70,7 +69,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. @@ -78,20 +77,20 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* `Tecnativa `__: +- `Tecnativa `__: - * Carlos Dauden - * Sergio Teruel + - Carlos Dauden + - Sergio Teruel Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -103,6 +102,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/server-backend `_ project on GitHub. +This module is part of the `OCA/server-backend `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_external_dbsource_sap_hana/pyproject.toml b/base_external_dbsource_sap_hana/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/base_external_dbsource_sap_hana/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/base_external_dbsource_sap_hana/readme/CONFIGURE.md b/base_external_dbsource_sap_hana/readme/CONFIGURE.md new file mode 100644 index 000000000..9a93e6daf --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/CONFIGURE.md @@ -0,0 +1,4 @@ +To configure this module, you need to: + +1. Database sources can be configured in Settings \> Technical \> + Database Structure \> Database sources. diff --git a/base_external_dbsource_sap_hana/readme/CONFIGURE.rst b/base_external_dbsource_sap_hana/readme/CONFIGURE.rst deleted file mode 100644 index f8fb7dd36..000000000 --- a/base_external_dbsource_sap_hana/readme/CONFIGURE.rst +++ /dev/null @@ -1,4 +0,0 @@ -To configure this module, you need to: - -#. Database sources can be configured in Settings > Technical > - Database Structure > Database sources. diff --git a/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.md b/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..565414939 --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Tecnativa](https://www.tecnativa.com/): + - Carlos Dauden + - Sergio Teruel diff --git a/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst b/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst deleted file mode 100644 index 46fa878cd..000000000 --- a/base_external_dbsource_sap_hana/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,4 +0,0 @@ -* `Tecnativa `__: - - * Carlos Dauden - * Sergio Teruel diff --git a/base_external_dbsource_sap_hana/readme/DESCRIPTION.md b/base_external_dbsource_sap_hana/readme/DESCRIPTION.md new file mode 100644 index 000000000..9f33df837 --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module extends `base_external_dbsource`, allowing you to connect to +foreign SAP HANA databases using SQLAlchemy. diff --git a/base_external_dbsource_sap_hana/readme/DESCRIPTION.rst b/base_external_dbsource_sap_hana/readme/DESCRIPTION.rst deleted file mode 100644 index f9f7b12dc..000000000 --- a/base_external_dbsource_sap_hana/readme/DESCRIPTION.rst +++ /dev/null @@ -1,2 +0,0 @@ -This module extends ``base_external_dbsource``, allowing you to connect to -foreign SAP HANA databases using SQLAlchemy. diff --git a/base_external_dbsource_sap_hana/readme/INSTALL.md b/base_external_dbsource_sap_hana/readme/INSTALL.md new file mode 100644 index 000000000..8163d85a8 --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/INSTALL.md @@ -0,0 +1,3 @@ +To install this module, you need to: + +- Install `sqlalchemy_hana` and `hdbcli` python libraries diff --git a/base_external_dbsource_sap_hana/readme/INSTALL.rst b/base_external_dbsource_sap_hana/readme/INSTALL.rst deleted file mode 100644 index 4a976e6f1..000000000 --- a/base_external_dbsource_sap_hana/readme/INSTALL.rst +++ /dev/null @@ -1,3 +0,0 @@ -To install this module, you need to: - -* Install ``sqlalchemy_hana`` and ``hdbcli`` python libraries diff --git a/base_external_dbsource_sap_hana/readme/USAGE.md b/base_external_dbsource_sap_hana/readme/USAGE.md new file mode 100644 index 000000000..3d2d712bf --- /dev/null +++ b/base_external_dbsource_sap_hana/readme/USAGE.md @@ -0,0 +1,8 @@ +To use this module: + +- Go to Settings \> Technical \> Database Structure \> Database Sources +- Click on Create to enter the following information: +- Datasource name?? +- Pasword +- Connector: Choose the database to which you want to connect +- Connection string: Specify how to connect to database diff --git a/base_external_dbsource_sap_hana/readme/USAGE.rst b/base_external_dbsource_sap_hana/readme/USAGE.rst deleted file mode 100644 index e91b212b6..000000000 --- a/base_external_dbsource_sap_hana/readme/USAGE.rst +++ /dev/null @@ -1,9 +0,0 @@ -To use this module: - -* Go to Settings > Technical > Database Structure > Database Sources -* Click on Create to enter the following information: - -* Datasource name?? -* Pasword -* Connector: Choose the database to which you want to connect -* Connection string: Specify how to connect to database diff --git a/base_external_dbsource_sap_hana/static/description/index.html b/base_external_dbsource_sap_hana/static/description/index.html index 2e68d4314..2830e831c 100644 --- a/base_external_dbsource_sap_hana/static/description/index.html +++ b/base_external_dbsource_sap_hana/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -369,9 +369,9 @@

External Database Source - SAP - Hana

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:b85a80a6fdb648c130cc6fdce284d503c8bc94a3878ddc2c51dc24f1d0764481 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: LGPL-3 OCA/server-backend Translate me on Weblate Try me on Runboat

-

This module extends base_external_dbsource, allowing you to connect to -foreign SAP HANA databases using SQLAlchemy.

+

Beta License: LGPL-3 OCA/server-backend Translate me on Weblate Try me on Runboat

+

This module extends base_external_dbsource, allowing you to connect +to foreign SAP HANA databases using SQLAlchemy.

Table of contents

    @@ -398,8 +398,8 @@

    Installation

    Configuration

    To configure this module, you need to:

      -
    1. Database sources can be configured in Settings > Technical > -Database Structure > Database sources.
    2. +
    3. Database sources can be configured in Settings > Technical > Database +Structure > Database sources.
@@ -419,7 +419,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.

@@ -443,11 +443,13 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +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.

-

This module is part of the OCA/server-backend project on GitHub.

+

This module is part of the OCA/server-backend project on GitHub.

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

diff --git a/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py b/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py index 689044948..d0414d7f3 100644 --- a/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py +++ b/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py @@ -10,7 +10,7 @@ class TestBaseExternalDbsource(common.TransactionCase): def setUp(self): - super(TestBaseExternalDbsource, self).setUp() + super().setUp() self.dbsource = self.env.ref("base_external_dbsource_sap_hana.demo_sap_hana") def _test_adapter_method( diff --git a/requirements.txt b/requirements.txt index b9eb3d222..cee5f2251 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,9 @@ # generated from manifests external_dependencies +hdbcli mysqlclient pymssql<=2.2.5 ; python_version <= '3.10' pymssql<=2.2.8 ; python_version < '3.12' pymssql<=2.3.7 ; python_version >= '3.12' sqlalchemy +sqlalchemy-hana vobject From 39529aac47bcdd212ea4599fba3477f35eeab9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 18 Jun 2026 09:50:33 +0200 Subject: [PATCH 5/5] [MIG] base_external_dbsource_sap_hana: Migration to 18.0 TT57624 --- base_external_dbsource_sap_hana/__manifest__.py | 2 +- .../models/base_external_dbsource.py | 11 ++++++----- .../tests/test_base_external_dbsource_sap_hana.py | 15 ++++++++------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/base_external_dbsource_sap_hana/__manifest__.py b/base_external_dbsource_sap_hana/__manifest__.py index c8e724c43..9f25035db 100644 --- a/base_external_dbsource_sap_hana/__manifest__.py +++ b/base_external_dbsource_sap_hana/__manifest__.py @@ -2,7 +2,7 @@ # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). { "name": "External Database Source - SAP - Hana", - "version": "15.0.1.0.0", + "version": "18.0.1.0.0", "category": "Tools", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/server-backend", diff --git a/base_external_dbsource_sap_hana/models/base_external_dbsource.py b/base_external_dbsource_sap_hana/models/base_external_dbsource.py index d386558ac..5e6f32697 100644 --- a/base_external_dbsource_sap_hana/models/base_external_dbsource.py +++ b/base_external_dbsource_sap_hana/models/base_external_dbsource.py @@ -4,11 +4,7 @@ import sqlalchemy -from odoo import models - -from odoo.addons.base_external_dbsource.models import base_external_dbsource - -base_external_dbsource.BaseExternalDbsource.CONNECTORS.append(("sap_hana", "SAP-Hana")) +from odoo import fields, models class BaseExternalDbsource(models.Model): @@ -16,6 +12,11 @@ class BaseExternalDbsource(models.Model): _inherit = "base.external.dbsource" + connector = fields.Selection( + selection_add=[("sap_hana", "SAP-Hana")], + ondelete={"sap_hana": "cascade"}, + ) + def connection_close_sap_hana(self, connection): return connection.close() diff --git a/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py b/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py index d0414d7f3..0b1a407c3 100644 --- a/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py +++ b/base_external_dbsource_sap_hana/tests/test_base_external_dbsource_sap_hana.py @@ -3,15 +3,16 @@ from unittest import mock -from odoo.tests import common +from odoo.addons.base.tests.common import BaseCommon -ADAPTER = "odoo.addons.base_external_dbsource_sap_hana.models.base_external_dbsource.SAPhanaDB" +ADAPTER = "odoo.addons.base_external_dbsource_sap_hana.models.base_external_dbsource.SAPhanaDB" # noqa: E501 -class TestBaseExternalDbsource(common.TransactionCase): - def setUp(self): - super().setUp() - self.dbsource = self.env.ref("base_external_dbsource_sap_hana.demo_sap_hana") +class TestBaseExternalDbsource(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.dbsource = cls.env.ref("base_external_dbsource_sap_hana.demo_sap_hana") def _test_adapter_method( self, @@ -26,7 +27,7 @@ def _test_adapter_method( args = [] if kwargs is None: kwargs = {} - adapter = "%s_sap_hana" % method_name + adapter = f"{method_name}_sap_hana" with mock.patch.object(type(self.dbsource), adapter, create=create) as adapter: if side_effect is not None: adapter.side_effect = side_effect