we can personalise storage easily
This commit is contained in:
@ -24,8 +24,6 @@ from time import time
|
||||
from copy import copy
|
||||
from tiramisu.error import RequirementError, PropertiesOptionError
|
||||
from tiramisu.i18n import _
|
||||
#from tiramisu.plugins.dictionary.setting import PluginSettings
|
||||
from tiramisu.plugins.sqlite3.setting import PluginSettings
|
||||
|
||||
|
||||
default_encoding = 'utf-8'
|
||||
@ -35,6 +33,7 @@ ro_append = ('frozen', 'disabled', 'validator', 'everything_frozen', 'mandatory'
|
||||
rw_remove = ('permissive', 'everything_frozen', 'mandatory')
|
||||
rw_append = ('frozen', 'disabled', 'validator', 'hidden')
|
||||
default_properties = ('expire', 'validator')
|
||||
default_storage = 'dictionary'
|
||||
|
||||
|
||||
class _const:
|
||||
@ -179,15 +178,26 @@ class Property(object):
|
||||
|
||||
|
||||
#____________________________________________________________
|
||||
class Settings(PluginSettings):
|
||||
class Settings(object):
|
||||
"``Config()``'s configuration options"
|
||||
__slots__ = ('context', '_owner')
|
||||
__slots__ = ('context', '_owner', '_p_')
|
||||
|
||||
def __init__(self, context, config_id):
|
||||
def __init__(self, context, config_id, plugin_name):
|
||||
# generic owner
|
||||
self._owner = owners.user
|
||||
self.context = context
|
||||
super(Settings, self).__init__(config_id)
|
||||
import_lib = 'tiramisu.plugins.{0}.setting'.format(plugin_name)
|
||||
self._p_ = __import__(import_lib, globals(), locals(), ['Settings'],
|
||||
-1).Settings(config_id)
|
||||
|
||||
def _getkey(self, opt):
|
||||
if self._p_.key_is_path:
|
||||
if opt is None:
|
||||
return '_none'
|
||||
else:
|
||||
return self._get_opt_path(opt)
|
||||
else:
|
||||
return opt
|
||||
|
||||
#____________________________________________________________
|
||||
# properties methods
|
||||
@ -208,28 +218,28 @@ class Settings(PluginSettings):
|
||||
raise ValueError(_('opt and all_properties must not be set '
|
||||
'together in reset'))
|
||||
if all_properties:
|
||||
self._p_reset_all_propertives()
|
||||
self._p_.reset_all_propertives()
|
||||
else:
|
||||
self._p_reset_properties(opt)
|
||||
self._p_.reset_properties(self._getkey(opt))
|
||||
self.context.cfgimpl_reset_cache()
|
||||
|
||||
def _getproperties(self, opt=None, is_apply_req=True):
|
||||
if opt is None:
|
||||
props = self._p_getproperties(opt, default_properties)
|
||||
props = self._p_.getproperties(self._getkey(opt), default_properties)
|
||||
else:
|
||||
ntime = None
|
||||
if self._p_hascache('property', opt):
|
||||
if self._p_.hascache('property', self._getkey(opt)):
|
||||
ntime = time()
|
||||
is_cached, props = self._p_getcache('property', opt, ntime)
|
||||
is_cached, props = self._p_.getcache('property', self._getkey(opt), ntime)
|
||||
if is_cached:
|
||||
return props
|
||||
if is_apply_req:
|
||||
self.apply_requires(opt)
|
||||
props = self._p_getproperties(opt, opt._properties)
|
||||
props = self._p_.getproperties(self._getkey(opt), opt._properties)
|
||||
if 'expire' in self:
|
||||
if ntime is None:
|
||||
ntime = time()
|
||||
self._p_setcache('property', opt, props, ntime + expires_time)
|
||||
self._p_.setcache('property', self._getkey(opt), props, ntime + expires_time)
|
||||
return props
|
||||
|
||||
def append(self, propname):
|
||||
@ -245,12 +255,12 @@ class Settings(PluginSettings):
|
||||
(never save properties if same has option properties)
|
||||
"""
|
||||
if opt is None:
|
||||
self._p_setproperties(opt, properties)
|
||||
self._p_.setproperties(self._getkey(opt), properties)
|
||||
else:
|
||||
if set(opt._properties) == properties:
|
||||
self._p_reset_properties(opt)
|
||||
self._p_.reset_properties(self._getkey(opt))
|
||||
else:
|
||||
self._p_setproperties(opt, properties)
|
||||
self._p_.setproperties(self._getkey(opt), properties)
|
||||
self.context.cfgimpl_reset_cache()
|
||||
|
||||
#____________________________________________________________
|
||||
@ -260,11 +270,11 @@ class Settings(PluginSettings):
|
||||
#opt properties
|
||||
properties = copy(self._getproperties(opt_or_descr))
|
||||
#remove opt permissive
|
||||
properties -= self._p_getpermissive(opt_or_descr)
|
||||
properties -= self._p_.getpermissive(self._getkey(opt_or_descr))
|
||||
#remove global permissive if need
|
||||
self_properties = copy(self._getproperties())
|
||||
if force_permissive is True or 'permissive' in self_properties:
|
||||
properties -= self._p_getpermissive()
|
||||
properties -= self._p_.getpermissive()
|
||||
|
||||
#global properties
|
||||
if force_properties is not None:
|
||||
@ -300,7 +310,7 @@ class Settings(PluginSettings):
|
||||
def set_permissive(self, permissive, opt=None):
|
||||
if not isinstance(permissive, tuple):
|
||||
raise TypeError(_('permissive must be a tuple'))
|
||||
self._p_setpermissive(opt, permissive)
|
||||
self._p_.setpermissive(self._getkey(opt), permissive)
|
||||
|
||||
#____________________________________________________________
|
||||
def setowner(self, owner):
|
||||
@ -329,9 +339,9 @@ class Settings(PluginSettings):
|
||||
|
||||
def reset_cache(self, only_expired):
|
||||
if only_expired:
|
||||
self._p_reset_expired_cache('property', time())
|
||||
self._p_.reset_expired_cache('property', time())
|
||||
else:
|
||||
self._p_reset_all_cache('property')
|
||||
self._p_.reset_all_cache('property')
|
||||
|
||||
def apply_requires(self, opt):
|
||||
"carries out the jit (just in time requirements between options"
|
||||
|
Reference in New Issue
Block a user