Mercurial > kallithea
comparison rhodecode/controllers/api/api.py @ 1593:92a4f7c496a5 beta
Correct code style
author | Nicolas VINOT <aeris@imirhil.fr> |
---|---|
date | Sun, 23 Oct 2011 01:16:55 +0200 |
parents | 0b63a0d2cede |
children | 9dae92a65e40 |
comparison
equal
deleted
inserted
replaced
1592:8628c8706bf8 | 1593:92a4f7c496a5 |
---|---|
12 from rhodecode.model.users_group import UsersGroupModel | 12 from rhodecode.model.users_group import UsersGroupModel |
13 from rhodecode.model import users_group | 13 from rhodecode.model import users_group |
14 from rhodecode.model.repos_group import ReposGroupModel | 14 from rhodecode.model.repos_group import ReposGroupModel |
15 from sqlalchemy.orm.exc import NoResultFound | 15 from sqlalchemy.orm.exc import NoResultFound |
16 | 16 |
17 log = logging.getLogger( __name__ ) | 17 log = logging.getLogger(__name__) |
18 | 18 |
19 | 19 |
20 class ApiController( JSONRPCController ): | 20 class ApiController(JSONRPCController): |
21 """ | 21 """ |
22 API Controller | 22 API Controller |
23 | 23 |
24 | 24 |
25 Each method needs to have USER as argument this is then based on given | 25 Each method needs to have USER as argument this is then based on given |
31 Each function should also **raise** JSONRPCError for any | 31 Each function should also **raise** JSONRPCError for any |
32 errors that happens | 32 errors that happens |
33 | 33 |
34 """ | 34 """ |
35 | 35 |
36 @HasPermissionAllDecorator( 'hg.admin' ) | 36 @HasPermissionAllDecorator('hg.admin') |
37 def pull( self, apiuser, repo ): | 37 def pull(self, apiuser, repo): |
38 """ | 38 """ |
39 Dispatch pull action on given repo | 39 Dispatch pull action on given repo |
40 | 40 |
41 | 41 |
42 :param user: | 42 :param user: |
43 :param repo: | 43 :param repo: |
44 """ | 44 """ |
45 | 45 |
46 if Repository.is_valid( repo ) is False: | 46 if Repository.is_valid(repo) is False: |
47 raise JSONRPCError( 'Unknown repo "%s"' % repo ) | 47 raise JSONRPCError('Unknown repo "%s"' % repo) |
48 | 48 |
49 try: | 49 try: |
50 ScmModel().pull_changes( repo, self.rhodecode_user.username ) | 50 ScmModel().pull_changes(repo, self.rhodecode_user.username) |
51 return 'Pulled from %s' % repo | 51 return 'Pulled from %s' % repo |
52 except Exception: | 52 except Exception: |
53 raise JSONRPCError( 'Unable to pull changes from "%s"' % repo ) | 53 raise JSONRPCError('Unable to pull changes from "%s"' % repo) |
54 | 54 |
55 @HasPermissionAllDecorator( 'hg.admin' ) | 55 @HasPermissionAllDecorator('hg.admin') |
56 def get_user( self, apiuser, username ): | 56 def get_user(self, apiuser, username): |
57 """" | 57 """" |
58 Get a user by username | 58 Get a user by username |
59 | 59 |
60 :param apiuser | 60 :param apiuser |
61 :param username | 61 :param username |
62 """ | 62 """ |
63 | 63 |
64 user = User.get_by_username( username ) | 64 user = User.get_by_username(username) |
65 if not user: | 65 if not user: |
66 return None | 66 return None |
67 | 67 |
68 return dict( id = user.user_id, | 68 return dict(id = user.user_id, |
69 username = user.username, | 69 username = user.username, |
70 firstname = user.name, | 70 firstname = user.name, |
71 lastname = user.lastname, | 71 lastname = user.lastname, |
72 email = user.email, | 72 email = user.email, |
73 active = user.active, | 73 active = user.active, |
74 admin = user.admin, | 74 admin = user.admin, |
75 ldap = user.ldap_dn ) | 75 ldap = user.ldap_dn) |
76 | 76 |
77 @HasPermissionAllDecorator( 'hg.admin' ) | 77 @HasPermissionAllDecorator('hg.admin') |
78 def get_users( self, apiuser ): | 78 def get_users(self, apiuser): |
79 """" | 79 """" |
80 Get all users | 80 Get all users |
81 | 81 |
82 :param apiuser | 82 :param apiuser |
83 """ | 83 """ |
84 | 84 |
85 result = [] | 85 result = [] |
86 for user in User.getAll(): | 86 for user in User.getAll(): |
87 result.append( dict( id = user.user_id, | 87 result.append(dict(id = user.user_id, |
88 username = user.username, | 88 username = user.username, |
89 firstname = user.name, | 89 firstname = user.name, |
90 lastname = user.lastname, | 90 lastname = user.lastname, |
91 email = user.email, | 91 email = user.email, |
92 active = user.active, | 92 active = user.active, |
93 admin = user.admin, | 93 admin = user.admin, |
94 ldap = user.ldap_dn ) ) | 94 ldap = user.ldap_dn)) |
95 return result | 95 return result |
96 | 96 |
97 @HasPermissionAllDecorator( 'hg.admin' ) | 97 @HasPermissionAllDecorator('hg.admin') |
98 def create_user( self, apiuser, username, password, firstname, | 98 def create_user(self, apiuser, username, password, firstname, |
99 lastname, email, active = True, admin = False, ldap_dn = None ): | 99 lastname, email, active = True, admin = False, ldap_dn = None): |
100 """ | 100 """ |
101 Create new user | 101 Create new user |
102 | 102 |
103 :param apiuser: | 103 :param apiuser: |
104 :param username: | 104 :param username: |
109 :param active: | 109 :param active: |
110 :param admin: | 110 :param admin: |
111 :param ldap_dn: | 111 :param ldap_dn: |
112 """ | 112 """ |
113 | 113 |
114 if self.get_user( apiuser, username ): | 114 if self.get_user(apiuser, username): |
115 raise JSONRPCError( "user %s already exist" % username ) | 115 raise JSONRPCError("user %s already exist" % username) |
116 | 116 |
117 try: | 117 try: |
118 form_data = dict( username = username, | 118 form_data = dict(username = username, |
119 password = password, | 119 password = password, |
120 active = active, | 120 active = active, |
121 admin = admin, | 121 admin = admin, |
122 name = firstname, | 122 name = firstname, |
123 lastname = lastname, | 123 lastname = lastname, |
124 email = email, | 124 email = email, |
125 ldap_dn = ldap_dn ) | 125 ldap_dn = ldap_dn) |
126 UserModel().create_ldap( username, password, ldap_dn, form_data ) | 126 UserModel().create_ldap(username, password, ldap_dn, form_data) |
127 return dict( msg = 'created new user %s' % username ) | 127 return dict(msg = 'created new user %s' % username) |
128 except Exception: | 128 except Exception: |
129 log.error( traceback.format_exc() ) | 129 log.error(traceback.format_exc()) |
130 raise JSONRPCError( 'failed to create user %s' % username ) | 130 raise JSONRPCError('failed to create user %s' % username) |
131 | 131 |
132 @HasPermissionAllDecorator( 'hg.admin' ) | 132 @HasPermissionAllDecorator('hg.admin') |
133 def get_users_group( self, apiuser, group_name ): | 133 def get_users_group(self, apiuser, group_name): |
134 """" | 134 """" |
135 Get users group by name | 135 Get users group by name |
136 | 136 |
137 :param apiuser | 137 :param apiuser |
138 :param group_name | 138 :param group_name |
139 """ | 139 """ |
140 | 140 |
141 users_group = UsersGroup.get_by_group_name( group_name ) | 141 users_group = UsersGroup.get_by_group_name(group_name) |
142 if not users_group: | 142 if not users_group: |
143 return None | 143 return None |
144 | 144 |
145 members = [] | 145 members = [] |
146 for user in users_group.members: | 146 for user in users_group.members: |
147 user = user.user | 147 user = user.user |
148 members.append( dict( id = user.user_id, | 148 members.append(dict(id = user.user_id, |
149 username = user.username, | 149 username = user.username, |
150 firstname = user.name, | 150 firstname = user.name, |
151 lastname = user.lastname, | 151 lastname = user.lastname, |
152 email = user.email, | 152 email = user.email, |
153 active = user.active, | 153 active = user.active, |
154 admin = user.admin, | 154 admin = user.admin, |
155 ldap = user.ldap_dn ) ) | 155 ldap = user.ldap_dn)) |
156 | 156 |
157 return dict( id = users_group.users_group_id, | 157 return dict(id = users_group.users_group_id, |
158 name = users_group.users_group_name, | 158 name = users_group.users_group_name, |
159 active = users_group.users_group_active, | 159 active = users_group.users_group_active, |
160 members = members ) | 160 members = members) |
161 | 161 |
162 @HasPermissionAllDecorator( 'hg.admin' ) | 162 @HasPermissionAllDecorator('hg.admin') |
163 def get_users_groups( self, apiuser ): | 163 def get_users_groups(self, apiuser): |
164 """" | 164 """" |
165 Get all users groups | 165 Get all users groups |
166 | 166 |
167 :param apiuser | 167 :param apiuser |
168 """ | 168 """ |
170 result = [] | 170 result = [] |
171 for users_group in UsersGroup.getAll(): | 171 for users_group in UsersGroup.getAll(): |
172 members = [] | 172 members = [] |
173 for user in users_group.members: | 173 for user in users_group.members: |
174 user = user.user | 174 user = user.user |
175 members.append( dict( id = user.user_id, | 175 members.append(dict(id = user.user_id, |
176 username = user.username, | 176 username = user.username, |
177 firstname = user.name, | 177 firstname = user.name, |
178 lastname = user.lastname, | 178 lastname = user.lastname, |
179 email = user.email, | 179 email = user.email, |
180 active = user.active, | 180 active = user.active, |
181 admin = user.admin, | 181 admin = user.admin, |
182 ldap = user.ldap_dn ) ) | 182 ldap = user.ldap_dn)) |
183 | 183 |
184 result.append( dict( id = users_group.users_group_id, | 184 result.append(dict(id = users_group.users_group_id, |
185 name = users_group.users_group_name, | 185 name = users_group.users_group_name, |
186 active = users_group.users_group_active, | 186 active = users_group.users_group_active, |
187 members = members ) ) | 187 members = members)) |
188 return result | 188 return result |
189 | 189 |
190 @HasPermissionAllDecorator( 'hg.admin' ) | 190 @HasPermissionAllDecorator('hg.admin') |
191 def create_users_group( self, apiuser, name, active = True ): | 191 def create_users_group(self, apiuser, name, active = True): |
192 """ | 192 """ |
193 Creates an new usergroup | 193 Creates an new usergroup |
194 | 194 |
195 :param name: | 195 :param name: |
196 :param active: | 196 :param active: |
197 """ | 197 """ |
198 | 198 |
199 if self.get_users_group( apiuser, name ): | 199 if self.get_users_group(apiuser, name): |
200 raise JSONRPCError( "users group %s already exist" % name ) | 200 raise JSONRPCError("users group %s already exist" % name) |
201 | 201 |
202 try: | 202 try: |
203 form_data = dict( users_group_name = name, | 203 form_data = dict(users_group_name = name, |
204 users_group_active = active ) | 204 users_group_active = active) |
205 ug = UsersGroup.create( form_data ) | 205 ug = UsersGroup.create(form_data) |
206 return dict( id = ug.users_group_id, | 206 return dict(id = ug.users_group_id, |
207 msg = 'created new users group %s' % name ) | 207 msg = 'created new users group %s' % name) |
208 except Exception: | 208 except Exception: |
209 log.error( traceback.format_exc() ) | 209 log.error(traceback.format_exc()) |
210 raise JSONRPCError( 'failed to create group %s' % name ) | 210 raise JSONRPCError('failed to create group %s' % name) |
211 | 211 |
212 @HasPermissionAllDecorator( 'hg.admin' ) | 212 @HasPermissionAllDecorator('hg.admin') |
213 def add_user_to_users_group( self, apiuser, group_name, user_name ): | 213 def add_user_to_users_group(self, apiuser, group_name, user_name): |
214 """" | 214 """" |
215 Add a user to a group | 215 Add a user to a group |
216 | 216 |
217 :param apiuser | 217 :param apiuser |
218 :param group_name | 218 :param group_name |
219 :param user_name | 219 :param user_name |
220 """ | 220 """ |
221 | 221 |
222 try: | 222 try: |
223 users_group = UsersGroup.get_by_group_name( group_name ) | 223 users_group = UsersGroup.get_by_group_name(group_name) |
224 if not users_group: | 224 if not users_group: |
225 raise JSONRPCError( 'unknown users group %s' % group_name ) | 225 raise JSONRPCError('unknown users group %s' % group_name) |
226 | 226 |
227 try: | 227 try: |
228 user = User.get_by_username( user_name ) | 228 user = User.get_by_username(user_name) |
229 except NoResultFound: | 229 except NoResultFound: |
230 raise JSONRPCError( 'unknown user %s' % user_name ) | 230 raise JSONRPCError('unknown user %s' % user_name) |
231 | 231 |
232 ugm = UsersGroupModel().add_user_to_group( users_group, user ) | 232 ugm = UsersGroupModel().add_user_to_group(users_group, user) |
233 | 233 |
234 return dict( id = ugm.users_group_member_id, | 234 return dict(id = ugm.users_group_member_id, |
235 msg = 'created new users group member' ) | 235 msg = 'created new users group member') |
236 except Exception: | 236 except Exception: |
237 log.error( traceback.format_exc() ) | 237 log.error(traceback.format_exc()) |
238 raise JSONRPCError( 'failed to create users group member' ) | 238 raise JSONRPCError('failed to create users group member') |
239 | 239 |
240 @HasPermissionAnyDecorator( 'hg.admin' ) | 240 @HasPermissionAnyDecorator('hg.admin') |
241 def get_repo( self, apiuser, repo_name ): | 241 def get_repo(self, apiuser, repo_name): |
242 """" | 242 """" |
243 Get repository by name | 243 Get repository by name |
244 | 244 |
245 :param apiuser | 245 :param apiuser |
246 :param repo_name | 246 :param repo_name |
247 """ | 247 """ |
248 | 248 |
249 try: | 249 try: |
250 repo = Repository.get_by_repo_name( repo_name ) | 250 repo = Repository.get_by_repo_name(repo_name) |
251 except NoResultFound: | 251 except NoResultFound: |
252 return None | 252 return None |
253 | 253 |
254 members = [] | 254 members = [] |
255 for user in repo.repo_to_perm: | 255 for user in repo.repo_to_perm: |
256 perm = user.permission.permission_name | 256 perm = user.permission.permission_name |
257 user = user.user | 257 user = user.user |
258 members.append( dict( type_ = "user", | 258 members.append(dict(type_ = "user", |
259 id = user.user_id, | 259 id = user.user_id, |
260 username = user.username, | 260 username = user.username, |
261 firstname = user.name, | 261 firstname = user.name, |
262 lastname = user.lastname, | 262 lastname = user.lastname, |
263 email = user.email, | 263 email = user.email, |
264 active = user.active, | 264 active = user.active, |
265 admin = user.admin, | 265 admin = user.admin, |
266 ldap = user.ldap_dn, | 266 ldap = user.ldap_dn, |
267 permission = perm ) ) | 267 permission = perm)) |
268 for users_group in repo.users_group_to_perm: | 268 for users_group in repo.users_group_to_perm: |
269 perm = users_group.permission.permission_name | 269 perm = users_group.permission.permission_name |
270 users_group = users_group.users_group | 270 users_group = users_group.users_group |
271 members.append( dict( type_ = "users_group", | 271 members.append(dict(type_ = "users_group", |
272 id = users_group.users_group_id, | 272 id = users_group.users_group_id, |
273 name = users_group.users_group_name, | 273 name = users_group.users_group_name, |
274 active = users_group.users_group_active, | 274 active = users_group.users_group_active, |
275 permission = perm ) ) | 275 permission = perm)) |
276 | 276 |
277 return dict( id = repo.repo_id, | 277 return dict(id = repo.repo_id, |
278 name = repo.repo_name, | 278 name = repo.repo_name, |
279 type = repo.repo_type, | 279 type = repo.repo_type, |
280 description = repo.description, | 280 description = repo.description, |
281 members = members ) | 281 members = members) |
282 | 282 |
283 @HasPermissionAnyDecorator( 'hg.admin' ) | 283 @HasPermissionAnyDecorator('hg.admin') |
284 def get_repos( self, apiuser ): | 284 def get_repos(self, apiuser): |
285 """" | 285 """" |
286 Get all repositories | 286 Get all repositories |
287 | 287 |
288 :param apiuser | 288 :param apiuser |
289 """ | 289 """ |
290 | 290 |
291 result = [] | 291 result = [] |
292 for repository in Repository.getAll(): | 292 for repository in Repository.getAll(): |
293 result.append( dict( id = repository.repo_id, | 293 result.append(dict(id = repository.repo_id, |
294 name = repository.repo_name, | 294 name = repository.repo_name, |
295 type = repository.repo_type, | 295 type = repository.repo_type, |
296 description = repository.description ) ) | 296 description = repository.description)) |
297 return result | 297 return result |
298 | 298 |
299 @HasPermissionAnyDecorator( 'hg.admin', 'hg.create.repository' ) | 299 @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository') |
300 def create_repo( self, apiuser, name, owner_name, description = '', repo_type = 'hg', \ | 300 def create_repo(self, apiuser, name, owner_name, description = '', repo_type = 'hg', \ |
301 private = False ): | 301 private = False): |
302 """ | 302 """ |
303 Create a repository | 303 Create a repository |
304 | 304 |
305 :param apiuser | 305 :param apiuser |
306 :param name | 306 :param name |
310 :param owner_name | 310 :param owner_name |
311 """ | 311 """ |
312 | 312 |
313 try: | 313 try: |
314 try: | 314 try: |
315 owner = User.get_by_username( owner_name ) | 315 owner = User.get_by_username(owner_name) |
316 except NoResultFound: | 316 except NoResultFound: |
317 raise JSONRPCError( 'unknown user %s' % owner ) | 317 raise JSONRPCError('unknown user %s' % owner) |
318 | 318 |
319 if self.get_repo( apiuser, name ): | 319 if self.get_repo(apiuser, name): |
320 raise JSONRPCError( "repo %s already exist" % name ) | 320 raise JSONRPCError("repo %s already exist" % name) |
321 | 321 |
322 groups = name.split( '/' ) | 322 groups = name.split('/') |
323 real_name = groups[-1] | 323 real_name = groups[-1] |
324 groups = groups[:-1] | 324 groups = groups[:-1] |
325 parent_id = None | 325 parent_id = None |
326 for g in groups: | 326 for g in groups: |
327 group = Group.get_by_group_name( g ) | 327 group = Group.get_by_group_name(g) |
328 if not group: | 328 if not group: |
329 group = ReposGroupModel().create( dict( group_name = g, | 329 group = ReposGroupModel().create(dict(group_name = g, |
330 group_description = '', | 330 group_description = '', |
331 group_parent_id = parent_id ) ) | 331 group_parent_id = parent_id)) |
332 parent_id = group.group_id | 332 parent_id = group.group_id |
333 | 333 |
334 RepoModel().create( dict( repo_name = real_name, | 334 RepoModel().create(dict(repo_name = real_name, |
335 repo_name_full = name, | 335 repo_name_full = name, |
336 description = description, | 336 description = description, |
337 private = private, | 337 private = private, |
338 repo_type = repo_type, | 338 repo_type = repo_type, |
339 repo_group = parent_id, | 339 repo_group = parent_id, |
340 clone_uri = None ), owner ) | 340 clone_uri = None), owner) |
341 except Exception: | 341 except Exception: |
342 log.error( traceback.format_exc() ) | 342 log.error(traceback.format_exc()) |
343 raise JSONRPCError( 'failed to create repository %s' % name ) | 343 raise JSONRPCError('failed to create repository %s' % name) |
344 | 344 |
345 @HasPermissionAnyDecorator( 'hg.admin' ) | 345 @HasPermissionAnyDecorator('hg.admin') |
346 def add_user_to_repo( self, apiuser, repo_name, user_name, perm ): | 346 def add_user_to_repo(self, apiuser, repo_name, user_name, perm): |
347 """ | 347 """ |
348 Add permission for a user to a repository | 348 Add permission for a user to a repository |
349 | 349 |
350 :param apiuser | 350 :param apiuser |
351 :param repo_name | 351 :param repo_name |
353 :param perm | 353 :param perm |
354 """ | 354 """ |
355 | 355 |
356 try: | 356 try: |
357 try: | 357 try: |
358 repo = Repository.get_by_repo_name( repo_name ) | 358 repo = Repository.get_by_repo_name(repo_name) |
359 except NoResultFound: | 359 except NoResultFound: |
360 raise JSONRPCError( 'unknown repository %s' % repo ) | 360 raise JSONRPCError('unknown repository %s' % repo) |
361 | 361 |
362 try: | 362 try: |
363 user = User.get_by_username( user_name ) | 363 user = User.get_by_username(user_name) |
364 except NoResultFound: | 364 except NoResultFound: |
365 raise JSONRPCError( 'unknown user %s' % user ) | 365 raise JSONRPCError('unknown user %s' % user) |
366 | 366 |
367 RepositoryPermissionModel().updateOrDeleteUserPermission( repo, user, perm ) | 367 RepositoryPermissionModel().update_or_delete_user_permission(repo, user, perm) |
368 except Exception: | 368 except Exception: |
369 log.error( traceback.format_exc() ) | 369 log.error(traceback.format_exc()) |
370 raise JSONRPCError( 'failed to edit permission %(repo)s for %(user)s' | 370 raise JSONRPCError('failed to edit permission %(repo)s for %(user)s' |
371 % dict( user = user_name, repo = repo_name ) ) | 371 % dict(user = user_name, repo = repo_name)) |
372 | 372 |