comparison rhodecode/controllers/api/api.py @ 2165:dc2584ba5fbc

merged beta into default branch
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 28 Mar 2012 19:54:16 +0200
parents 82a88013a3fd 12ceeda33339
children 63e58ef80ef1
comparison
equal deleted inserted replaced
2097:8fd6650bb436 2165:dc2584ba5fbc
28 import traceback 28 import traceback
29 import logging 29 import logging
30 30
31 from rhodecode.controllers.api import JSONRPCController, JSONRPCError 31 from rhodecode.controllers.api import JSONRPCController, JSONRPCError
32 from rhodecode.lib.auth import HasPermissionAllDecorator, \ 32 from rhodecode.lib.auth import HasPermissionAllDecorator, \
33 HasPermissionAnyDecorator, PasswordGenerator 33 HasPermissionAnyDecorator, PasswordGenerator, AuthUser
34 34
35 from rhodecode.model.meta import Session 35 from rhodecode.model.meta import Session
36 from rhodecode.model.scm import ScmModel 36 from rhodecode.model.scm import ScmModel
37 from rhodecode.model.db import User, UsersGroup, RepoGroup, Repository 37 from rhodecode.model.db import User, UsersGroup, Repository
38 from rhodecode.model.repo import RepoModel 38 from rhodecode.model.repo import RepoModel
39 from rhodecode.model.user import UserModel 39 from rhodecode.model.user import UserModel
40 from rhodecode.model.users_group import UsersGroupModel 40 from rhodecode.model.users_group import UsersGroupModel
41 from rhodecode.model.repos_group import ReposGroupModel 41 from rhodecode.lib.utils import map_groups
42
43 42
44 log = logging.getLogger(__name__) 43 log = logging.getLogger(__name__)
45 44
46 45
47 class ApiController(JSONRPCController): 46 class ApiController(JSONRPCController):
98 firstname=user.name, 97 firstname=user.name,
99 lastname=user.lastname, 98 lastname=user.lastname,
100 email=user.email, 99 email=user.email,
101 active=user.active, 100 active=user.active,
102 admin=user.admin, 101 admin=user.admin,
103 ldap_dn=user.ldap_dn 102 ldap_dn=user.ldap_dn,
103 last_login=user.last_login,
104 permissions=AuthUser(user_id=user.user_id).permissions
104 ) 105 )
105 106
106 @HasPermissionAllDecorator('hg.admin') 107 @HasPermissionAllDecorator('hg.admin')
107 def get_users(self, apiuser): 108 def get_users(self, apiuser):
108 """" 109 """"
120 firstname=user.name, 121 firstname=user.name,
121 lastname=user.lastname, 122 lastname=user.lastname,
122 email=user.email, 123 email=user.email,
123 active=user.active, 124 active=user.active,
124 admin=user.admin, 125 admin=user.admin,
125 ldap_dn=user.ldap_dn 126 ldap_dn=user.ldap_dn,
127 last_login=user.last_login,
126 ) 128 )
127 ) 129 )
128 return result 130 return result
129 131
130 @HasPermissionAllDecorator('hg.admin') 132 @HasPermissionAllDecorator('hg.admin')
280 raise JSONRPCError('failed to create group %s' % group_name) 282 raise JSONRPCError('failed to create group %s' % group_name)
281 283
282 @HasPermissionAllDecorator('hg.admin') 284 @HasPermissionAllDecorator('hg.admin')
283 def add_user_to_users_group(self, apiuser, group_name, username): 285 def add_user_to_users_group(self, apiuser, group_name, username):
284 """" 286 """"
285 Add a user to a group 287 Add a user to a users group
286 288
287 :param apiuser: 289 :param apiuser:
288 :param group_name: 290 :param group_name:
289 :param username: 291 :param username:
290 """ 292 """
358 for user in repo.repo_to_perm: 360 for user in repo.repo_to_perm:
359 perm = user.permission.permission_name 361 perm = user.permission.permission_name
360 user = user.user 362 user = user.user
361 members.append( 363 members.append(
362 dict( 364 dict(
363 type_="user", 365 type="user",
364 id=user.user_id, 366 id=user.user_id,
365 username=user.username, 367 username=user.username,
366 firstname=user.name, 368 firstname=user.name,
367 lastname=user.lastname, 369 lastname=user.lastname,
368 email=user.email, 370 email=user.email,
375 for users_group in repo.users_group_to_perm: 377 for users_group in repo.users_group_to_perm:
376 perm = users_group.permission.permission_name 378 perm = users_group.permission.permission_name
377 users_group = users_group.users_group 379 users_group = users_group.users_group
378 members.append( 380 members.append(
379 dict( 381 dict(
380 type_="users_group", 382 type="users_group",
381 id=users_group.users_group_id, 383 id=users_group.users_group_id,
382 name=users_group.users_group_name, 384 name=users_group.users_group_name,
383 active=users_group.users_group_active, 385 active=users_group.users_group_active,
384 permission=perm 386 permission=perm
385 ) 387 )
462 raise JSONRPCError('unknown user %s' % owner_name) 464 raise JSONRPCError('unknown user %s' % owner_name)
463 465
464 if Repository.get_by_repo_name(repo_name): 466 if Repository.get_by_repo_name(repo_name):
465 raise JSONRPCError("repo %s already exist" % repo_name) 467 raise JSONRPCError("repo %s already exist" % repo_name)
466 468
467 groups = repo_name.split('/') 469 groups = repo_name.split(Repository.url_sep())
468 real_name = groups[-1] 470 real_name = groups[-1]
469 groups = groups[:-1] 471 # create structure of groups
470 parent_id = None 472 group = map_groups(repo_name)
471 for g in groups:
472 group = RepoGroup.get_by_group_name(g)
473 if not group:
474 group = ReposGroupModel().create(g, '', parent_id)
475 parent_id = group.group_id
476 473
477 repo = RepoModel().create( 474 repo = RepoModel().create(
478 dict( 475 dict(
479 repo_name=real_name, 476 repo_name=real_name,
480 repo_name_full=repo_name, 477 repo_name_full=repo_name,
481 description=description, 478 description=description,
482 private=private, 479 private=private,
483 repo_type=repo_type, 480 repo_type=repo_type,
484 repo_group=parent_id, 481 repo_group=group.group_id if group else None,
485 clone_uri=clone_uri 482 clone_uri=clone_uri
486 ), 483 ),
487 owner 484 owner
488 ) 485 )
489 Session.commit() 486 Session.commit()