comparison rhodecode/controllers/api/api.py @ 1842:ea011e05fb0a

fixes #333 mismatch of argument for get_repo API method - a little code garden
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 07 Jan 2012 01:42:18 +0200
parents 9dae92a65e40
children 82a88013a3fd
comparison
equal deleted inserted replaced
1834:d0e477b5dc95 1842:ea011e05fb0a
1 # -*- coding: utf-8 -*-
2 """
3 rhodecode.controllers.api
4 ~~~~~~~~~~~~~~~~~~~~~~~~~
5
6 API controller for RhodeCode
7
8 :created_on: Aug 20, 2011
9 :author: marcink
10 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
12 """
13 # This program is free software; you can redistribute it and/or
14 # modify it under the terms of the GNU General Public License
15 # as published by the Free Software Foundation; version 2
16 # of the License or (at your opinion) any later version of the license.
17 #
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
26 # MA 02110-1301, USA.
27
1 import traceback 28 import traceback
2 import logging 29 import logging
3 30
4 from rhodecode.controllers.api import JSONRPCController, JSONRPCError 31 from rhodecode.controllers.api import JSONRPCController, JSONRPCError
5 from rhodecode.lib.auth import HasPermissionAllDecorator, \ 32 from rhodecode.lib.auth import HasPermissionAllDecorator, \
13 from rhodecode.model.users_group import UsersGroupModel 40 from rhodecode.model.users_group import UsersGroupModel
14 from rhodecode.model import users_group 41 from rhodecode.model import users_group
15 from rhodecode.model.repos_group import ReposGroupModel 42 from rhodecode.model.repos_group import ReposGroupModel
16 from sqlalchemy.orm.exc import NoResultFound 43 from sqlalchemy.orm.exc import NoResultFound
17 44
45
18 log = logging.getLogger(__name__) 46 log = logging.getLogger(__name__)
19 47
20 48
21 class ApiController(JSONRPCController): 49 class ApiController(JSONRPCController):
22 """ 50 """
56 @HasPermissionAllDecorator('hg.admin') 84 @HasPermissionAllDecorator('hg.admin')
57 def get_user(self, apiuser, username): 85 def get_user(self, apiuser, username):
58 """" 86 """"
59 Get a user by username 87 Get a user by username
60 88
61 :param apiuser 89 :param apiuser:
62 :param username 90 :param username:
63 """ 91 """
64 92
65 user = User.get_by_username(username) 93 user = User.get_by_username(username)
66 if not user: 94 if not user:
67 return None 95 return None
68 96
69 return dict(id=user.user_id, 97 return dict(
70 username=user.username, 98 id=user.user_id,
71 firstname=user.name, 99 username=user.username,
72 lastname=user.lastname, 100 firstname=user.name,
73 email=user.email, 101 lastname=user.lastname,
74 active=user.active, 102 email=user.email,
75 admin=user.admin, 103 active=user.active,
76 ldap=user.ldap_dn) 104 admin=user.admin,
105 ldap=user.ldap_dn
106 )
77 107
78 @HasPermissionAllDecorator('hg.admin') 108 @HasPermissionAllDecorator('hg.admin')
79 def get_users(self, apiuser): 109 def get_users(self, apiuser):
80 """" 110 """"
81 Get all users 111 Get all users
82 112
83 :param apiuser 113 :param apiuser:
84 """ 114 """
85 115
86 result = [] 116 result = []
87 for user in User.getAll(): 117 for user in User.getAll():
88 result.append(dict(id=user.user_id, 118 result.append(
89 username=user.username, 119 dict(
90 firstname=user.name, 120 id=user.user_id,
91 lastname=user.lastname, 121 username=user.username,
92 email=user.email, 122 firstname=user.name,
93 active=user.active, 123 lastname=user.lastname,
94 admin=user.admin, 124 email=user.email,
95 ldap=user.ldap_dn)) 125 active=user.active,
126 admin=user.admin,
127 ldap=user.ldap_dn
128 )
129 )
96 return result 130 return result
97 131
98 @HasPermissionAllDecorator('hg.admin') 132 @HasPermissionAllDecorator('hg.admin')
99 def create_user(self, apiuser, username, password, firstname, 133 def create_user(self, apiuser, username, password, firstname,
100 lastname, email, active=True, admin=False, ldap_dn=None): 134 lastname, email, active=True, admin=False, ldap_dn=None):
110 :param active: 144 :param active:
111 :param admin: 145 :param admin:
112 :param ldap_dn: 146 :param ldap_dn:
113 """ 147 """
114 148
115 if self.get_user(apiuser, username): 149 if User.get_by_username(username):
116 raise JSONRPCError("user %s already exist" % username) 150 raise JSONRPCError("user %s already exist" % username)
117 151
118 try: 152 try:
119 form_data = dict(username=username, 153 form_data = dict(username=username,
120 password=password, 154 password=password,
133 @HasPermissionAllDecorator('hg.admin') 167 @HasPermissionAllDecorator('hg.admin')
134 def get_users_group(self, apiuser, group_name): 168 def get_users_group(self, apiuser, group_name):
135 """" 169 """"
136 Get users group by name 170 Get users group by name
137 171
138 :param apiuser 172 :param apiuser:
139 :param group_name 173 :param group_name:
140 """ 174 """
141 175
142 users_group = UsersGroup.get_by_group_name(group_name) 176 users_group = UsersGroup.get_by_group_name(group_name)
143 if not users_group: 177 if not users_group:
144 return None 178 return None
163 @HasPermissionAllDecorator('hg.admin') 197 @HasPermissionAllDecorator('hg.admin')
164 def get_users_groups(self, apiuser): 198 def get_users_groups(self, apiuser):
165 """" 199 """"
166 Get all users groups 200 Get all users groups
167 201
168 :param apiuser 202 :param apiuser:
169 """ 203 """
170 204
171 result = [] 205 result = []
172 for users_group in UsersGroup.getAll(): 206 for users_group in UsersGroup.getAll():
173 members = [] 207 members = []
237 except Exception: 271 except Exception:
238 log.error(traceback.format_exc()) 272 log.error(traceback.format_exc())
239 raise JSONRPCError('failed to create users group member') 273 raise JSONRPCError('failed to create users group member')
240 274
241 @HasPermissionAnyDecorator('hg.admin') 275 @HasPermissionAnyDecorator('hg.admin')
242 def get_repo(self, apiuser, repo_name): 276 def get_repo(self, apiuser, name):
243 """" 277 """"
244 Get repository by name 278 Get repository by name
245 279
246 :param apiuser 280 :param apiuser
247 :param repo_name 281 :param repo_name
248 """ 282 """
249 283
250 try: 284 try:
251 repo = Repository.get_by_repo_name(repo_name) 285 repo = Repository.get_by_repo_name(name)
252 except NoResultFound: 286 except NoResultFound:
253 return None 287 return None
254 288
255 members = [] 289 members = []
256 for user in repo.repo_to_perm: 290 for user in repo.repo_to_perm:
257 perm = user.permission.permission_name 291 perm = user.permission.permission_name
258 user = user.user 292 user = user.user
259 members.append(dict(type_="user", 293 members.append(
260 id=user.user_id, 294 dict(
261 username=user.username, 295 type_="user",
262 firstname=user.name, 296 id=user.user_id,
263 lastname=user.lastname, 297 username=user.username,
264 email=user.email, 298 firstname=user.name,
265 active=user.active, 299 lastname=user.lastname,
266 admin=user.admin, 300 email=user.email,
267 ldap=user.ldap_dn, 301 active=user.active,
268 permission=perm)) 302 admin=user.admin,
303 ldap=user.ldap_dn,
304 permission=perm
305 )
306 )
269 for users_group in repo.users_group_to_perm: 307 for users_group in repo.users_group_to_perm:
270 perm = users_group.permission.permission_name 308 perm = users_group.permission.permission_name
271 users_group = users_group.users_group 309 users_group = users_group.users_group
272 members.append(dict(type_="users_group", 310 members.append(
273 id=users_group.users_group_id, 311 dict(
274 name=users_group.users_group_name, 312 type_="users_group",
275 active=users_group.users_group_active, 313 id=users_group.users_group_id,
276 permission=perm)) 314 name=users_group.users_group_name,
277 315 active=users_group.users_group_active,
278 return dict(id=repo.repo_id, 316 permission=perm
279 name=repo.repo_name, 317 )
280 type=repo.repo_type, 318 )
281 description=repo.description, 319
282 members=members) 320 return dict(
321 id=repo.repo_id,
322 name=repo.repo_name,
323 type=repo.repo_type,
324 description=repo.description,
325 members=members
326 )
283 327
284 @HasPermissionAnyDecorator('hg.admin') 328 @HasPermissionAnyDecorator('hg.admin')
285 def get_repos(self, apiuser): 329 def get_repos(self, apiuser):
286 """" 330 """"
287 Get all repositories 331 Get all repositories
289 :param apiuser 333 :param apiuser
290 """ 334 """
291 335
292 result = [] 336 result = []
293 for repository in Repository.getAll(): 337 for repository in Repository.getAll():
294 result.append(dict(id=repository.repo_id, 338 result.append(
295 name=repository.repo_name, 339 dict(
296 type=repository.repo_type, 340 id=repository.repo_id,
297 description=repository.description)) 341 name=repository.repo_name,
342 type=repository.repo_type,
343 description=repository.description
344 )
345 )
298 return result 346 return result
299 347
300 @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository') 348 @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')
301 def create_repo(self, apiuser, name, owner_name, description='', 349 def create_repo(self, apiuser, name, owner_name, description='',
302 repo_type='hg', private=False): 350 repo_type='hg', private=False):