comparison rhodecode/model/user.py @ 2513:388843a3a3c0 beta

Updated create_or_update method to not change API key when password is not updated
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 26 Jun 2012 21:57:31 +0200
parents b5b34d71b23b
children 17893d61792a
comparison
equal deleted inserted replaced
2512:8ece6d04a282 2513:388843a3a3c0
99 return new_user 99 return new_user
100 except: 100 except:
101 log.error(traceback.format_exc()) 101 log.error(traceback.format_exc())
102 raise 102 raise
103 103
104 def create_or_update(self, username, password, email, name, lastname, 104 def create_or_update(self, username, password, email, firstname='',
105 active=True, admin=False, ldap_dn=None): 105 lastname='', active=True, admin=False, ldap_dn=None):
106 """ 106 """
107 Creates a new instance if not found, or updates current one 107 Creates a new instance if not found, or updates current one
108 108
109 :param username: 109 :param username:
110 :param password: 110 :param password:
111 :param email: 111 :param email:
112 :param active: 112 :param active:
113 :param name: 113 :param firstname:
114 :param lastname: 114 :param lastname:
115 :param active: 115 :param active:
116 :param admin: 116 :param admin:
117 :param ldap_dn: 117 :param ldap_dn:
118 """ 118 """
122 log.debug('Checking for %s account in RhodeCode database' % username) 122 log.debug('Checking for %s account in RhodeCode database' % username)
123 user = User.get_by_username(username, case_insensitive=True) 123 user = User.get_by_username(username, case_insensitive=True)
124 if user is None: 124 if user is None:
125 log.debug('creating new user %s' % username) 125 log.debug('creating new user %s' % username)
126 new_user = User() 126 new_user = User()
127 edit = False
127 else: 128 else:
128 log.debug('updating user %s' % username) 129 log.debug('updating user %s' % username)
129 new_user = user 130 new_user = user
131 edit = True
130 132
131 try: 133 try:
132 new_user.username = username 134 new_user.username = username
133 new_user.admin = admin 135 new_user.admin = admin
134 new_user.password = get_crypt_password(password) 136 # set password only if creating an user or password is changed
135 new_user.api_key = generate_api_key(username) 137 if edit is False or user.password != password:
138 new_user.password = get_crypt_password(password)
139 new_user.api_key = generate_api_key(username)
136 new_user.email = email 140 new_user.email = email
137 new_user.active = active 141 new_user.active = active
138 new_user.ldap_dn = safe_unicode(ldap_dn) if ldap_dn else None 142 new_user.ldap_dn = safe_unicode(ldap_dn) if ldap_dn else None
139 new_user.name = name 143 new_user.name = firstname
140 new_user.lastname = lastname 144 new_user.lastname = lastname
141 self.sa.add(new_user) 145 self.sa.add(new_user)
142 return new_user 146 return new_user
143 except (DatabaseError,): 147 except (DatabaseError,):
144 log.error(traceback.format_exc()) 148 log.error(traceback.format_exc())