diff --git a/.docker_files/main/__manifest__.py b/.docker_files/main/__manifest__.py index 61c484f9..e7a5757b 100644 --- a/.docker_files/main/__manifest__.py +++ b/.docker_files/main/__manifest__.py @@ -12,6 +12,7 @@ "summary": "Install all addons required for testing.", "depends": [ "contacts", + "partner_autocomplete_disable", ], "installable": True, } diff --git a/Dockerfile b/Dockerfile index 52756ac0..4e1f8426 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,5 +13,7 @@ RUN gitoo install-all --conf_file /gitoo.yml --destination "${THIRD_PARTY_ADDONS USER odoo +COPY partner_autocomplete_disable /mnt/extra-addons/partner_autocomplete_disable + COPY .docker_files/main /mnt/extra-addons/main COPY .docker_files/odoo.conf /etc/odoo diff --git a/partner_autocomplete_disable/README.rst b/partner_autocomplete_disable/README.rst new file mode 100644 index 00000000..08920b8b --- /dev/null +++ b/partner_autocomplete_disable/README.rst @@ -0,0 +1,11 @@ +Partner Autocomplete Disable +============================ +Disable the autocompletion in partners and companies. + +Contributors +------------ +* Numigi (tm) and all its contributors (https://bit.ly/numigiens) + +More information +---------------- +* Meet us at https://bit.ly/numigi-com diff --git a/partner_autocomplete_disable/__init__.py b/partner_autocomplete_disable/__init__.py new file mode 100644 index 00000000..a6d22383 --- /dev/null +++ b/partner_autocomplete_disable/__init__.py @@ -0,0 +1,4 @@ +# © 2022 Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from . import models diff --git a/partner_autocomplete_disable/__manifest__.py b/partner_autocomplete_disable/__manifest__.py new file mode 100644 index 00000000..68659761 --- /dev/null +++ b/partner_autocomplete_disable/__manifest__.py @@ -0,0 +1,19 @@ +# © 2022 Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Partner Autocomplete Disable", + "version": "1.1.0", + "author": "Numigi", + "maintainer": "Numigi", + "license": "LGPL-3", + "category": "Other", + "summary": "Disable the Partner autocomplete feature", + "depends": [ + "partner_autocomplete", + ], + "data": [ + "data/views_data.xml", + ], + "installable": True, +} diff --git a/partner_autocomplete_disable/data/views_data.xml b/partner_autocomplete_disable/data/views_data.xml new file mode 100644 index 00000000..81996e20 --- /dev/null +++ b/partner_autocomplete_disable/data/views_data.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/partner_autocomplete_disable/models/__init__.py b/partner_autocomplete_disable/models/__init__.py new file mode 100644 index 00000000..9ac8301a --- /dev/null +++ b/partner_autocomplete_disable/models/__init__.py @@ -0,0 +1,4 @@ +# © 2022 - Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from . import res_partner diff --git a/partner_autocomplete_disable/models/res_partner.py b/partner_autocomplete_disable/models/res_partner.py new file mode 100644 index 00000000..c13f73be --- /dev/null +++ b/partner_autocomplete_disable/models/res_partner.py @@ -0,0 +1,12 @@ +# © 2022 - Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import api, models + + +class ResPartnerAutocompleteDisable(models.Model): + _inherit = "res.partner" + + @api.model + def _rpc_remote_api(self, *args, **kwargs): + return {}, False diff --git a/partner_autocomplete_disable/static/description/icon.png b/partner_autocomplete_disable/static/description/icon.png new file mode 100644 index 00000000..92a86b10 Binary files /dev/null and b/partner_autocomplete_disable/static/description/icon.png differ diff --git a/partner_autocomplete_disable/tests/__init__.py b/partner_autocomplete_disable/tests/__init__.py new file mode 100644 index 00000000..24db2598 --- /dev/null +++ b/partner_autocomplete_disable/tests/__init__.py @@ -0,0 +1,2 @@ +# © 2022 - Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). diff --git a/partner_autocomplete_disable/tests/test_res_partner.py b/partner_autocomplete_disable/tests/test_res_partner.py new file mode 100644 index 00000000..30da39e5 --- /dev/null +++ b/partner_autocomplete_disable/tests/test_res_partner.py @@ -0,0 +1,82 @@ +# © 2022 - Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from ddt import ddt, data +from unittest import mock +from odoo.tests import common + + +@ddt +class TestResPartner(common.TransactionCase): + def setUp(self): + super().setUp() + self.partner = self.env.ref("base.res_partner_1") + + @data("konvergo", "odoo", "something", "google.com", "") + def test_rpc_remote_api(self, query): + with mock.patch("odoo.addons.iap.jsonrpc") as mocked: + res = self.partner._rpc_remote_api("search", {"query": query}) + assert mocked.call_count == 0 + assert res == ({}, False) + + @data("konvergo", "odoo", "something", "google.com", "") + def test_autocomplete(self, query): + with mock.patch("odoo.addons.iap.jsonrpc") as mocked: + assert self.partner.autocomplete(query) == [] + assert mocked.call_count == 0 + + @data("konvergo", "odoo", "something", "google.com", "") + def test_enrich_company(self, name): + with mock.patch("odoo.addons.iap.jsonrpc") as mocked: + res = self.partner.enrich_company(name, 123, "U12345678") + assert res['error'] + assert mocked.call_count == 0 + + @data( + "U12345678", + "1234567890", + "12345678901", + "12345678X", + "XX123456789", + "" + ) + def test_read_by_vat(self, vat): + with mock.patch("odoo.addons.iap.jsonrpc") as mocked: + assert self.partner.read_by_vat(vat) == [] + assert mocked.call_count == 0 + + +class TestResPartnerAutocompleteSync(common.TransactionCase): + + def setUp(self): + super().setUp() + self.partner = self.env.ref("base.res_partner_1") + self.partner.vat = "XX123456789" + self.autocomplete_sync = self.env["res.partner.autocomplete.sync"].create({ + "partner_id": self.partner.id, + "synched": False + }) + + def test_whenStartSync_thenPatchedMethodIsCalled(self): + """ make sure the targeted method is called during the process + """ + module_memory_address = ( + "odoo.addons.partner_autocomplete_disable" + ".models.res_partner.ResPartnerAutocompleteDisable" + ) + with mock.patch(".".join([module_memory_address, "_rpc_remote_api"])) as mocked: + autocomplete_module_memory_address = ( + "odoo.addons.partner_autocomplete.models.res_partner.ResPartner" + ) + mocked.return_value = {}, False + with mock.patch(".".join( + [autocomplete_module_memory_address, "_is_vat_syncable"] + )) as sync: + sync.return_value = True + self.autocomplete_sync.start_sync() + assert mocked.call_count == 0 + + def test_whenStartSync_noDataAreSent(self): + with mock.patch("odoo.addons.iap.jsonrpc") as mocked: + self.autocomplete_sync.start_sync() + assert mocked.call_count == 0