Skip to content

Commit

Permalink
[IMP] module.py: remove openerp and ad_paths
Browse files Browse the repository at this point in the history
`openerp` module/addons imports has been deprecated in v13 by 7c47eb1
for removal in v14.

If you were still using the removed aliases, please substitute all
`import openerp` by `import odoo` and `import openerp.addons` by
`import odoo.addons`.

If you were still using the removed `ad_paths` proxy, please use the
python standard `odoo.addons.__path__`.

closes odoo#37007

Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
  • Loading branch information
Julien00859 authored and Xavier Morel committed Sep 20, 2019
1 parent e7506b8 commit ca8eaf4
Showing 1 changed file with 2 additions and 85 deletions.
87 changes: 2 additions & 85 deletions odoo/modules/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,92 +30,14 @@

_logger = logging.getLogger(__name__)

# addons path as a list
# ad_paths is a deprecated alias, please use odoo.addons.__path__
@tools.lazy
def ad_paths():
_logger.warning('"odoo.modules.module.ad_paths" is a deprecated '
'proxy to "odoo.addons.__path__". Please consider '
'using the latter as the former is going to be '
'removed in the next version.',
exc_info=DeprecationWarning(), stack_info=True)
return odoo.addons.__path__
hooked = False

# Modules already loaded
loaded = []

class AddonsHook(object):
""" Makes modules accessible through openerp.addons.* """

def find_module(self, name, path=None):
if name.startswith('openerp.addons.') and name.count('.') == 2:
_logger.warning('"openerp.addons" is a deprecated alias to '
'"odoo.addons". Please consider using the '
'latter as the former is going to be removed '
'in the next version.',
exc_info=DeprecationWarning(), stack_info=True)
return self

def load_module(self, name):
assert name not in sys.modules

odoo_name = re.sub(r'^openerp.addons.(\w+)$', r'odoo.addons.\g<1>', name)

odoo_module = sys.modules.get(odoo_name)
if not odoo_module:
odoo_module = importlib.import_module(odoo_name)

sys.modules[name] = odoo_module

return odoo_module

# need to register loader with setuptools as Jinja relies on it when using
# PackageLoader
pkg_resources.register_loader_type(AddonsHook, pkg_resources.DefaultProvider)

class OdooHook(object):
""" Makes odoo package also available as openerp """

def find_module(self, name, path=None):
# openerp.addons.<identifier> should already be matched by AddonsHook,
# only framework and subdirectories of modules should match
if re.match(r'^openerp\b', name):
_logger.warning('openerp is a deprecated alias to odoo. '
'Please consider using the latter as the '
'former is going to be removed in the next '
'version.',
exc_info=DeprecationWarning(), stack_info=True)
return self

def load_module(self, name):
assert name not in sys.modules

canonical = re.sub(r'^openerp(.*)', r'odoo\g<1>', name)

if canonical in sys.modules:
mod = sys.modules[canonical]
else:
# probable failure: canonical execution calling old naming -> corecursion
mod = importlib.import_module(canonical)

# just set the original module at the new location. Don't proxy,
# it breaks *-import (unless you can find how `from a import *` lists
# what's supposed to be imported by `*`, and manage to override it)
sys.modules[name] = mod

return sys.modules[name]

def initialize_sys_path():
"""
Setup an import-hook to be able to import OpenERP addons from the different
addons paths.
This ensures something like ``import crm`` (or even
``import odoo.addons.crm``) works even if the addons are not in the
PYTHONPATH.
Setup the addons path ``odoo.addons.__path__`` with various defaults
and explicit directories.
"""
global hooked

dd = os.path.normcase(tools.config.addons_data_dir)
if os.access(dd, os.R_OK) and dd not in odoo.addons.__path__:
Expand All @@ -131,11 +53,6 @@ def initialize_sys_path():
if base_path not in odoo.addons.__path__ and os.path.isdir(base_path):
odoo.addons.__path__.append(base_path)

if not hooked:
sys.meta_path.insert(0, OdooHook())
sys.meta_path.insert(0, AddonsHook())
hooked = True

def get_module_path(module, downloaded=False, display_warning=True):
"""Return the path of the given module.
Expand Down

0 comments on commit ca8eaf4

Please sign in to comment.