aboutsummaryrefslogtreecommitdiff
path: root/rhodecode/model/user.py
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2011-11-02 16:19:51 +0200
committerMarcin Kuzminski <marcin@python-works.com>2011-11-02 16:19:51 +0200
commitde8e192903f5ab324a81a10b808539580dcf926c (patch)
treef3b9575aff84cb6f07a8886352987b43bf76f8c4 /rhodecode/model/user.py
parentab476443289ac238893fd20d9f23cefc59c5b206 (diff)
User usermodel instead of db model to manage accounts
- initial refactoring of models to handle rhodecode+api --HG-- branch : beta
Diffstat (limited to 'rhodecode/model/user.py')
-rw-r--r--rhodecode/model/user.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/rhodecode/model/user.py b/rhodecode/model/user.py
index 5c2184ea..2d4f17a5 100644
--- a/rhodecode/model/user.py
+++ b/rhodecode/model/user.py
@@ -92,6 +92,54 @@ class UserModel(BaseModel):
self.sa.rollback()
raise
+
+ def create_or_update(self, username, password, email, name, lastname,
+ active=True, admin=False, ldap_dn=None):
+ """
+ Creates a new instance if not found, or updates current one
+
+ :param username:
+ :param password:
+ :param email:
+ :param active:
+ :param name:
+ :param lastname:
+ :param active:
+ :param admin:
+ :param ldap_dn:
+ """
+
+ from rhodecode.lib.auth import get_crypt_password
+
+ log.debug('Checking for %s account in RhodeCode database', username)
+ user = User.get_by_username(username, case_insensitive=True)
+ if user is None:
+ log.debug('creating new user %s', username)
+ new_user = User()
+ else:
+ log.debug('updating user %s', username)
+ new_user = user
+
+ try:
+ new_user.username = username
+ new_user.admin = admin
+ new_user.password = get_crypt_password(password)
+ new_user.api_key = generate_api_key(username)
+ new_user.email = email
+ new_user.active = active
+ new_user.ldap_dn = safe_unicode(ldap_dn) if ldap_dn else None
+ new_user.name = name
+ new_user.lastname = lastname
+
+ self.sa.add(new_user)
+ self.sa.commit()
+ return new_user
+ except (DatabaseError,):
+ log.error(traceback.format_exc())
+ self.sa.rollback()
+ raise
+
+
def create_for_container_auth(self, username, attrs):
"""
Creates the given user if it's not already in the database