Started roughing out user_add() using api.Backend.ldap; added Command.output_for_cli() to take care of formatting print output

This commit is contained in:
Jason Gerard DeRose 2008-10-14 01:45:30 -06:00
parent 20fa90cfb6
commit 1480224724
3 changed files with 29 additions and 10 deletions

View File

@ -302,7 +302,7 @@ class CLI(object):
break
except errors.ValidationError, e:
error = e.error
cmd(**kw)
cmd.output_for_cli(cmd(**kw))
def parse(self, cmd, argv):
parser = self.build_parser(cmd)

View File

@ -486,6 +486,7 @@ class Command(plugable.Plugin):
'params',
'args_to_kw',
'kw_to_args',
'output_for_cli',
))
takes_options = tuple()
takes_args = tuple()
@ -741,6 +742,14 @@ class Command(plugable.Plugin):
multivalue = True
yield arg
def output_for_cli(self, ret):
"""
Output result of this command to command line interface.
"""
assert type(ret) is dict, 'base output_for_cli() only works with dict'
for key in sorted(ret):
print '%s = %r' % (key, ret[key])
class Object(plugable.Plugin):
__public__ = frozenset((

View File

@ -75,12 +75,26 @@ api.register(user)
class user_add(crud.Add):
'Add a new user.'
def execute(self, *args, **kw):
"""args[0] = uid of the user to add
kw{container} is the location in the DIT to add the user, not
required
kw otherwise contains all the attributes
def execute(self, uid, **kw):
"""
Execute the user-add operation.
The dn should not be passed as a keyword argument as it is constructed
by this method.
Returns the entry as it will be created in LDAP.
:param uid: The login name of the user being added.
:param kw: Keyword arguments for the other LDAP attributes.
"""
assert 'uid' not in kw
assert 'dn' not in kw
kw['uid'] = uid
kw['dn'] = self.api.Backend.ldap.get_user_dn(uid)
return kw
# FIXME: ug, really?
if not kw.get('container'):
user_container = servercore.DefaultUserContainer
@ -162,10 +176,6 @@ class user_add(crud.Add):
result = servercore.add_entry(entry)
return result
def forward(self, *args, **kw):
result = super(crud.Add, self).forward(*args, **kw)
if result:
print "User %s added" % args[0]
api.register(user_add)