User info function + purge home for delete func

This commit is contained in:
Kloadut 2012-10-29 13:02:55 +01:00
parent 91bbbe766f
commit 63e31f7985
2 changed files with 38 additions and 6 deletions

View file

@ -93,6 +93,8 @@ user:
users: users:
help: Username of users to delete help: Username of users to delete
nargs: "+" nargs: "+"
--purge:
action: store_true
### user_update() ### user_update()
update: update:
@ -135,12 +137,10 @@ user:
connections: connections:
- ldap - ldap
arguments: arguments:
user: -u:
nargs: "?" full: --user
-m: -m:
full: --mail full: --mail
-cn:
full: --fullname
############################# #############################

View file

@ -42,14 +42,14 @@ def user_list(args, connections):
result = yldap.search('ou=users,dc=yunohost,dc=org', filter, attrs) result = yldap.search('ou=users,dc=yunohost,dc=org', filter, attrs)
if len(result) > (0 + offset) and limit > 0: if result and len(result) > (0 + offset) and limit > 0:
i = 0 + offset i = 0 + offset
for entry in result[i:]: for entry in result[i:]:
if i < limit: if i < limit:
result_dict[str(i)] = entry result_dict[str(i)] = entry
i += 1 i += 1
else: else:
result_dict = { 'Notice' : _("No user found") } raise YunoHostError(167, _("No user found"))
return result_dict return result_dict
@ -155,6 +155,8 @@ def user_delete(args, connections):
for user in args['users']: for user in args['users']:
validate({ user : r'^[a-z0-9_]+$' }) validate({ user : r'^[a-z0-9_]+$' })
if yldap.remove('uid=' + user+ ',ou=users'): if yldap.remove('uid=' + user+ ',ou=users'):
if args['purge']:
os.system('rm -rf /home/' + user)
result['Users'].append(user) result['Users'].append(user)
continue continue
else: else:
@ -163,3 +165,33 @@ def user_delete(args, connections):
win_msg(_("User(s) successfully deleted")) win_msg(_("User(s) successfully deleted"))
return result return result
def user_info(args, connections):
"""
Fetch user informations from LDAP
Keyword argument:
args -- Dictionnary of values (can be empty)
connections -- LDAP connection
Returns:
Dict
"""
yldap = connections['ldap']
user_attrs = ['cn', 'mail', 'uid']
if args['mail']:
validate({ args['mail'] : r'^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$' })
filter = 'mail=' + args['mail']
else:
args = get_required_args(args, { 'user' : _("Username") })
validate({ args['user'] : r'^[a-z0-9_]+$' })
filter = 'uid=' + args['user']
result = yldap.search('ou=users,dc=yunohost,dc=org', filter, user_attrs)
if result:
return result[0]
else:
raise YunoHostError(167, _("No user found"))