summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2011-11-09 14:10:08 +0100
committerMartin Kosek <mkosek@redhat.com>2011-11-09 15:31:19 +0100
commitb5c049ae2e62f24c6dfce618b94f567671e238ea (patch)
tree5aeefdd1be842c6c7a3909914e5b139c4ac9b747 /ipalib/frontend.py
parentb68ce0313c9ff31354d2be621079522886f556e3 (diff)
downloadfreeipa-b5c049ae2e62f24c6dfce618b94f567671e238ea.tar.gz
freeipa-b5c049ae2e62f24c6dfce618b94f567671e238ea.tar.xz
freeipa-b5c049ae2e62f24c6dfce618b94f567671e238ea.zip
Allow custom server backend encoding
Server framework does not support encoding of native Python type values stored in Param classes and sub-classes. When backend (LDAP) value encoding differs from Python type value representation user has to has to hard-code the encoders in his processing. This patch introduces a method Param.encode which is used in server context to encode native Python Param values. The new encode method is used for Bool parameter to convert native Python bool type value (True, False) to LDAP value ("TRUE", "FALSE"). https://fedorahosted.org/freeipa/ticket/2039
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r--ipalib/frontend.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 61e7f493f..851de4379 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -428,6 +428,8 @@ class Command(HasParam):
if not self.api.env.in_server and 'version' not in params:
params['version'] = API_VERSION
self.validate(**params)
+ if self.api.env.in_server:
+ params = self.encode(**params)
(args, options) = self.params_2_args_options(**params)
ret = self.run(*args, **options)
if (
@@ -648,6 +650,14 @@ class Command(HasParam):
(k, self.params[k].convert(v)) for (k, v) in kw.iteritems()
)
+ def encode(self, **kw):
+ """
+ Return a dictionary of encoded values.
+ """
+ return dict(
+ (k, self.params[k].encode(v)) for (k, v) in kw.iteritems()
+ )
+
def __convert_iter(self, kw):
for param in self.params():
if kw.get(param.name, None) is None: