comparison rhodecode/model/user.py @ 3179:cd50d1b5f35b

merged with beta
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 21 Jan 2013 00:03:44 +0100
parents a5f0bc867edc 4910b2607a29
children bbd72d82060a
comparison
equal deleted inserted replaced
3113:a0737406ce26 3179:cd50d1b5f35b
25 25
26 import logging 26 import logging
27 import traceback 27 import traceback
28 import itertools 28 import itertools
29 import collections 29 import collections
30 import functools
31 from pylons import url 30 from pylons import url
32 from pylons.i18n.translation import _ 31 from pylons.i18n.translation import _
33 32
34 from sqlalchemy.exc import DatabaseError 33 from sqlalchemy.exc import DatabaseError
35 from sqlalchemy.orm import joinedload 34 from sqlalchemy.orm import joinedload
38 from rhodecode.lib.caching_query import FromCache 37 from rhodecode.lib.caching_query import FromCache
39 from rhodecode.model import BaseModel 38 from rhodecode.model import BaseModel
40 from rhodecode.model.db import User, UserRepoToPerm, Repository, Permission, \ 39 from rhodecode.model.db import User, UserRepoToPerm, Repository, Permission, \
41 UserToPerm, UsersGroupRepoToPerm, UsersGroupToPerm, UsersGroupMember, \ 40 UserToPerm, UsersGroupRepoToPerm, UsersGroupToPerm, UsersGroupMember, \
42 Notification, RepoGroup, UserRepoGroupToPerm, UsersGroupRepoGroupToPerm, \ 41 Notification, RepoGroup, UserRepoGroupToPerm, UsersGroupRepoGroupToPerm, \
43 UserEmailMap 42 UserEmailMap, UserIpMap
44 from rhodecode.lib.exceptions import DefaultUserException, \ 43 from rhodecode.lib.exceptions import DefaultUserException, \
45 UserOwnsReposException 44 UserOwnsReposException
46 45
47 46
48 log = logging.getLogger(__name__) 47 log = logging.getLogger(__name__)
288 user.api_key = generate_api_key(user.username) 287 user.api_key = generate_api_key(user.username)
289 288
290 setattr(user, k, v) 289 setattr(user, k, v)
291 self.sa.add(user) 290 self.sa.add(user)
292 return user 291 return user
293 except:
294 log.error(traceback.format_exc())
295 raise
296
297 def update_my_account(self, user_id, form_data):
298 from rhodecode.lib.auth import get_crypt_password
299 try:
300 user = self.get(user_id, cache=False)
301 if user.username == 'default':
302 raise DefaultUserException(
303 _("You can't Edit this user since it's"
304 " crucial for entire application")
305 )
306 for k, v in form_data.items():
307 if k == 'new_password' and v:
308 user.password = get_crypt_password(v)
309 user.api_key = generate_api_key(user.username)
310 else:
311 if k == 'firstname':
312 k = 'name'
313 if k not in ['admin', 'active']:
314 setattr(user, k, v)
315
316 self.sa.add(user)
317 except: 292 except:
318 log.error(traceback.format_exc()) 293 log.error(traceback.format_exc())
319 raise 294 raise
320 295
321 def delete(self, user): 296 def delete(self, user):
703 """ 678 """
704 user = self._get_user(user) 679 user = self._get_user(user)
705 obj = UserEmailMap.query().get(email_id) 680 obj = UserEmailMap.query().get(email_id)
706 if obj: 681 if obj:
707 self.sa.delete(obj) 682 self.sa.delete(obj)
683
684 def add_extra_ip(self, user, ip):
685 """
686 Adds ip address to UserIpMap
687
688 :param user:
689 :param ip:
690 """
691 from rhodecode.model import forms
692 form = forms.UserExtraIpForm()()
693 data = form.to_python(dict(ip=ip))
694 user = self._get_user(user)
695
696 obj = UserIpMap()
697 obj.user = user
698 obj.ip_addr = data['ip']
699 self.sa.add(obj)
700 return obj
701
702 def delete_extra_ip(self, user, ip_id):
703 """
704 Removes ip address from UserIpMap
705
706 :param user:
707 :param ip_id:
708 """
709 user = self._get_user(user)
710 obj = UserIpMap.query().get(ip_id)
711 if obj:
712 self.sa.delete(obj)