summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-24 23:49:44 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-24 23:49:44 +0000
commitf531f7da81864f135ff1a5f7d69e15fbe8a27210 (patch)
tree50d838f3b35d1dee017755d215f6f93b08b4e4aa
parentbe2e323bbf3f036777acd6e5e16e03f9e66b2ee8 (diff)
downloadfreeipa-f531f7da81864f135ff1a5f7d69e15fbe8a27210.tar.gz
freeipa-f531f7da81864f135ff1a5f7d69e15fbe8a27210.tar.xz
freeipa-f531f7da81864f135ff1a5f7d69e15fbe8a27210.zip
354: Added NameSpace.__todict__() method that returns copy of NameSpace.__map; updated NameSpace unit test to also test __todict__()
-rw-r--r--ipalib/frontend.py9
-rw-r--r--ipalib/plugable.py18
-rw-r--r--ipalib/tests/test_plugable.py1
3 files changed, 20 insertions, 8 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index bcd610a5..6c5f8c76 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -521,8 +521,13 @@ class Object(plugable.Plugin):
takes_params = tuple()
def __create_params(self):
- for param in self.takes_params:
- yield create_param(param)
+ props = self.properties.__todict__()
+ for spec in self.takes_params:
+ if type(spec) is str and spec.rstrip('?*+') in props:
+ yield props.pop(spec.rstrip('?*+')).param
+ else:
+ yield create_param(spec)
+
def set_api(self, api):
super(Object, self).set_api(api)
diff --git a/ipalib/plugable.py b/ipalib/plugable.py
index cd130a19..e1d728d4 100644
--- a/ipalib/plugable.py
+++ b/ipalib/plugable.py
@@ -545,13 +545,13 @@ class NameSpace(ReadOnly):
def __len__(self):
"""
- Returns the number of members.
+ Return the number of members.
"""
return len(self.__members)
def __iter__(self):
"""
- Iterates through the member names.
+ Iterate through the member names.
If this instance was created with ``sort=True``, the names will be in
alphabetical order; otherwise the names will be in the same order as
@@ -564,7 +564,7 @@ class NameSpace(ReadOnly):
def __call__(self):
"""
- Iterates through the members.
+ Iterate through the members.
If this instance was created with ``sort=True``, the members will be
in alphabetical order by name; otherwise the members will be in the
@@ -577,13 +577,13 @@ class NameSpace(ReadOnly):
def __contains__(self, name):
"""
- Returns True if namespace has a member named ``name``.
+ Return True if namespace has a member named ``name``.
"""
return name in self.__map
def __getitem__(self, spec):
"""
- Returns a member by name or index, or returns a slice of members.
+ Return a member by name or index, or returns a slice of members.
:param spec: The name or index of a member, or a slice object.
"""
@@ -597,7 +597,7 @@ class NameSpace(ReadOnly):
def __repr__(self):
"""
- Returns a pseudo-valid expression that could create this instance.
+ Return a pseudo-valid expression that could create this instance.
"""
return '%s(<%d members>, sort=%r)' % (
self.__class__.__name__,
@@ -605,6 +605,12 @@ class NameSpace(ReadOnly):
self.__sort,
)
+ def __todict__(self):
+ """
+ Return a copy of the private dict mapping name to member.
+ """
+ return dict(self.__map)
+
class Registrar(DictProxy):
"""
diff --git a/ipalib/tests/test_plugable.py b/ipalib/tests/test_plugable.py
index 02d35cde..95d3825f 100644
--- a/ipalib/tests/test_plugable.py
+++ b/ipalib/tests/test_plugable.py
@@ -586,6 +586,7 @@ class test_NameSpace(ClassChecker):
else:
ordered = members
names = tuple(m.name for m in ordered)
+ assert o.__todict__() == dict((o.name, o) for o in ordered)
# Test __len__:
assert len(o) == cnt