remove (g|s)et_modified_*, now it's exportation/importation

This commit is contained in:
Emmanuel Garette 2018-04-04 21:51:18 +02:00
parent 19b6ad6082
commit bc4fa9d3d0
15 changed files with 97 additions and 228 deletions

View file

@ -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():

View file

@ -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',))

View file

@ -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',))

View file

@ -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'))}

View file

@ -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')))

View file

@ -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))

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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'])}
""" """

View file

@ -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

View file

@ -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) "

View file

@ -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

View file

@ -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