changeset 2365:b902baeaa494 beta

API, added delete_user method. - create_user now also returns new user object data as get_user - updated docs
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 31 May 2012 18:42:49 +0200
parents c15c3430df74
children 1b12e71b636f
files docs/api/api.rst rhodecode/controllers/api/api.py
diffstat 2 files changed, 82 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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" : "<new_user_id>",
-              "msg" : "created new user <username>"
+              "msg" : "created new user <username>",
+              "user": {
+                "id" :       "<id>",
+                "username" : "<username>",
+                "firstname": "<firstname>",
+                "lastname" : "<lastname>",
+                "email" :    "<email>",
+                "active" :   "<bool>",
+                "admin" :    "<bool>",
+                "ldap_dn" :  "<ldap_dn>",
+                "last_login": "<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" : "<edited_user_id>",
-              "msg" : "updated user <username>"
+              "msg" : "updated user ID:<userid> <username>"
+            }
+    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 : <id_for_response>
+    api_key : "<api_key>"
+    method :  "delete_user"
+    args :    {
+                "userid" : "<user_id or username>",
+              }
+
+OUTPUT::
+
+    result: {
+              "id" : "<edited_user_id>",
+              "msg" : "deleted user ID:<userid> <username>"
             }
     error:  null
 
--- 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):