summaryrefslogtreecommitdiffstats
path: root/ipsilon/util/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipsilon/util/plugin.py')
-rwxr-xr-xipsilon/util/plugin.py22
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():