comparison rhodecode/controllers/api/api.py @ 2657:001c7e2ae986 beta

fixed api issue with changing username during update_user
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 25 Jul 2012 00:38:05 +0200
parents 8be70a4d72c7
children 4565e655ea2a
comparison
equal deleted inserted replaced
2656:c785ad556d44 2657:001c7e2ae986
258 :param password: 258 :param password:
259 """ 259 """
260 260
261 user = get_user_or_error(userid) 261 user = get_user_or_error(userid)
262 262
263 #return old attribute if Optional is passed. We don't change parameter 263 # call function and store only updated arguments
264 # so user doesn't get updated parameters 264 updates = {}
265 get = lambda attr, name: ( 265
266 getattr(user, name) if isinstance(attr, Optional) else attr 266 def store_update(attr, name):
267 ) 267 if not isinstance(attr, Optional):
268 268 updates[name] = attr
269 try: 269
270 270 try:
271 user = UserModel().create_or_update( 271
272 username=get(username, 'username'), 272 store_update(username, 'username')
273 password=get(password, 'password'), 273 store_update(password, 'password')
274 email=get(email, 'email'), 274 store_update(email, 'email')
275 firstname=get(firstname, 'name'), 275 store_update(firstname, 'name')
276 lastname=get(lastname, 'lastname'), 276 store_update(lastname, 'lastname')
277 active=get(active, 'active'), 277 store_update(active, 'active')
278 admin=get(admin, 'admin'), 278 store_update(admin, 'admin')
279 ldap_dn=get(ldap_dn, 'ldap_dn') 279 store_update(ldap_dn, 'ldap_dn')
280 ) 280
281 user = UserModel().update_user(user, **updates)
281 Session().commit() 282 Session().commit()
282 return dict( 283 return dict(
283 msg='updated user ID:%s %s' % (user.user_id, user.username), 284 msg='updated user ID:%s %s' % (user.user_id, user.username),
284 user=user.get_api_data() 285 user=user.get_api_data()
285 ) 286 )