diff options
Diffstat (limited to 'ipsilon/util/plugin.py')
-rwxr-xr-x | ipsilon/util/plugin.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/ipsilon/util/plugin.py b/ipsilon/util/plugin.py index ae98b4c..e9d792e 100755 --- a/ipsilon/util/plugin.py +++ b/ipsilon/util/plugin.py @@ -21,6 +21,7 @@ import os import imp import cherrypy import inspect +import time from ipsilon.util.config import Config from ipsilon.util.data import AdminStore from ipsilon.util.log import Log @@ -183,9 +184,10 @@ class PluginObject(Log): return self._data.load_options(self._plugins.facility, self.name) def refresh_plugin_config(self): - config = self.get_plugin_config() - if config: - self.import_config(config) + if self._data.config_changed: + config = self.get_plugin_config() + if config: + self.import_config(config) def save_plugin_config(self, config=None): if config is None: @@ -213,10 +215,15 @@ class PluginObject(Log): self._data.wipe_data(self.name) +# Use a 30 seconds refresh interval for now +REFRESH_INTERVAL = 30 + + class PluginConfig(Log): def __init__(self): self._config = None + self.last_refresh = 0 def new_config(self, name, *config_args): self._config = Config(name, *config_args) @@ -224,6 +231,13 @@ class PluginConfig(Log): def get_config_obj(self): if self._config is None: raise AttributeError('Config not initialized') + + r = getattr(self, 'refresh_plugin_config', False) + if r: + t = time.time() + if self.last_refresh + REFRESH_INTERVAL < t: + r() + return self._config def import_config(self, config): @@ -234,6 +248,8 @@ class PluginConfig(Log): if key in self._config: self._config[key].import_value(str(value)) + self.last_refresh = time.time() + def export_config(self): config = dict() for name, option in self._config.iteritems(): |