# HG changeset patch # User Marcin Kuzminski # Date 1338482569 -7200 # Node ID b902baeaa4949cc94ec51e599d4c08a54b5f5bdc # Parent c15c3430df747b55a28275d76cfcb0dab29a87a6 API, added delete_user method. - create_user now also returns new user object data as get_user - updated docs diff -r c15c3430df74 -r b902baeaa494 docs/api/api.rst --- a/docs/api/api.rst Wed May 30 21:12:04 2012 +0200 +++ b/docs/api/api.rst Thu May 31 18:42:49 2012 +0200 @@ -187,7 +187,18 @@ result: { "id" : "", - "msg" : "created new user " + "msg" : "created new user ", + "user": { + "id" : "", + "username" : "", + "firstname": "", + "lastname" : "", + "email" : "", + "active" : "", + "admin" :  "", + "ldap_dn" : "", + "last_login": "", + }, } error: null @@ -195,7 +206,7 @@ update_user ----------- -updates current one if such user exists. This command can +updates given user if such user exists. This command can be executed only using api_key belonging to user with admin rights. @@ -220,7 +231,33 @@ result: { "id" : "", - "msg" : "updated user " + "msg" : "updated user ID: " + } + error: null + + +delete_user +----------- + + +deletes givenuser if such user exists. This command can +be executed only using api_key belonging to user with admin rights. + + +INPUT:: + + id : + api_key : "" + method : "delete_user" + args : { + "userid" : "", + } + +OUTPUT:: + + result: { + "id" : "", + "msg" : "deleted user ID: " } error: null diff -r c15c3430df74 -r b902baeaa494 rhodecode/controllers/api/api.py --- a/rhodecode/controllers/api/api.py Wed May 30 21:12:04 2012 +0200 +++ b/rhodecode/controllers/api/api.py Thu May 31 18:42:49 2012 +0200 @@ -156,14 +156,25 @@ password = PasswordGenerator().gen_password(length=8) try: - usr = UserModel().create_or_update( + user = UserModel().create_or_update( username, password, email, firstname, lastname, active, admin, ldap_dn ) Session.commit() return dict( - id=usr.user_id, - msg='created new user %s' % username + id=user.user_id, + msg='created new user %s' % username, + user=dict( + id=user.user_id, + username=user.username, + firstname=user.name, + lastname=user.lastname, + email=user.email, + active=user.active, + admin=user.admin, + ldap_dn=user.ldap_dn, + last_login=user.last_login, + ) ) except Exception: log.error(traceback.format_exc()) @@ -185,8 +196,9 @@ :param admin: :param ldap_dn: """ - if not UserModel().get_user(userid): - raise JSONRPCError("user %s does not exist" % username) + usr = UserModel().get_user(userid) + if not usr: + raise JSONRPCError("user ID:%s does not exist" % userid) try: usr = UserModel().create_or_update( @@ -196,11 +208,34 @@ Session.commit() return dict( id=usr.user_id, - msg='updated user %s' % username + msg='updated user ID:%s %s' % (usr.user_id, usr.username) ) except Exception: log.error(traceback.format_exc()) - raise JSONRPCError('failed to update user %s' % username) + raise JSONRPCError('failed to update user %s' % userid) + + @HasPermissionAllDecorator('hg.admin') + def delete_user(self, apiuser, userid): + """" + Deletes an user + + :param apiuser: + """ + usr = UserModel().get_user(userid) + if not usr: + raise JSONRPCError("user ID:%s does not exist" % userid) + + try: + UserModel().delete(userid) + Session.commit() + return dict( + id=usr.user_id, + msg='deleted user ID:%s %s' % (usr.user_id, usr.username) + ) + except Exception: + log.error(traceback.format_exc()) + raise JSONRPCError('failed to delete ID:%s %s' % (usr.user_id, + usr.username)) @HasPermissionAllDecorator('hg.admin') def get_users_group(self, apiuser, group_name):