diff --git a/tryton/gui/main.py b/tryton/gui/main.py index 4c375240be..ed21bb37c8 100644 --- a/tryton/gui/main.py +++ b/tryton/gui/main.py @@ -15,6 +15,7 @@ from tryton.gui.window import FilesActions import re import base64 import tryton.translate as translate +import tryton.plugin _ = gettext.gettext @@ -718,7 +719,6 @@ class Main(object): except_id=except_id) def sig_plugin_execute(self, widget): - import tryton.plugin page = self.notebook.get_current_page() datas = { 'model': self.pages[page].model, diff --git a/tryton/plugin.py b/tryton/plugin.py index 9db0c3beeb..be93faecba 100644 --- a/tryton/plugin.py +++ b/tryton/plugin.py @@ -3,18 +3,24 @@ import os import imp PLUGINS_PATH = os.path.join(os.path.dirname(__file__), 'plugins') +MODULES = [] + +for plugin in os.listdir(PLUGINS_PATH): + module = os.path.splitext(plugin)[0] + try: + module = imp.load_module(module, *imp.find_module(module, [PLUGINS_PATH])) + MODULES.append(module) + except Exception, exception: + continue def execute(datas, parent): result = {} - for plugin in os.listdir(PLUGINS_PATH): - module = os.path.splitext(plugin)[0] + for module in MODULES: try: - module = imp.load_module(module, *imp.find_module(module, [PLUGINS_PATH])) for name, func in module.get_plugins(datas['model']): result[name] = func except Exception, exception: - print exception continue if not result: common.message(_('No available plugin for this resource!'), parent)