37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
import sys
|
|
import urlparse
|
|
import os
|
|
import imp
|
|
try:
|
|
import pkg_resources
|
|
except ImportError:
|
|
pkg_resources = None
|
|
|
|
from trytond.config import config
|
|
|
|
__all__ = ['name', 'get']
|
|
|
|
|
|
def name():
|
|
return urlparse.urlparse(config.get('database', 'uri', default='')).scheme
|
|
|
|
|
|
def get(prop):
|
|
db_type = name()
|
|
modname = 'trytond.backend.%s' % db_type
|
|
if modname not in sys.modules:
|
|
try:
|
|
__import__(modname)
|
|
except ImportError:
|
|
if not pkg_resources:
|
|
raise
|
|
ep, = pkg_resources.iter_entry_points('trytond.backend', db_type)
|
|
mod_path = os.path.join(ep.dist.location,
|
|
*ep.module_name.split('.')[:-1])
|
|
fp, pathname, description = imp.find_module(db_type, [mod_path])
|
|
imp.load_module(modname, fp, pathname, description)
|
|
module = sys.modules[modname]
|
|
return getattr(module, prop)
|