add owner
This commit is contained in:
parent
cd50cf7551
commit
ca2f4487dd
|
@ -36,6 +36,17 @@ def test_default_owner():
|
||||||
dm.setowner(cfg, owners.user)
|
dm.setowner(cfg, owners.user)
|
||||||
assert dm.getowner(cfg) == owners.user
|
assert dm.getowner(cfg) == owners.user
|
||||||
|
|
||||||
|
def test_add_owner():
|
||||||
|
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
||||||
|
descr = OptionDescription('tiramisu', '', [gcdummy])
|
||||||
|
cfg = Config(descr)
|
||||||
|
assert cfg.dummy == False
|
||||||
|
dm = cfg.unwrap_from_path('dummy')
|
||||||
|
assert dm.getowner(cfg) == 'default'
|
||||||
|
owners.add_owner("gen_config")
|
||||||
|
dm.setowner(cfg, owners.gen_config)
|
||||||
|
assert dm.getowner(cfg) == owners.gen_config
|
||||||
|
|
||||||
def test_owner_is_not_a_string():
|
def test_owner_is_not_a_string():
|
||||||
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
||||||
descr = OptionDescription('tiramisu', '', [gcdummy])
|
descr = OptionDescription('tiramisu', '', [gcdummy])
|
||||||
|
|
|
@ -59,9 +59,9 @@ def test_get_group_type():
|
||||||
grp = config.unwrap_from_path('creole.general')
|
grp = config.unwrap_from_path('creole.general')
|
||||||
assert grp.get_group_type() == groups.family
|
assert grp.get_group_type() == groups.family
|
||||||
assert grp.get_group_type() == 'family'
|
assert grp.get_group_type() == 'family'
|
||||||
assert isinstance(grp.get_group_type(), groups.GroupName)
|
assert isinstance(grp.get_group_type(), groups.GroupType)
|
||||||
grp.set_group_type(groups.default)
|
grp.set_group_type(groups.default)
|
||||||
assert isinstance(grp.get_group_type(), groups.DefaultGroupName)
|
assert isinstance(grp.get_group_type(), groups.DefaultGroupType)
|
||||||
assert grp.get_group_type() == groups.default
|
assert grp.get_group_type() == groups.default
|
||||||
assert grp.get_group_type() == 'default'
|
assert grp.get_group_type() == 'default'
|
||||||
|
|
||||||
|
|
|
@ -329,7 +329,6 @@ class Config(object):
|
||||||
if not isinstance(who, owners.Owner):
|
if not isinstance(who, owners.Owner):
|
||||||
raise TypeError("invalid owner [{0}] for option: {1}".format(
|
raise TypeError("invalid owner [{0}] for option: {1}".format(
|
||||||
str(who), name))
|
str(who), name))
|
||||||
print "ssdfsdfsdfsdfsdf", type(child)
|
|
||||||
child.setoption(self, value)
|
child.setoption(self, value)
|
||||||
child.setowner(self, who)
|
child.setowner(self, who)
|
||||||
else:
|
else:
|
||||||
|
@ -458,13 +457,13 @@ class Config(object):
|
||||||
"""iteration on groups objects only.
|
"""iteration on groups objects only.
|
||||||
All groups are returned if `group_type` is `None`, otherwise the groups
|
All groups are returned if `group_type` is `None`, otherwise the groups
|
||||||
can be filtered by categories (families, or whatever).
|
can be filtered by categories (families, or whatever).
|
||||||
:param group_type: if defined, is an instance of `groups.GroupName`
|
:param group_type: if defined, is an instance of `groups.GroupType`
|
||||||
or `groups.MasterGroupName` that lives in
|
or `groups.MasterGroupType` that lives in
|
||||||
`settings.groups`
|
`settings.groups`
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if group_type is not None:
|
if group_type is not None:
|
||||||
if not isinstance(group_type, groups.GroupName):
|
if not isinstance(group_type, groups.GroupType):
|
||||||
raise TypeError("Unknown group_type: {0}".format(group_type))
|
raise TypeError("Unknown group_type: {0}".format(group_type))
|
||||||
for child in self._cfgimpl_descr._children:
|
for child in self._cfgimpl_descr._children:
|
||||||
if isinstance(child, OptionDescription):
|
if isinstance(child, OptionDescription):
|
||||||
|
|
|
@ -539,12 +539,12 @@ class OptionDescription(HiddenBaseType, DisabledBaseType):
|
||||||
def set_group_type(self, group_type, master=None):
|
def set_group_type(self, group_type, master=None):
|
||||||
"""sets a given group object to an OptionDescription
|
"""sets a given group object to an OptionDescription
|
||||||
|
|
||||||
:param group_type: an instance of `GroupName` or `MasterGroupName`
|
:param group_type: an instance of `GroupType` or `MasterGroupType`
|
||||||
that lives in `setting.groups`
|
that lives in `setting.groups`
|
||||||
"""
|
"""
|
||||||
if isinstance(group_type, groups.GroupName):
|
if isinstance(group_type, groups.GroupType):
|
||||||
self.group_type = group_type
|
self.group_type = group_type
|
||||||
if isinstance(group_type, groups.MasterGroupName):
|
if isinstance(group_type, groups.MasterGroupType):
|
||||||
if master is None:
|
if master is None:
|
||||||
raise ConfigError('this group type ({0}) needs a master '
|
raise ConfigError('this group type ({0}) needs a master '
|
||||||
'for OptionDescription {1}'.format(group_type,
|
'for OptionDescription {1}'.format(group_type,
|
||||||
|
|
|
@ -37,16 +37,16 @@ class _const:
|
||||||
# ____________________________________________________________
|
# ____________________________________________________________
|
||||||
class GroupModule(_const):
|
class GroupModule(_const):
|
||||||
"emulates a module to manage unique group (OptionDescription) names"
|
"emulates a module to manage unique group (OptionDescription) names"
|
||||||
class GroupName(str):
|
class GroupType(str):
|
||||||
"""allowed normal group (OptionDescription) names
|
"""allowed normal group (OptionDescription) names
|
||||||
*normal* means : groups that are not master
|
*normal* means : groups that are not master
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
class DefaultGroupName(GroupName):
|
class DefaultGroupType(GroupType):
|
||||||
"""groups that are default (typically 'default')"""
|
"""groups that are default (typically 'default')"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class MasterGroupName(GroupName):
|
class MasterGroupType(GroupType):
|
||||||
"""allowed normal group (OptionDescription) names
|
"""allowed normal group (OptionDescription) names
|
||||||
*master* means : groups that have the 'master' attribute set
|
*master* means : groups that have the 'master' attribute set
|
||||||
"""
|
"""
|
||||||
|
@ -62,11 +62,11 @@ def populate_groups():
|
||||||
# populates normal or master groups
|
# populates normal or master groups
|
||||||
for grp in _available_group_names:
|
for grp in _available_group_names:
|
||||||
if grp in _available_groups_with_a_master:
|
if grp in _available_groups_with_a_master:
|
||||||
setattr(groups, grp, groups.MasterGroupName(grp))
|
setattr(groups, grp, groups.MasterGroupType(grp))
|
||||||
elif grp in _available_default_groups:
|
elif grp in _available_default_groups:
|
||||||
setattr(groups, grp, groups.DefaultGroupName(grp))
|
setattr(groups, grp, groups.DefaultGroupType(grp))
|
||||||
else:
|
else:
|
||||||
setattr(groups, grp, groups.GroupName(grp))
|
setattr(groups, grp, groups.GroupType(grp))
|
||||||
# names are in the module now
|
# names are in the module now
|
||||||
populate_groups()
|
populate_groups()
|
||||||
# ____________________________________________________________
|
# ____________________________________________________________
|
||||||
|
@ -93,6 +93,13 @@ def populate_owners():
|
||||||
"""
|
"""
|
||||||
setattr(owners, 'default', owners.DefaultOwner('default'))
|
setattr(owners, 'default', owners.DefaultOwner('default'))
|
||||||
setattr(owners,'user', owners.Owner('user'))
|
setattr(owners,'user', owners.Owner('user'))
|
||||||
|
def add_owner(name):
|
||||||
|
"""
|
||||||
|
:param name: the name of the new owner
|
||||||
|
"""
|
||||||
|
setattr(owners, name, owners.Owner(name))
|
||||||
|
setattr(owners, 'add_owner', add_owner)
|
||||||
|
|
||||||
# names are in the module now
|
# names are in the module now
|
||||||
populate_owners()
|
populate_owners()
|
||||||
#____________________________________________________________
|
#____________________________________________________________
|
||||||
|
|
Loading…
Reference in New Issue