##// END OF EJS Templates
API changes...
marcink -
r1989:0f87c784 beta
parent child Browse files
Show More
@@ -283,7 +283,8 b' OUTPUT::'
283 283 add_user_to_users_group
284 284 -----------------------
285 285
286 Adds a user to a users group. This command can be executed only using api_key
286 Adds a user to a users group. If user exists in that group success will be
287 `false`. This command can be executed only using api_key
287 288 belonging to user with admin rights
288 289
289 290
@@ -300,7 +301,36 b' OUTPUT::'
300 301
301 302 result: {
302 303 "id": "<newusersgroupmemberid>",
303 "msg": "created new users group member"
304 "success": True|False # depends on if member is in group
305 "msg": "added member <username> to users group <groupname> |
306 User is already in that group"
307 }
308 error: null
309
310
311 remove_user_from_users_group
312 ----------------------------
313
314 Removes a user from a users group. If user is not in given group success will
315 be `false`. This command can be executed only
316 using api_key belonging to user with admin rights
317
318
319 INPUT::
320
321 api_key : "<api_key>"
322 method : "remove_user_from_users_group"
323 args: {
324 "group_name" : "<groupname>",
325 "username" : "<username>"
326 }
327
328 OUTPUT::
329
330 result: {
331 "success": True|False, # depends on if member is in group
332 "msg": "removed member <username> from users group <groupname> |
333 User wasn't in group"
304 334 }
305 335 error: null
306 336
@@ -92,8 +92,8 b' class ApiController(JSONRPCController):'
92 92 """
93 93
94 94 user = User.get_by_username(username)
95 if not user:
96 return None
95 if user is None:
96 return user
97 97
98 98 return dict(
99 99 id=user.user_id,
@@ -258,18 +258,52 b' class ApiController(JSONRPCController):'
258 258 if not users_group:
259 259 raise JSONRPCError('unknown users group %s' % group_name)
260 260
261 try:
262 261 user = User.get_by_username(username)
263 except NoResultFound:
262 if user is None:
264 263 raise JSONRPCError('unknown user %s' % username)
265 264
266 265 ugm = UsersGroupModel().add_user_to_group(users_group, user)
266 success = True if ugm != True else False
267 msg = 'added member %s to users group %s' % (username, group_name)
268 msg = msg if success else 'User is already in that group'
267 269 Session.commit()
268 return dict(id=ugm.users_group_member_id,
269 msg='created new users group member')
270
271 return dict(
272 id=ugm.users_group_member_id if ugm != True else None,
273 success=success,
274 msg=msg
275 )
270 276 except Exception:
271 277 log.error(traceback.format_exc())
272 raise JSONRPCError('failed to create users group member')
278 raise JSONRPCError('failed to add users group member')
279
280 @HasPermissionAllDecorator('hg.admin')
281 def remove_user_from_users_group(self, apiuser, group_name, username):
282 """
283 Remove user from a group
284
285 :param apiuser
286 :param group_name
287 :param username
288 """
289
290 try:
291 users_group = UsersGroup.get_by_group_name(group_name)
292 if not users_group:
293 raise JSONRPCError('unknown users group %s' % group_name)
294
295 user = User.get_by_username(username)
296 if user is None:
297 raise JSONRPCError('unknown user %s' % username)
298
299 success = UsersGroupModel().remove_user_from_group(users_group, user)
300 msg = 'removed member %s from users group %s' % (username, group_name)
301 msg = msg if success else "User wasn't in group"
302 Session.commit()
303 return dict(success=success, msg=msg)
304 except Exception:
305 log.error(traceback.format_exc())
306 raise JSONRPCError('failed to remove user from group')
273 307
274 308 @HasPermissionAnyDecorator('hg.admin')
275 309 def get_repo(self, apiuser, repo_name):
@@ -386,10 +420,9 b' class ApiController(JSONRPCController):'
386 420 """
387 421
388 422 try:
389 try:
390 423 owner = User.get_by_username(owner_name)
391 except NoResultFound:
392 raise JSONRPCError('unknown user %s' % owner)
424 if owner is None:
425 raise JSONRPCError('unknown user %s' % owner_name)
393 426
394 427 if Repository.get_by_repo_name(repo_name):
395 428 raise JSONRPCError("repo %s already exist" % repo_name)
@@ -29,7 +29,7 b' import traceback'
29 29
30 30 from rhodecode.model import BaseModel
31 31 from rhodecode.model.db import UsersGroupMember, UsersGroup,\
32 UsersGroupRepoToPerm, Permission, UsersGroupToPerm
32 UsersGroupRepoToPerm, Permission, UsersGroupToPerm, User
33 33 from rhodecode.lib.exceptions import UsersGroupsAssignedException
34 34
35 35 log = logging.getLogger(__name__)
@@ -37,6 +37,9 b' log = logging.getLogger(__name__)'
37 37
38 38 class UsersGroupModel(BaseModel):
39 39
40 def __get_user(self, user):
41 return self._get_instance(User, user, callback=User.get_by_username)
42
40 43 def __get_users_group(self, users_group):
41 44 return self._get_instance(UsersGroup, users_group,
42 45 callback=UsersGroup.get_by_group_name)
@@ -111,10 +114,13 b' class UsersGroupModel(BaseModel):'
111 114 raise
112 115
113 116 def add_user_to_group(self, users_group, user):
117 users_group = self.__get_users_group(users_group)
118 user = self.__get_user(user)
119
114 120 for m in users_group.members:
115 121 u = m.user
116 122 if u.user_id == user.user_id:
117 return m
123 return True
118 124
119 125 try:
120 126 users_group_member = UsersGroupMember()
@@ -130,6 +136,28 b' class UsersGroupModel(BaseModel):'
130 136 log.error(traceback.format_exc())
131 137 raise
132 138
139 def remove_user_from_group(self, users_group, user):
140 users_group = self.__get_users_group(users_group)
141 user = self.__get_user(user)
142
143 users_group_member = None
144 for m in users_group.members:
145 if m.user.user_id == user.user_id:
146 # Found this user's membership row
147 users_group_member = m
148 break
149
150 if users_group_member:
151 try:
152 self.sa.delete(users_group_member)
153 return True
154 except:
155 log.error(traceback.format_exc())
156 raise
157 else:
158 # User isn't in that group
159 return False
160
133 161 def has_perm(self, users_group, perm):
134 162 users_group = self.__get_users_group(users_group)
135 163 perm = self.__get_perm(perm)
General Comments 0
You need to be logged in to leave comments. Login now