update sqlalchemy storage for values et settings
This commit is contained in:
@ -118,26 +118,27 @@ class MasterSlaves(object):
|
||||
pass
|
||||
|
||||
def getitem(self, values, opt, path, validate, force_permissive,
|
||||
trusted_cached_properties, validate_properties, slave_path=undefined,
|
||||
slave_value=undefined, setting_properties=undefined,
|
||||
self_properties=undefined, index=None,
|
||||
trusted_cached_properties, validate_properties, session,
|
||||
slave_path=undefined, slave_value=undefined,
|
||||
setting_properties=undefined, self_properties=undefined, index=None,
|
||||
returns_raise=False):
|
||||
if self.is_master(opt):
|
||||
return self._getmaster(values, opt, path, validate,
|
||||
force_permissive,
|
||||
validate_properties, slave_path,
|
||||
slave_value, self_properties, index,
|
||||
returns_raise, setting_properties)
|
||||
returns_raise, setting_properties, session)
|
||||
else:
|
||||
return self._getslave(values, opt, path, validate,
|
||||
force_permissive, trusted_cached_properties,
|
||||
validate_properties, setting_properties,
|
||||
self_properties, index, returns_raise)
|
||||
self_properties, index, returns_raise,
|
||||
session)
|
||||
|
||||
def _getmaster(self, values, opt, path, validate, force_permissive,
|
||||
validate_properties, c_slave_path,
|
||||
c_slave_value, self_properties, index, returns_raise,
|
||||
setting_properties):
|
||||
setting_properties, session):
|
||||
value = values._get_cached_value(opt, path=path, validate=validate,
|
||||
force_permissive=force_permissive,
|
||||
validate_properties=validate_properties,
|
||||
@ -151,13 +152,13 @@ class MasterSlaves(object):
|
||||
masterlen = len(value)
|
||||
for slave in self.getslaves(opt):
|
||||
slave_path = slave.impl_getpath(values._getcontext())
|
||||
slavelen = values._p_.get_max_length(slave_path)
|
||||
slavelen = values._p_.get_max_length(slave_path, session)
|
||||
self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
|
||||
return value
|
||||
|
||||
def _getslave(self, values, opt, path, validate, force_permissive,
|
||||
trusted_cached_properties, validate_properties, setting_properties,
|
||||
self_properties, index, returns_raise):
|
||||
self_properties, index, returns_raise, session):
|
||||
"""
|
||||
if master has length 0:
|
||||
return []
|
||||
@ -182,12 +183,12 @@ class MasterSlaves(object):
|
||||
master = self.getmaster(opt)
|
||||
context = values._getcontext()
|
||||
masterp = master.impl_getpath(context)
|
||||
masterlen = self.get_length(values, opt, validate, undefined,
|
||||
masterlen = self.get_length(values, opt, session, validate, undefined,
|
||||
undefined, force_permissive,
|
||||
master=master, returns_raise=returns_raise)
|
||||
if isinstance(masterlen, Exception):
|
||||
return masterlen
|
||||
master_is_meta = values._is_meta(master, masterp)
|
||||
master_is_meta = values._is_meta(master, masterp, session)
|
||||
multi = values._get_multi(opt, path)
|
||||
#if masterlen is [], test properties (has no value, don't get any value)
|
||||
if masterlen == 0:
|
||||
@ -240,24 +241,24 @@ class MasterSlaves(object):
|
||||
raise err
|
||||
return multi
|
||||
|
||||
def validate(self, values, opt, value, path, returns_raise):
|
||||
def validate(self, values, opt, value, path, returns_raise, session):
|
||||
if self.is_master(opt):
|
||||
masterlen = len(value)
|
||||
#for regen slave path
|
||||
base_path = '.'.join(path.split('.')[:-1]) + '.'
|
||||
for slave in self.getslaves(opt):
|
||||
slave_path = base_path + slave.impl_getname()
|
||||
slavelen = values._p_.get_max_length(slave_path)
|
||||
slavelen = values._p_.get_max_length(slave_path, session)
|
||||
self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
|
||||
else:
|
||||
val_len = self.get_length(values, opt, slave_path=path, returns_raise=returns_raise)
|
||||
val_len = self.get_length(values, opt, session, slave_path=path, returns_raise=returns_raise)
|
||||
if isinstance(val_len, Exception):
|
||||
return val_len
|
||||
self.validate_slave_length(val_len,
|
||||
len(value),
|
||||
opt.impl_getname(), opt, setitem=True)
|
||||
|
||||
def get_length(self, values, opt, validate=True, slave_path=undefined,
|
||||
def get_length(self, values, opt, session, validate=True, slave_path=undefined,
|
||||
slave_value=undefined, force_permissive=False, master=None,
|
||||
masterp=None, returns_raise=False):
|
||||
"""get master len with slave option"""
|
||||
@ -268,8 +269,8 @@ class MasterSlaves(object):
|
||||
if slave_value is undefined:
|
||||
slave_path = undefined
|
||||
value = self.getitem(values, master, masterp, validate,
|
||||
force_permissive, None, True, slave_path,
|
||||
slave_value, returns_raise=returns_raise)
|
||||
force_permissive, None, True, session, slave_path=slave_path,
|
||||
slave_value=slave_value, returns_raise=returns_raise)
|
||||
if isinstance(value, Exception):
|
||||
return value
|
||||
return len(value)
|
||||
|
@ -175,6 +175,7 @@ class OptionDescription(BaseOption, StorageOptionDescription):
|
||||
'must not be a multi for {1}').format(
|
||||
require_opt.impl_getname(), option.impl_getname()))
|
||||
if init:
|
||||
session = config._impl_values._p_.getsession()
|
||||
if len(cache_option) != len(set(cache_option)):
|
||||
for idx in xrange(1, len(cache_option) + 1):
|
||||
opt = cache_option.pop(0)
|
||||
@ -203,7 +204,8 @@ class OptionDescription(BaseOption, StorageOptionDescription):
|
||||
raise ConfigError(_('a dynoption ({0}) cannot have '
|
||||
'force_store_value property').format(subpath))
|
||||
config._impl_values._p_.setvalue(subpath, value,
|
||||
owners.forced, None)
|
||||
owners.forced, None, session)
|
||||
del(session)
|
||||
|
||||
# ____________________________________________________________
|
||||
def impl_set_group_type(self, group_type):
|
||||
|
Reference in New Issue
Block a user