| |
| import builtins |
| import os |
| import sys |
| import public |
| import public.PluginLoader as plugin_loader |
|
|
|
|
| if 'class_v2/' not in sys.path and 'class_v2' not in sys.path: |
| sys.path.insert(0, 'class_v2/') |
|
|
|
|
| __hooked = False |
| old__import__ = builtins.__import__ |
|
|
|
|
| def hook_import(): |
| global __hooked |
|
|
| if __hooked: |
| return |
|
|
| def _aap__import__(name, globals = None, locals = None, fromlist = (), level = 0): |
| try: |
| return old__import__(name, globals, locals, fromlist, level) |
|
|
| except SyntaxError: |
| |
| if level == 0 and str(name).strip() != '': |
| panel_path = public.get_panel_path() |
| pyfile = '{}.py'.format(str(name).strip().replace('.', '/')) |
|
|
| realpath = os.path.join(panel_path, 'class', pyfile) |
| cond = os.path.exists(realpath) |
|
|
| if not cond: |
| realpath = os.path.join(panel_path, 'class_v2', pyfile) |
| cond = os.path.exists(realpath) |
|
|
| if not cond: |
| realpath = os.path.join(panel_path, pyfile) |
| cond = os.path.exists(realpath) |
|
|
| if cond: |
| try: |
| |
|
|
| m = plugin_loader.get_module(realpath) |
|
|
| if fromlist is None or len(fromlist) == 0: |
| return m |
|
|
| for prop_name in fromlist: |
| prop = getattr(m, prop_name) |
|
|
| if globals is not None: |
| globals[prop_name] = prop |
|
|
| if locals is not None: |
| locals[prop_name] = prop |
|
|
| return m |
|
|
| except: |
| raise |
|
|
| raise |
|
|
| builtins.__import__ = _aap__import__ |
|
|
| __hooked = True |
|
|