Mercurial > kallithea
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() |