From 1afd0ccf20881ba97e3c07dffb33e9a3a0b2cda4 Mon Sep 17 00:00:00 2001
From: Martin Trigaux <mat@odoo.com>
Date: Thu, 14 Nov 2019 10:12:22 +0000
Subject: [PATCH] [FIX] auth_ldap: replace the deprecated library by one up to
 date

At 795c7b0a9415d04 the external dependencies was changed from trying
to import 'ldap' to checking than 'pyldap' package was installed.
The problem is that pyldap is a unmaintained library that should no
longer be used, as explained on the package page:
https://pypi.org/project/pyldap/
"The pyldap fork was merged back into python-ldap, and released as
 python-ldap 3.0.0."

Having pyldap version >= 3.0 installs python-ldap automatically and
will not cause any issue.

The Debian control file package name is adapted to use the latest.

The "ldap" externalm dependency defined in __manifest__.py will cause
pkg_resources.get_distribution() to fail in both case ("python-lap" or
"pyldap"), but the "import" fallback will succeed. For that reason, the
log warning is turned into a log info.

closes odoo/odoo#40249

Note: This library should be replaced by the pure python "ldap3" library.
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
---
 addons/auth_ldap/README.rst                                     | 2 +-
 addons/auth_ldap/__manifest__.py                                | 2 +-
 .../tools/posbox/overwrite_before_init/etc/init_posbox_image.sh | 2 +-
 debian/control                                                  | 2 +-
 odoo/addons/base/models/ir_module.py                            | 2 +-
 requirements.txt                                                | 2 +-
 setup.cfg                                                       | 1 -
 setup.py                                                        | 2 +-
 setup/win32/winpy_requirements.txt                              | 1 -
 9 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/addons/auth_ldap/README.rst b/addons/auth_ldap/README.rst
index f31047def21f..64f802b01e51 100644
--- a/addons/auth_ldap/README.rst
+++ b/addons/auth_ldap/README.rst
@@ -3,7 +3,7 @@ Adds support for authentication by LDAP server.
 This module allows users to login with their LDAP username and password, and
 will automatically create Odoo users for them on the fly.
 
-**Note:** This module only work on servers who have Python's ``ldap`` module installed.
+**Note:** This module only work on servers that have Python's ``python-ldap`` module installed.
 
 Configuration:
 --------------
diff --git a/addons/auth_ldap/__manifest__.py b/addons/auth_ldap/__manifest__.py
index d70b6a545089..fa17447c510f 100644
--- a/addons/auth_ldap/__manifest__.py
+++ b/addons/auth_ldap/__manifest__.py
@@ -11,6 +11,6 @@
         'views/res_config_settings_views.xml',
     ],
     'external_dependencies': {
-        'python': ['pyldap'],
+        'python': ['ldap'],
     }
 }
diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
index 82d0b6d96b01..440611211156 100755
--- a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
+++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
@@ -68,7 +68,7 @@ PKGS_TO_INSTALL="
     python3-feedparser \
     python3-pil \
     python3-jinja2 \
-    python3-ldap3 \
+    python3-ldap \
     python3-lxml \
     python3-mako \
     python3-mock \
diff --git a/debian/control b/debian/control
index 629c52aa05a4..0530ba7ace67 100644
--- a/debian/control
+++ b/debian/control
@@ -51,7 +51,7 @@ Replaces: tinyerp-server, openerp-server, openerp-web, openerp
 Recommends:
  ${python3:Recommends},
  postgresql,
- python3-pyldap,
+ python3-ldap,
 Description: Open Source Apps To Grow Your Business
  Odoo, formerly known as OpenERP, is a suite of open-source business apps
  written in Python and released under the LGPLv3 license. This suite of
diff --git a/odoo/addons/base/models/ir_module.py b/odoo/addons/base/models/ir_module.py
index 330bd41ffeaa..1d592947d22b 100644
--- a/odoo/addons/base/models/ir_module.py
+++ b/odoo/addons/base/models/ir_module.py
@@ -315,7 +315,7 @@ class Module(models.Model):
         except pkg_resources.DistributionNotFound as e:
             try:
                 importlib.import_module(pydep)
-                _logger.warning("python external dependency %s should be replaced by it's PyPI package name", pydep)
+                _logger.info("python external dependency on '%s' does not appear to be a valid PyPI package. Using a PyPI package name is recommended.", pydep)
             except ImportError:
                 # backward compatibility attempt failed
                 _logger.warning("DistributionNotFound: %s", e)
diff --git a/requirements.txt b/requirements.txt
index 278039dfa551..2e49ba7b6824 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -28,7 +28,7 @@ psutil==5.5.1
 psycopg2==2.7.7; sys_platform != 'win32'
 psycopg2==2.8.3; sys_platform == 'win32'
 pydot==1.4.1
-pyldap==2.4.28; sys_platform != 'win32'
+python-ldap==3.1.0; sys_platform != 'win32'
 pyparsing==2.2.0
 PyPDF2==1.26.0
 pyserial==3.4
diff --git a/setup.cfg b/setup.cfg
index ffccdc094ac5..3bcb7bb3686a 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -33,7 +33,6 @@ requires =
   python3-psycopg2
   python3-polib
   python3-pydot
-  python3-pyldap
   python3-pyparsing
   python3-PyPDF2
   python3-pyserial
diff --git a/setup.py b/setup.py
index 47ea33a5a828..80baf7e0b1a9 100644
--- a/setup.py
+++ b/setup.py
@@ -59,7 +59,7 @@ setup(
     ],
     python_requires='>=3.6',
     extras_require={
-        'ldap': ['pyldap'],
+        'ldap': ['python-ldap'],
         'SSL': ['pyopenssl'],
     },
     tests_require=[
diff --git a/setup/win32/winpy_requirements.txt b/setup/win32/winpy_requirements.txt
index ad7081536b40..cfeece68d925 100644
--- a/setup/win32/winpy_requirements.txt
+++ b/setup/win32/winpy_requirements.txt
@@ -19,7 +19,6 @@ polib>=1.1.0
 psutil>=4.3.1
 psycopg2==2.7.1
 pydot==1.2.3
-pyldap>=2.4.28
 pyparsing==2.1.10
 PyPDF2==1.26.0
 pyserial==3.1.1
-- 
GitLab