Dont overwrite user plugins with base plugins
- Dont load plugins without short_name - Check with the short_name if a plugin is already loaded
This commit is contained in:
parent
85e8867aba
commit
796da7b2dc
|
@ -110,7 +110,7 @@ class PluginManager(metaclass=Singleton):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
for path in reversed(configpaths.get_plugin_dirs()):
|
for path in reversed(configpaths.get_plugin_dirs()):
|
||||||
pc = PluginManager.scan_dir_for_plugins(path)
|
pc = self.scan_dir_for_plugins(path)
|
||||||
self.add_plugins(pc)
|
self.add_plugins(pc)
|
||||||
|
|
||||||
@log_calls('PluginManager')
|
@log_calls('PluginManager')
|
||||||
|
@ -137,7 +137,6 @@ class PluginManager(metaclass=Singleton):
|
||||||
and adding class from reloaded module or ignoring adding plug-in?
|
and adding class from reloaded module or ignoring adding plug-in?
|
||||||
'''
|
'''
|
||||||
plugin = plugin_class()
|
plugin = plugin_class()
|
||||||
|
|
||||||
if plugin not in self.plugins:
|
if plugin not in self.plugins:
|
||||||
if not self._plugin_has_entry_in_global_config(plugin):
|
if not self._plugin_has_entry_in_global_config(plugin):
|
||||||
self._create_plugin_entry_in_global_config(plugin)
|
self._create_plugin_entry_in_global_config(plugin)
|
||||||
|
@ -520,9 +519,8 @@ class PluginManager(metaclass=Singleton):
|
||||||
def _set_plugin_active_in_global_config(self, plugin, active=True):
|
def _set_plugin_active_in_global_config(self, plugin, active=True):
|
||||||
app.config.set_per('plugins', plugin.short_name, 'active', active)
|
app.config.set_per('plugins', plugin.short_name, 'active', active)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
@log_calls('PluginManager')
|
@log_calls('PluginManager')
|
||||||
def scan_dir_for_plugins(path, scan_dirs=True, package=False):
|
def scan_dir_for_plugins(self, path, scan_dirs=True, package=False):
|
||||||
r'''
|
r'''
|
||||||
Scans given directory for plugin classes.
|
Scans given directory for plugin classes.
|
||||||
|
|
||||||
|
@ -584,6 +582,21 @@ class PluginManager(metaclass=Singleton):
|
||||||
elem_name, exc_info=True)
|
elem_name, exc_info=True)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
short_name = conf.get('info', 'short_name', fallback=None)
|
||||||
|
if short_name is None:
|
||||||
|
log.error('No short_name defined for %s', elem_name)
|
||||||
|
|
||||||
|
# Check if the plugin is already loaded
|
||||||
|
try:
|
||||||
|
for plugin in self.plugins:
|
||||||
|
if plugin.short_name == short_name:
|
||||||
|
raise PluginAlreadyLoaded(
|
||||||
|
'Skip Plugin %s because its '
|
||||||
|
'already loaded' % elem_name)
|
||||||
|
except PluginAlreadyLoaded as error:
|
||||||
|
log.warning(error)
|
||||||
|
continue
|
||||||
|
|
||||||
min_v = conf.get('info', 'min_gajim_version', fallback=None)
|
min_v = conf.get('info', 'min_gajim_version', fallback=None)
|
||||||
max_v = conf.get('info', 'max_gajim_version', fallback=None)
|
max_v = conf.get('info', 'max_gajim_version', fallback=None)
|
||||||
|
|
||||||
|
@ -734,3 +747,7 @@ class PluginManager(metaclass=Singleton):
|
||||||
for plugin in self.plugins:
|
for plugin in self.plugins:
|
||||||
if plugin.__path__ in plugin_dir:
|
if plugin.__path__ in plugin_dir:
|
||||||
return plugin
|
return plugin
|
||||||
|
|
||||||
|
|
||||||
|
class PluginAlreadyLoaded(Exception):
|
||||||
|
pass
|
||||||
|
|
Loading…
Reference in New Issue