Files
@ 7e536d1af60d
Branch filter:
Location: kallithea/rhodecode/model/user.py - annotation
7e536d1af60d
4.7 KiB
text/x-python
Code refactoring,models renames
cleaned up sqlalchemy sessions,
added cache support to most queries in models
fixed test.ini file
cleaned up sqlalchemy sessions,
added cache support to most queries in models
fixed test.ini file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d 7e536d1af60d | #!/usr/bin/env python
# encoding: utf-8
# Model for users
# Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2
# of the License or (at your opinion) any later version of the license.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
"""
Created on April 9, 2010
Model for users
:author: marcink
"""
from pylons.i18n.translation import _
from rhodecode.model.caching_query import FromCache
from rhodecode.model.db import User
from rhodecode.model.meta import Session
import logging
import traceback
log = logging.getLogger(__name__)
class DefaultUserException(Exception):pass
class UserModel(object):
def __init__(self, sa=None):
if not sa:
self.sa = Session()
else:
self.sa = sa
def get(self, user_id, cache=False):
user = self.sa.query(User)
if cache:
user = user.options(FromCache("sql_cache_short",
"get_user_%s" % user_id))
return user.get(user_id)
def get_by_username(self, username, cache=False):
user = self.sa.query(User)\
.filter(User.username == username)
if cache:
user = user.options(FromCache("sql_cache_short",
"get_user_%s" % username))
return user.scalar()
def create(self, form_data):
try:
new_user = User()
for k, v in form_data.items():
setattr(new_user, k, v)
self.sa.add(new_user)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
def create_registration(self, form_data):
try:
new_user = User()
for k, v in form_data.items():
if k != 'admin':
setattr(new_user, k, v)
self.sa.add(new_user)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
def update(self, user_id, form_data):
try:
new_user = self.get(user_id, cache=False)
if new_user.username == 'default':
raise DefaultUserException(
_("You can't Edit this user since it's"
" crucial for entire application"))
for k, v in form_data.items():
if k == 'new_password' and v != '':
new_user.password = v
else:
setattr(new_user, k, v)
self.sa.add(new_user)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
def update_my_account(self, user_id, form_data):
try:
new_user = self.get(user_id, cache=False)
if new_user.username == 'default':
raise DefaultUserException(
_("You can't Edit this user since it's"
" crucial for entire application"))
for k, v in form_data.items():
if k == 'new_password' and v != '':
new_user.password = v
else:
if k not in ['admin', 'active']:
setattr(new_user, k, v)
self.sa.add(new_user)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
def delete(self, user_id):
try:
user = self.get(user_id, cache=False)
if user.username == 'default':
raise DefaultUserException(
_("You can't remove this user since it's"
" crucial for entire application"))
self.sa.delete(user)
self.sa.commit()
except:
log.error(traceback.format_exc())
self.sa.rollback()
raise
def reset_password(self, data):
from rhodecode.lib.celerylib import tasks, run_task
run_task(tasks.reset_user_password, data['email'])
|