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