remove (g|s)et_modified_*, now it's exportation/importation
This commit is contained in:
parent
19b6ad6082
commit
bc4fa9d3d0
15 changed files with 97 additions and 228 deletions
|
@ -221,21 +221,21 @@ def test_get_modified_values():
|
||||||
root = OptionDescription('root', '', [d1])
|
root = OptionDescription('root', '', [d1])
|
||||||
config = Config(root)
|
config = Config(root)
|
||||||
api = getapi(config)
|
api = getapi(config)
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {}
|
assert api.value.exportation() == ((), (), (), ())
|
||||||
api.option('od.g5').value.set('yes')
|
api.option('od.g5').value.set('yes')
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes')}
|
assert api.value.exportation() == (('od.g5',), (None,), ('yes',), ('user',))
|
||||||
api.option('od.g4').value.set(True)
|
api.option('od.g4').value.set(True)
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes'), 'od.g4': ('user', True)}
|
assert api.value.exportation() == (('od.g5', 'od.g4'), (None, None), ('yes', True), ('user', 'user'))
|
||||||
api.option('od.g4').value.reset()
|
api.option('od.g4').value.reset()
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes')}
|
assert api.value.exportation() == (('od.g5',), (None,), ('yes',), ('user',))
|
||||||
api.option('od.g6').value.set([undefined])
|
api.option('od.g6').value.set([undefined])
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes'), 'od.g6': ('user', (None,))}
|
assert api.value.exportation() == (('od.g5', 'od.g6'), (None, None), ('yes', (None,)), ('user', 'user'))
|
||||||
api.option('od.g6').value.set([])
|
api.option('od.g6').value.set([])
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes'), 'od.g6': ('user', tuple())}
|
assert api.value.exportation() == (('od.g5', 'od.g6'), (None, None), ('yes', tuple()), ('user', 'user'))
|
||||||
api.option('od.g6').value.set(['3'])
|
api.option('od.g6').value.set(['3'])
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes'), 'od.g6': ('user', ('3',))}
|
assert api.value.exportation() == (('od.g5', 'od.g6'), (None, None), ('yes', ('3',)), ('user', 'user'))
|
||||||
api.option('od.g6').value.set([])
|
api.option('od.g6').value.set([])
|
||||||
assert config.cfgimpl_get_values().get_modified_values() == {'od.g5': ('user', 'yes'), 'od.g6': ('user', tuple())}
|
assert api.value.exportation() == (('od.g5', 'od.g6'), (None, None), ('yes', tuple()), ('user', 'user'))
|
||||||
|
|
||||||
|
|
||||||
#def test_has_value():
|
#def test_has_value():
|
||||||
|
|
|
@ -68,8 +68,9 @@ def test_duplicate_force_store_value():
|
||||||
conf = Config(descr)
|
conf = Config(descr)
|
||||||
conf2 = Config(descr)
|
conf2 = Config(descr)
|
||||||
api = getapi(conf)
|
api = getapi(conf)
|
||||||
assert conf.cfgimpl_get_values().get_modified_values() == {'creole.general.wantref': ('forced', False)}
|
api2 = getapi(conf2)
|
||||||
assert conf2.cfgimpl_get_values().get_modified_values() == {'creole.general.wantref': ('forced', False)}
|
assert api.value.exportation() == (('creole.general.wantref',), (None,), (False,), ('forced',))
|
||||||
|
assert api2.value.exportation() == (('creole.general.wantref',), (None,), (False,), ('forced',))
|
||||||
api.option('creole.general.wantref').value.set(True)
|
api.option('creole.general.wantref').value.set(True)
|
||||||
assert conf.cfgimpl_get_values().get_modified_values() == {'creole.general.wantref': ('user', True)}
|
assert api.value.exportation() == (('creole.general.wantref',), (None,), (True,), ('user',))
|
||||||
assert conf2.cfgimpl_get_values().get_modified_values() == {'creole.general.wantref': ('forced', False)}
|
assert api2.value.exportation() == (('creole.general.wantref',), (None,), (False,), ('forced',))
|
||||||
|
|
|
@ -146,17 +146,11 @@ def test_force_store_value():
|
||||||
descr = make_description_freeze()
|
descr = make_description_freeze()
|
||||||
conf = Config(descr)
|
conf = Config(descr)
|
||||||
api = getapi(conf)
|
api = getapi(conf)
|
||||||
assert api.value.get_modified() == {'wantref': ('forced', False),
|
assert api.value.exportation() == (('wantref', 'wantref2', 'wantref3'), (None, None, None), (False, False, (False,)), ('forced', 'forced', 'forced'))
|
||||||
'wantref2': ('forced', False),
|
|
||||||
'wantref3': ('forced', (False,))}
|
|
||||||
api.option('wantref').value.set(True)
|
api.option('wantref').value.set(True)
|
||||||
assert api.value.get_modified() == {'wantref': ('user', True),
|
assert api.value.exportation() == (('wantref', 'wantref2', 'wantref3'), (None, None, None), (True, False, (False,)), ('user', 'forced', 'forced'))
|
||||||
'wantref2': ('forced', False),
|
|
||||||
'wantref3': ('forced', (False,))}
|
|
||||||
api.option('wantref').value.reset()
|
api.option('wantref').value.reset()
|
||||||
assert api.value.get_modified() == {'wantref': ('forced', False),
|
assert api.value.exportation() == (('wantref', 'wantref2', 'wantref3'), (None, None, None), (False, False, (False,)), ('forced', 'forced', 'forced'))
|
||||||
'wantref2': ('forced', False),
|
|
||||||
'wantref3': ('forced', (False,))}
|
|
||||||
|
|
||||||
|
|
||||||
def test_force_store_value_no_requirement():
|
def test_force_store_value_no_requirement():
|
||||||
|
@ -189,28 +183,28 @@ def test_force_store_value_masterslaves_sub():
|
||||||
descr = MasterSlaves("int", "", [b, c])
|
descr = MasterSlaves("int", "", [b, c])
|
||||||
odr = OptionDescription('odr', '', [descr])
|
odr = OptionDescription('odr', '', [descr])
|
||||||
api = getapi(Config(odr))
|
api = getapi(Config(odr))
|
||||||
assert api.value.get_modified() == {'int.int': ('forced', ())}
|
assert api.value.exportation() == (('int.int',), (None,), (tuple(),), ('forced',))
|
||||||
|
|
||||||
|
|
||||||
def test_force_store_value_callback():
|
def test_force_store_value_callback():
|
||||||
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val)
|
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val)
|
||||||
descr = OptionDescription("int", "", [b])
|
descr = OptionDescription("int", "", [b])
|
||||||
api = getapi(Config(descr))
|
api = getapi(Config(descr))
|
||||||
assert api.value.get_modified() == {'int': ('forced', 1)}
|
assert api.value.exportation() == (('int',), (None,), (1,), ('forced',))
|
||||||
|
|
||||||
|
|
||||||
def test_force_store_value_callback_params():
|
def test_force_store_value_callback_params():
|
||||||
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val2, callback_params={'value': (2,)})
|
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val2, callback_params={'value': (2,)})
|
||||||
descr = OptionDescription("int", "", [b])
|
descr = OptionDescription("int", "", [b])
|
||||||
api = getapi(Config(descr))
|
api = getapi(Config(descr))
|
||||||
assert api.value.get_modified() == {'int': ('forced', 2)}
|
assert api.value.exportation() == (('int',), (None,), (2,), ('forced',))
|
||||||
|
|
||||||
|
|
||||||
def test_force_store_value_callback_params_2():
|
def test_force_store_value_callback_params_2():
|
||||||
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val3, callback_params={'': ((None,),), 'value': (2,)})
|
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val3, callback_params={'': ((None,),), 'value': (2,)})
|
||||||
descr = OptionDescription("int", "", [b])
|
descr = OptionDescription("int", "", [b])
|
||||||
api = getapi(Config(descr))
|
api = getapi(Config(descr))
|
||||||
assert api.value.get_modified() == {'int': ('forced', 2)}
|
assert api.value.exportation() == (('int',), (None,), (2,), ('forced',))
|
||||||
|
|
||||||
|
|
||||||
def test_force_store_value_callback_params_with_opt():
|
def test_force_store_value_callback_params_with_opt():
|
||||||
|
@ -218,4 +212,4 @@ def test_force_store_value_callback_params_with_opt():
|
||||||
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val2, callback_params={'value': ((a, False),)})
|
b = IntOption('int', 'Test int option', properties=('force_store_value',), callback=return_val2, callback_params={'value': ((a, False),)})
|
||||||
descr = OptionDescription("int", "", [a, b])
|
descr = OptionDescription("int", "", [a, b])
|
||||||
api = getapi(Config(descr))
|
api = getapi(Config(descr))
|
||||||
assert api.value.get_modified() == {'int': ('forced', 2)}
|
assert api.value.exportation() == (('int',), (None,), (2,), ('forced',))
|
||||||
|
|
|
@ -444,45 +444,45 @@ def test_reset_properties_force_store_value():
|
||||||
gcgroup = OptionDescription('gc', '', [gcdummy])
|
gcgroup = OptionDescription('gc', '', [gcdummy])
|
||||||
descr = OptionDescription('tiramisu', '', [gcgroup])
|
descr = OptionDescription('tiramisu', '', [gcgroup])
|
||||||
api = getapi(Config(descr))
|
api = getapi(Config(descr))
|
||||||
assert api.property.get_modified() == {}
|
assert api.property.exportation() == {}
|
||||||
api.property.add('frozen')
|
api.property.add('frozen')
|
||||||
if TIRAMISU_VERSION == 2:
|
if TIRAMISU_VERSION == 2:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'cache', 'validator', 'warnings', 'expire'))}
|
{None: set(('frozen', 'cache', 'validator', 'warnings', 'expire'))}
|
||||||
else:
|
else:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'cache', 'validator', 'warnings'))}
|
{None: set(('frozen', 'cache', 'validator', 'warnings'))}
|
||||||
api.property.reset()
|
api.property.reset()
|
||||||
assert api.property.get_modified() == {}
|
assert api.property.exportation() == {}
|
||||||
api.option('gc.dummy').property.add('test')
|
api.option('gc.dummy').property.add('test')
|
||||||
assert api.property.get_modified() == {'gc.dummy': set(('test', 'force_store_value'))}
|
assert api.property.exportation() == {'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
api.property.reset()
|
api.property.reset()
|
||||||
assert api.property.get_modified() == {'gc.dummy': set(('test', 'force_store_value'))}
|
assert api.property.exportation() == {'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
api.property.add('frozen')
|
api.property.add('frozen')
|
||||||
if TIRAMISU_VERSION == 2:
|
if TIRAMISU_VERSION == 2:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'validator', 'cache', 'warnings', 'expire')),
|
{None: set(('frozen', 'validator', 'cache', 'warnings', 'expire')),
|
||||||
'gc.dummy': set(('test', 'force_store_value'))}
|
'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
else:
|
else:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'validator', 'cache', 'warnings')),
|
{None: set(('frozen', 'validator', 'cache', 'warnings')),
|
||||||
'gc.dummy': set(('test', 'force_store_value'))}
|
'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
api.property.add('frozen')
|
api.property.add('frozen')
|
||||||
if TIRAMISU_VERSION == 2:
|
if TIRAMISU_VERSION == 2:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'validator', 'cache', 'warnings', 'expire')),
|
{None: set(('frozen', 'validator', 'cache', 'warnings', 'expire')),
|
||||||
'gc.dummy': set(('test', 'force_store_value'))}
|
'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
else:
|
else:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'validator', 'cache', 'warnings')),
|
{None: set(('frozen', 'validator', 'cache', 'warnings')),
|
||||||
'gc.dummy': set(('test', 'force_store_value'))}
|
'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
api.option('gc.dummy').property.add('test')
|
api.option('gc.dummy').property.add('test')
|
||||||
if TIRAMISU_VERSION == 2:
|
if TIRAMISU_VERSION == 2:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'validator', 'cache', 'warnings', 'expire')),
|
{None: set(('frozen', 'validator', 'cache', 'warnings', 'expire')),
|
||||||
'gc.dummy': set(('test', 'force_store_value'))}
|
'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
else:
|
else:
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'validator', 'cache', 'warnings')),
|
{None: set(('frozen', 'validator', 'cache', 'warnings')),
|
||||||
'gc.dummy': set(('test', 'force_store_value'))}
|
'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
|
|
||||||
|
@ -492,9 +492,9 @@ def test_set_modified_value():
|
||||||
gcgroup = OptionDescription('gc', '', [gcdummy])
|
gcgroup = OptionDescription('gc', '', [gcdummy])
|
||||||
descr = OptionDescription('tiramisu', '', [gcgroup])
|
descr = OptionDescription('tiramisu', '', [gcgroup])
|
||||||
api = getapi(Config(descr))
|
api = getapi(Config(descr))
|
||||||
assert api.property.get_modified() == {}
|
assert api.property.exportation() == {}
|
||||||
api.property.set_modified({None: set(('frozen', 'cache', 'validator', 'warnings'))})
|
api.property.importation({None: set(('frozen', 'cache', 'validator', 'warnings'))})
|
||||||
assert api.property.get_modified() == \
|
assert api.property.exportation() == \
|
||||||
{None: set(('frozen', 'cache', 'validator', 'warnings'))}
|
{None: set(('frozen', 'cache', 'validator', 'warnings'))}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -482,57 +482,23 @@ def test_values_with_master_and_slaves_master_pop():
|
||||||
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ["192.168.230.145", "192.168.230.146"]
|
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ["192.168.230.145", "192.168.230.146"]
|
||||||
assert api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
|
assert api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
|
||||||
assert api.option('ip_admin_eth0.netmask_admin_eth0', 1).value.get() == '255.255.0.0'
|
assert api.option('ip_admin_eth0.netmask_admin_eth0', 1).value.get() == '255.255.0.0'
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': (
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (1,)), (('192.168.230.145', '192.168.230.146'), ('255.255.0.0',)), ('user', ('user',)))
|
||||||
'user',
|
|
||||||
('192.168.230.145', '192.168.230.146')),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': (
|
|
||||||
{'1': 'user'},
|
|
||||||
{'1': '255.255.0.0'})}
|
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(0)
|
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(0)
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': (
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (0,)), (('192.168.230.146',), ('255.255.0.0',)), ('user', ('user',)))
|
||||||
'user',
|
|
||||||
('192.168.230.146',)),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': (
|
|
||||||
{'0': 'user'},
|
|
||||||
{'0': '255.255.0.0'})}
|
|
||||||
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ["192.168.230.146"]
|
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ["192.168.230.146"]
|
||||||
assert api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.0.0'
|
assert api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.0.0'
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.230.146', "192.168.230.145", "192.168.230.146", "192.168.230.147", "192.168.230.148", "192.168.230.149"])
|
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.230.146', "192.168.230.145", "192.168.230.146", "192.168.230.147", "192.168.230.148", "192.168.230.149"])
|
||||||
api.option('ip_admin_eth0.netmask_admin_eth0', 3).value.set('255.255.0.0')
|
api.option('ip_admin_eth0.netmask_admin_eth0', 3).value.set('255.255.0.0')
|
||||||
api.option('ip_admin_eth0.netmask_admin_eth0', 4).value.set('255.255.0.0')
|
api.option('ip_admin_eth0.netmask_admin_eth0', 4).value.set('255.255.0.0')
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': (
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (0, 3, 4)), (('192.168.230.146', "192.168.230.145", "192.168.230.146", "192.168.230.147", "192.168.230.148", "192.168.230.149"), ('255.255.0.0', '255.255.0.0', '255.255.0.0')), ('user', ('user', 'user', 'user')))
|
||||||
'user',
|
|
||||||
('192.168.230.146', "192.168.230.145", "192.168.230.146", "192.168.230.147", "192.168.230.148", "192.168.230.149")),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': (
|
|
||||||
{'0': 'user', '3': 'user', '4': 'user'},
|
|
||||||
{'0': '255.255.0.0', '3': '255.255.0.0', '4': '255.255.0.0'})}
|
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(5)
|
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(5)
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': (
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (0, 3, 4)), (('192.168.230.146', "192.168.230.145", "192.168.230.146", "192.168.230.147", "192.168.230.148"), ('255.255.0.0', '255.255.0.0', '255.255.0.0')), ('user', ('user', 'user', 'user')))
|
||||||
'user',
|
|
||||||
('192.168.230.146', "192.168.230.145", "192.168.230.146", "192.168.230.147", "192.168.230.148")),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': (
|
|
||||||
{'0': 'user', '3': 'user', '4': 'user'},
|
|
||||||
{'0': '255.255.0.0', '3': '255.255.0.0', '4': '255.255.0.0'})}
|
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(2)
|
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(2)
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': (
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (0, 2, 3)), (('192.168.230.146', "192.168.230.145", "192.168.230.147", "192.168.230.148"), ('255.255.0.0', '255.255.0.0', '255.255.0.0')), ('user', ('user', 'user', 'user')))
|
||||||
'user',
|
|
||||||
('192.168.230.146', "192.168.230.145", "192.168.230.147", "192.168.230.148")),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': (
|
|
||||||
{'0': 'user', '2': 'user', '3': 'user'},
|
|
||||||
{'0': '255.255.0.0', '2': '255.255.0.0', '3': '255.255.0.0'})}
|
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(2)
|
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(2)
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': ('user',
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (0, 2)), (('192.168.230.146', "192.168.230.145", "192.168.230.148"), ('255.255.0.0', '255.255.0.0')), ('user', ('user', 'user')))
|
||||||
('192.168.230.146',
|
|
||||||
"192.168.230.145",
|
|
||||||
"192.168.230.148")),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': ({'0': 'user', '2': 'user'},
|
|
||||||
{'0': '255.255.0.0', '2': '255.255.0.0'})}
|
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(2)
|
api.option('ip_admin_eth0.ip_admin_eth0').value.pop(2)
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': ('user',
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0'), (None, (0,)), (('192.168.230.146', "192.168.230.145"), ('255.255.0.0',)), ('user', ('user',)))
|
||||||
('192.168.230.146',
|
|
||||||
"192.168.230.145")),
|
|
||||||
'ip_admin_eth0.netmask_admin_eth0': ({'0': 'user'},
|
|
||||||
{'0': '255.255.0.0'})}
|
|
||||||
|
|
||||||
|
|
||||||
def test_values_with_master_owner():
|
def test_values_with_master_owner():
|
||||||
|
@ -613,11 +579,11 @@ def test_groups_with_master_get_modified_value():
|
||||||
maconfig = OptionDescription('toto', '', [interface1])
|
maconfig = OptionDescription('toto', '', [interface1])
|
||||||
api = getapi(Config(maconfig))
|
api = getapi(Config(maconfig))
|
||||||
api.property.read_write()
|
api.property.read_write()
|
||||||
assert api.value.get_modified() == {}
|
assert api.value.exportation() == ((), (), (), ())
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
|
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': ('user', ('192.168.1.1',))}
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0',), (None,), (('192.168.1.1',),), ('user',))
|
||||||
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.255')
|
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.255')
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': ('user', ('192.168.1.1',)), 'ip_admin_eth0.netmask_admin_eth0': ({'0': 'user'}, {'0': '255.255.255.255'})}
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0',), (None, (0,)), (('192.168.1.1',), ('255.255.255.255',)), ('user', ('user',)))
|
||||||
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1', '192.168.1.1'])
|
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1', '192.168.1.1'])
|
||||||
api.option('ip_admin_eth0.netmask_admin_eth0', 1).value.set('255.255.255.255')
|
api.option('ip_admin_eth0.netmask_admin_eth0', 1).value.set('255.255.255.255')
|
||||||
assert api.value.get_modified() == {'ip_admin_eth0.ip_admin_eth0': ('user', ('192.168.1.1', '192.168.1.1')), 'ip_admin_eth0.netmask_admin_eth0': ({'0': 'user', '1': 'user'}, {'0': '255.255.255.255', '1': '255.255.255.255'})}
|
assert api.value.exportation() == (('ip_admin_eth0.ip_admin_eth0', 'ip_admin_eth0.netmask_admin_eth0',), (None, (0, 1)), (('192.168.1.1', '192.168.1.1'), ('255.255.255.255', '255.255.255.255')), ('user', ('user', 'user')))
|
||||||
|
|
|
@ -580,7 +580,9 @@ class TiramisuOption(CommonTiramisu):
|
||||||
return self._get_option().impl_get_group_type()
|
return self._get_option().impl_get_group_type()
|
||||||
|
|
||||||
@count
|
@count
|
||||||
def _list(self, type='all', group_type=None):
|
def _list(self,
|
||||||
|
type='all',
|
||||||
|
group_type=None):
|
||||||
if type == 'optiondescription':
|
if type == 'optiondescription':
|
||||||
return self.config_bag.config.getattr(self.path,
|
return self.config_bag.config.getattr(self.path,
|
||||||
None,
|
None,
|
||||||
|
@ -620,10 +622,6 @@ class TiramisuContextValue(TiramisuContext):
|
||||||
def mandatory_warnings(self):
|
def mandatory_warnings(self):
|
||||||
return self.config_bag.config.cfgimpl_get_values().mandatory_warnings(self.config_bag)
|
return self.config_bag.config.cfgimpl_get_values().mandatory_warnings(self.config_bag)
|
||||||
|
|
||||||
@count
|
|
||||||
def get_modified(self):
|
|
||||||
return self.config_bag.config.cfgimpl_get_values().get_modified_values()
|
|
||||||
|
|
||||||
def set(self,
|
def set(self,
|
||||||
path,
|
path,
|
||||||
value,
|
value,
|
||||||
|
@ -647,13 +645,19 @@ class TiramisuContextValue(TiramisuContext):
|
||||||
self.config_bag,
|
self.config_bag,
|
||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
|
@count
|
||||||
def reset(self,
|
def reset(self,
|
||||||
path):
|
path):
|
||||||
self.config_bag.config.reset(path, self.config_bag)
|
self.config_bag.config.reset(path, self.config_bag)
|
||||||
|
|
||||||
def export(self):
|
@count
|
||||||
|
def exportation(self):
|
||||||
return self.config_bag.config.cfgimpl_get_values()._p_.exportation()
|
return self.config_bag.config.cfgimpl_get_values()._p_.exportation()
|
||||||
|
|
||||||
|
@count
|
||||||
|
def importation(self, values):
|
||||||
|
return self.config_bag.config.cfgimpl_get_values()._p_.importation(values)
|
||||||
|
|
||||||
|
|
||||||
class TiramisuContextOwner(TiramisuContext):
|
class TiramisuContextOwner(TiramisuContext):
|
||||||
@count
|
@count
|
||||||
|
@ -705,22 +709,23 @@ class TiramisuContextProperty(TiramisuContext):
|
||||||
def get(self):
|
def get(self):
|
||||||
return set(self.config_bag.setting_properties)
|
return set(self.config_bag.setting_properties)
|
||||||
|
|
||||||
@count
|
|
||||||
def get_modified(self):
|
|
||||||
return self.config_bag.config.cfgimpl_get_settings().get_modified_properties()
|
|
||||||
|
|
||||||
@count
|
|
||||||
def set_modified(self, props):
|
|
||||||
return self.config_bag.config.cfgimpl_get_settings().set_modified_properties(props)
|
|
||||||
|
|
||||||
@count
|
@count
|
||||||
def set(self, props):
|
def set(self, props):
|
||||||
self.config_bag.config.cfgimpl_get_settings().set_context_properties(props)
|
self.config_bag.config.cfgimpl_get_settings().set_context_properties(props)
|
||||||
self.config_bag.setting_properties = self.config_bag.config.cfgimpl_get_settings().get_context_properties()
|
self.config_bag.setting_properties = self.config_bag.config.cfgimpl_get_settings().get_context_properties()
|
||||||
|
|
||||||
|
@count
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.config_bag.config.cfgimpl_get_settings().reset()
|
self.config_bag.config.cfgimpl_get_settings().reset()
|
||||||
|
|
||||||
|
@count
|
||||||
|
def exportation(self):
|
||||||
|
return self.config_bag.config.cfgimpl_get_settings()._p_.exportation()
|
||||||
|
|
||||||
|
@count
|
||||||
|
def importation(self, properties):
|
||||||
|
return self.config_bag.config.cfgimpl_get_settings()._p_.importation(properties)
|
||||||
|
|
||||||
|
|
||||||
class TiramisuContextPermissive(TiramisuContext):
|
class TiramisuContextPermissive(TiramisuContext):
|
||||||
|
|
||||||
|
@ -728,6 +733,15 @@ class TiramisuContextPermissive(TiramisuContext):
|
||||||
def set(self, permissives):
|
def set(self, permissives):
|
||||||
self.config_bag.config.cfgimpl_get_settings().set_context_permissive(permissives)
|
self.config_bag.config.cfgimpl_get_settings().set_context_permissive(permissives)
|
||||||
|
|
||||||
|
@count
|
||||||
|
def exportation(self):
|
||||||
|
return self.config_bag.config.cfgimpl_get_settings()._pp_.exportation()
|
||||||
|
|
||||||
|
@count
|
||||||
|
def importation(self, permissives):
|
||||||
|
return self.config_bag.config.cfgimpl_get_settings()._pp_.importation(permissives)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TiramisuContextOption(TiramisuContext):
|
class TiramisuContextOption(TiramisuContext):
|
||||||
@count
|
@count
|
||||||
|
@ -769,11 +783,15 @@ class TiramisuContextOption(TiramisuContext):
|
||||||
withvalue=withvalue)
|
withvalue=withvalue)
|
||||||
|
|
||||||
@count
|
@count
|
||||||
def list(self, type='all', group_type=None):
|
def list(self,
|
||||||
|
type='all',
|
||||||
|
group_type=None,
|
||||||
|
recursive=False):
|
||||||
if type == 'optiondescription':
|
if type == 'optiondescription':
|
||||||
return self.config_bag.config.iter_groups(self.config_bag, group_type)
|
return self.config_bag.config.iter_groups(self.config_bag, group_type)
|
||||||
elif type == 'all':
|
elif type == 'all':
|
||||||
return self.config_bag.config.cfgimpl_get_children(self.config_bag)
|
return self.config_bag.config.cfgimpl_get_children(recursive,
|
||||||
|
self.config_bag)
|
||||||
else:
|
else:
|
||||||
raise APIError(_('unknown list type {}').format(type))
|
raise APIError(_('unknown list type {}').format(type))
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,6 @@ class SubConfig(object):
|
||||||
for woption in opt._get_dependencies(self):
|
for woption in opt._get_dependencies(self):
|
||||||
option = woption()
|
option = woption()
|
||||||
option_path = option.impl_getpath(self)
|
option_path = option.impl_getpath(self)
|
||||||
print(option_path, resetted_opts)
|
|
||||||
if option_path in resetted_opts:
|
if option_path in resetted_opts:
|
||||||
continue
|
continue
|
||||||
self.reset_one_option_cache(values,
|
self.reset_one_option_cache(values,
|
||||||
|
@ -159,40 +158,6 @@ class SubConfig(object):
|
||||||
return self, path[-1]
|
return self, path[-1]
|
||||||
|
|
||||||
# ______________________________________________________________________
|
# ______________________________________________________________________
|
||||||
# def __iter__(self, force_permissive=False):
|
|
||||||
# """Pythonesque way of parsing group's ordered options.
|
|
||||||
# iteration only on Options (not OptionDescriptions)"""
|
|
||||||
# setting_properties = self.cfgimpl_get_context().cfgimpl_get_settings().get_context_properties()
|
|
||||||
# for child in self.cfgimpl_get_description().impl_getchildren(context=self._cfgimpl_get_context()):
|
|
||||||
# if not child.impl_is_optiondescription():
|
|
||||||
# try:
|
|
||||||
# name = child.impl_getname()
|
|
||||||
# yield name, self.getattr(name,
|
|
||||||
# force_permissive=force_permissive,
|
|
||||||
# setting_properties=setting_properties)
|
|
||||||
# except GeneratorExit: # pragma: optional cover
|
|
||||||
# if sys.version_info[0] < 3:
|
|
||||||
# raise StopIteration
|
|
||||||
# else:
|
|
||||||
# raise GeneratorExit()
|
|
||||||
# except PropertiesOptionError: # pragma: optional cover
|
|
||||||
# pass # option with properties
|
|
||||||
#
|
|
||||||
# def iter_all(self, force_permissive=False):
|
|
||||||
# """A way of parsing options **and** groups.
|
|
||||||
# iteration on Options and OptionDescriptions."""
|
|
||||||
# for child in self.cfgimpl_get_description().impl_getchildren():
|
|
||||||
# try:
|
|
||||||
# yield child.impl_getname(), self.getattr(child.impl_getname(),
|
|
||||||
# force_permissive=force_permissive)
|
|
||||||
# except GeneratorExit: # pragma: optional cover
|
|
||||||
# if sys.version_info[0] < 3:
|
|
||||||
# raise StopIteration
|
|
||||||
# else:
|
|
||||||
# raise GeneratorExit()
|
|
||||||
# except PropertiesOptionError: # pragma: optional cover
|
|
||||||
# pass # option with properties
|
|
||||||
|
|
||||||
def iter_groups(self,
|
def iter_groups(self,
|
||||||
config_bag,
|
config_bag,
|
||||||
group_type=None):
|
group_type=None):
|
||||||
|
@ -207,7 +172,6 @@ class SubConfig(object):
|
||||||
if group_type is not None and not isinstance(group_type,
|
if group_type is not None and not isinstance(group_type,
|
||||||
groups.GroupType): # pragma: optional cover
|
groups.GroupType): # pragma: optional cover
|
||||||
raise TypeError(_("unknown group_type: {0}").format(group_type))
|
raise TypeError(_("unknown group_type: {0}").format(group_type))
|
||||||
context = self._cfgimpl_get_context()
|
|
||||||
for child in self.cfgimpl_get_description().impl_getchildren(config_bag):
|
for child in self.cfgimpl_get_description().impl_getchildren(config_bag):
|
||||||
if child.impl_is_optiondescription():
|
if child.impl_is_optiondescription():
|
||||||
nconfig_bag = config_bag.copy('nooption')
|
nconfig_bag = config_bag.copy('nooption')
|
||||||
|
@ -223,7 +187,8 @@ class SubConfig(object):
|
||||||
except PropertiesOptionError: # pragma: optional cover
|
except PropertiesOptionError: # pragma: optional cover
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def cfgimpl_get_children(self, config_bag):
|
def cfgimpl_get_children(self,
|
||||||
|
config_bag):
|
||||||
context = self._cfgimpl_get_context()
|
context = self._cfgimpl_get_context()
|
||||||
for opt in self.cfgimpl_get_description().impl_getchildren(config_bag):
|
for opt in self.cfgimpl_get_description().impl_getchildren(config_bag):
|
||||||
nconfig_bag = config_bag.copy('nooption')
|
nconfig_bag = config_bag.copy('nooption')
|
||||||
|
@ -844,10 +809,10 @@ class _CommonConfig(SubConfig):
|
||||||
force_values=force_values,
|
force_values=force_values,
|
||||||
force_settings=force_settings)
|
force_settings=force_settings)
|
||||||
config.cfgimpl_get_values()._p_.importation(self.cfgimpl_get_values()._p_.exportation())
|
config.cfgimpl_get_values()._p_.importation(self.cfgimpl_get_values()._p_.exportation())
|
||||||
config.cfgimpl_get_settings()._p_.set_modified_properties(self.cfgimpl_get_settings(
|
config.cfgimpl_get_settings()._p_.importation(self.cfgimpl_get_settings(
|
||||||
)._p_.get_modified_properties())
|
)._p_.exportation())
|
||||||
config.cfgimpl_get_settings()._pp_.set_modified_permissives(self.cfgimpl_get_settings(
|
config.cfgimpl_get_settings()._pp_.importation(self.cfgimpl_get_settings(
|
||||||
)._pp_.get_modified_permissives())
|
)._pp_.exportation())
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -771,18 +771,6 @@ class Settings(object):
|
||||||
self._read(rw_remove,
|
self._read(rw_remove,
|
||||||
rw_append)
|
rw_append)
|
||||||
|
|
||||||
#____________________________________________________________
|
|
||||||
# get modified properties/permissives
|
|
||||||
|
|
||||||
def get_modified_properties(self):
|
|
||||||
return self._p_.get_modified_properties()
|
|
||||||
|
|
||||||
def set_modified_properties(self, props):
|
|
||||||
return self._p_.set_modified_properties(props)
|
|
||||||
|
|
||||||
def get_modified_permissives(self):
|
|
||||||
return self._pp_.get_modified_permissives()
|
|
||||||
|
|
||||||
#____________________________________________________________
|
#____________________________________________________________
|
||||||
# default owner methods
|
# default owner methods
|
||||||
|
|
||||||
|
|
|
@ -55,13 +55,13 @@ class Properties(Cache):
|
||||||
if path in self._properties:
|
if path in self._properties:
|
||||||
del(self._properties[path])
|
del(self._properties[path])
|
||||||
|
|
||||||
def get_modified_properties(self):
|
def exportation(self):
|
||||||
"""return all modified settings in a dictionary
|
"""return all modified settings in a dictionary
|
||||||
example: {'path1': set(['prop1', 'prop2'])}
|
example: {'path1': set(['prop1', 'prop2'])}
|
||||||
"""
|
"""
|
||||||
return copy(self._properties)
|
return copy(self._properties)
|
||||||
|
|
||||||
def set_modified_properties(self, properties):
|
def importation(self, properties):
|
||||||
self._properties = properties
|
self._properties = properties
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,12 +88,12 @@ class Permissives(Cache):
|
||||||
print('getpermissive', path, ret)
|
print('getpermissive', path, ret)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def get_modified_permissives(self):
|
def exportation(self):
|
||||||
"""return all modified permissives in a dictionary
|
"""return all modified permissives in a dictionary
|
||||||
example: {'path1': set(['perm1', 'perm2'])}
|
example: {'path1': set(['perm1', 'perm2'])}
|
||||||
"""
|
"""
|
||||||
return copy(self._permissives)
|
return copy(self._permissives)
|
||||||
|
|
||||||
def set_modified_permissives(self, permissives):
|
def importation(self, permissives):
|
||||||
self._permissives = permissives
|
self._permissives = permissives
|
||||||
|
|
||||||
|
|
|
@ -176,26 +176,6 @@ class Values(Cache):
|
||||||
_resetvalue(3)
|
_resetvalue(3)
|
||||||
self._values = tuple(values)
|
self._values = tuple(values)
|
||||||
|
|
||||||
def get_modified_values(self):
|
|
||||||
"""return all values in a dictionary
|
|
||||||
example: {'path1': (owner, 'value1'), 'path2': (owner, 'value2')}
|
|
||||||
"""
|
|
||||||
values = {}
|
|
||||||
for idx, path in enumerate(self._values[0]):
|
|
||||||
indexes = self._values[1][idx]
|
|
||||||
value = self._values[2][idx]
|
|
||||||
owner = self._values[3][idx]
|
|
||||||
if indexes is not None:
|
|
||||||
val = {}
|
|
||||||
own = {}
|
|
||||||
for cpt, index in enumerate(indexes):
|
|
||||||
val[str(index)] = value[cpt]
|
|
||||||
own[str(index)] = owner[cpt]
|
|
||||||
value = val
|
|
||||||
owner = own
|
|
||||||
values[path] = (owner, value)
|
|
||||||
return values
|
|
||||||
|
|
||||||
# owner
|
# owner
|
||||||
def setowner(self, path, owner, index=None):
|
def setowner(self, path, owner, index=None):
|
||||||
"""change owner for a path
|
"""change owner for a path
|
||||||
|
|
|
@ -117,13 +117,13 @@ class Settings(Cache, SqlAlchemyBase):
|
||||||
#replace None by a frozenset()
|
#replace None by a frozenset()
|
||||||
return {None: frozenset()}.get(ret, ret)
|
return {None: frozenset()}.get(ret, ret)
|
||||||
|
|
||||||
def get_modified_properties(self):
|
def exportation(self):
|
||||||
"""return all modified settings in a dictionary
|
"""return all modified settings in a dictionary
|
||||||
example: {'path1': set(['prop1', 'prop2'])}
|
example: {'path1': set(['prop1', 'prop2'])}
|
||||||
"""
|
"""
|
||||||
return self._properties
|
return self._properties
|
||||||
|
|
||||||
def get_modified_permissives(self):
|
def importation(self):
|
||||||
"""return all modified permissives in a dictionary
|
"""return all modified permissives in a dictionary
|
||||||
example: {'path1': set(['perm1', 'perm2'])}
|
example: {'path1': set(['perm1', 'perm2'])}
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -111,21 +111,6 @@ class Values(Cache):
|
||||||
session.delete(val)
|
session.delete(val)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
def get_modified_values(self):
|
|
||||||
"""return all values in a dictionary
|
|
||||||
example: {'path1': (owner, 'value1'), 'path2': (owner, 'value2')}
|
|
||||||
"""
|
|
||||||
session = self.getsession()
|
|
||||||
ret = {}
|
|
||||||
for val in session.query(Value).filter_by(
|
|
||||||
session_id=self._storage.session_id).all():
|
|
||||||
value = val.value
|
|
||||||
if isinstance(val.value, list):
|
|
||||||
value = tuple(val.value)
|
|
||||||
ret[val.path] = (val.owner, value)
|
|
||||||
del(session)
|
|
||||||
return ret
|
|
||||||
|
|
||||||
# owner
|
# owner
|
||||||
def setowner(self, path, owner, session, index=None):
|
def setowner(self, path, owner, session, index=None):
|
||||||
"""change owner for a path
|
"""change owner for a path
|
||||||
|
|
|
@ -57,7 +57,7 @@ class Properties(Sqlite3DB):
|
||||||
self._storage.execute("DELETE FROM property WHERE path = ? AND session_id = ?",
|
self._storage.execute("DELETE FROM property WHERE path = ? AND session_id = ?",
|
||||||
(path, self._session_id))
|
(path, self._session_id))
|
||||||
|
|
||||||
def get_modified_properties(self):
|
def exportation(self):
|
||||||
"""return all modified settings in a dictionary
|
"""return all modified settings in a dictionary
|
||||||
example: {'path1': set(['prop1', 'prop2'])}
|
example: {'path1': set(['prop1', 'prop2'])}
|
||||||
"""
|
"""
|
||||||
|
@ -70,7 +70,7 @@ class Properties(Sqlite3DB):
|
||||||
ret[path] = self._sqlite_decode(properties)
|
ret[path] = self._sqlite_decode(properties)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def set_modified_properties(self, properties):
|
def importation(self, properties):
|
||||||
self._storage.execute("DELETE FROM property", commit=False)
|
self._storage.execute("DELETE FROM property", commit=False)
|
||||||
for path, property_ in properties.items():
|
for path, property_ in properties.items():
|
||||||
self._storage.execute("INSERT INTO property(path, properties, session_id) "
|
self._storage.execute("INSERT INTO property(path, properties, session_id) "
|
||||||
|
@ -104,7 +104,7 @@ class Permissives(Sqlite3DB):
|
||||||
else:
|
else:
|
||||||
return frozenset(self._sqlite_decode(permissives[0]))
|
return frozenset(self._sqlite_decode(permissives[0]))
|
||||||
|
|
||||||
def get_modified_permissives(self):
|
def exportation(self):
|
||||||
"""return all modified permissives in a dictionary
|
"""return all modified permissives in a dictionary
|
||||||
example: {'path1': set(['perm1', 'perm2'])}
|
example: {'path1': set(['perm1', 'perm2'])}
|
||||||
"""
|
"""
|
||||||
|
@ -117,7 +117,7 @@ class Permissives(Sqlite3DB):
|
||||||
ret[path] = self._sqlite_decode(permissives)
|
ret[path] = self._sqlite_decode(permissives)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def set_modified_permissives(self, permissives):
|
def importation(self, permissives):
|
||||||
self._storage.execute("DELETE FROM permissive", commit=False)
|
self._storage.execute("DELETE FROM permissive", commit=False)
|
||||||
for path, permissive in permissives.items():
|
for path, permissive in permissives.items():
|
||||||
self._storage.execute("INSERT INTO permissive(path, permissives, session_id) "
|
self._storage.execute("INSERT INTO permissive(path, permissives, session_id) "
|
||||||
|
|
|
@ -86,31 +86,6 @@ class Values(Sqlite3DB):
|
||||||
self._storage.execute("DELETE FROM value WHERE path = ? AND session_id = ?", (path, self._session_id),
|
self._storage.execute("DELETE FROM value WHERE path = ? AND session_id = ?", (path, self._session_id),
|
||||||
commit=_commit)
|
commit=_commit)
|
||||||
|
|
||||||
def get_modified_values(self):
|
|
||||||
"""return all values in a dictionary
|
|
||||||
example: {option1: (owner, 'value1'), option2: (owner, 'value2')}
|
|
||||||
"""
|
|
||||||
ret = {}
|
|
||||||
for path, value, owner, index, _ in self._storage.select("SELECT * FROM value WHERE "
|
|
||||||
"session_id = ?",
|
|
||||||
(self._session_id,),
|
|
||||||
only_one=False):
|
|
||||||
path = self._sqlite_decode_path(path)
|
|
||||||
owner = getattr(owners, owner)
|
|
||||||
|
|
||||||
value = self._sqlite_decode(value)
|
|
||||||
if isinstance(value, list):
|
|
||||||
value = tuple(value)
|
|
||||||
if index is None:
|
|
||||||
ret[path] = (owner, value)
|
|
||||||
else:
|
|
||||||
if path in ret:
|
|
||||||
ret[path][0][str(index)] = owner
|
|
||||||
ret[path][1][str(index)] = value
|
|
||||||
else:
|
|
||||||
ret[path] = ({str(index): owner}, {str(index): value})
|
|
||||||
return ret
|
|
||||||
|
|
||||||
# owner
|
# owner
|
||||||
def setowner(self, path, owner, session, index=None):
|
def setowner(self, path, owner, session, index=None):
|
||||||
"""change owner for an option
|
"""change owner for an option
|
||||||
|
|
|
@ -315,9 +315,6 @@ class Values(object):
|
||||||
isempty = value is None or value == empty
|
isempty = value is None or value == empty
|
||||||
return isempty
|
return isempty
|
||||||
|
|
||||||
def get_modified_values(self):
|
|
||||||
return self._p_.get_modified_values()
|
|
||||||
|
|
||||||
#______________________________________________________________________
|
#______________________________________________________________________
|
||||||
# set value
|
# set value
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue