summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-24 02:52:19 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-24 02:52:19 +0000
commit19bbc48eb601bb942ed93776c05bf0c326970832 (patch)
tree55594bbec7966f10ad12ff7ec01b837e6c184084 /ipalib/frontend.py
parent4dbbf5656d4db96068ca6c936120827e52ba5ad8 (diff)
downloadfreeipa-19bbc48eb601bb942ed93776c05bf0c326970832.tar.gz
freeipa-19bbc48eb601bb942ed93776c05bf0c326970832.tar.xz
freeipa-19bbc48eb601bb942ed93776c05bf0c326970832.zip
323: Added Command.run() method that dispatches to execute() or forward(); added corresponding unit tests
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r--ipalib/frontend.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 489b874c..11d05d5f 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -343,6 +343,11 @@ class Command(plugable.Plugin):
print ' args =', args
print ' kw =', kw
+ def forward(self, *args, **kw):
+ print '%s.execute():' % self.name
+ print ' args =', args
+ print ' kw =', kw
+
def __call__(self, *args, **kw):
if len(args) > 0:
arg_kw = self.args_to_kw(*args)
@@ -353,7 +358,15 @@ class Command(plugable.Plugin):
kw.update(self.get_default(**kw))
self.validate(**kw)
args = tuple(kw.pop(name) for name in self.args)
- self.execute(*args, **kw)
+ return self.run(*args, **kw)
+
+ def run(self, *args, **kw):
+ if self.api.env.in_server_context:
+ target = self.execute
+ else:
+ target = self.forward
+ object.__setattr__(self, 'run', target)
+ return target(*args, **kw)
def args_to_kw(self, *values):
if self.max_args is not None and len(values) > self.max_args: