##// END OF EJS Templates
Refactoring of model get functions
marcink -
r1530:04027bdb beta
parent child Browse files
Show More
@@ -144,7 +144,7 b' class PermissionsController(BaseControll'
144 c.create_choices = self.create_choices
144 c.create_choices = self.create_choices
145
145
146 if id == 'default':
146 if id == 'default':
147 default_user = User.by_username('default')
147 default_user = User.get_by_username('default')
148 defaults = {'_method': 'put',
148 defaults = {'_method': 'put',
149 'anonymous': default_user.active}
149 'anonymous': default_user.active}
150
150
@@ -89,7 +89,7 b' class ReposController(BaseController):'
89 """
89 """
90 self.__load_defaults()
90 self.__load_defaults()
91
91
92 c.repo_info = db_repo = Repository.by_repo_name(repo_name)
92 c.repo_info = db_repo = Repository.get_by_repo_name(repo_name)
93 repo = scm_repo = db_repo.scm_instance
93 repo = scm_repo = db_repo.scm_instance
94
94
95 if c.repo_info is None:
95 if c.repo_info is None:
@@ -101,7 +101,7 b' class ReposController(BaseController):'
101
101
102 return redirect(url('repos'))
102 return redirect(url('repos'))
103
103
104 c.default_user_id = User.by_username('default').user_id
104 c.default_user_id = User.get_by_username('default').user_id
105 c.in_public_journal = self.sa.query(UserFollowing)\
105 c.in_public_journal = self.sa.query(UserFollowing)\
106 .filter(UserFollowing.user_id == c.default_user_id)\
106 .filter(UserFollowing.user_id == c.default_user_id)\
107 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
107 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
@@ -381,8 +381,8 b' class ReposController(BaseController):'
381 token = get_token()
381 token = get_token()
382 if cur_token == token:
382 if cur_token == token:
383 try:
383 try:
384 repo_id = Repository.by_repo_name(repo_name).repo_id
384 repo_id = Repository.get_by_repo_name(repo_name).repo_id
385 user_id = User.by_username('default').user_id
385 user_id = User.get_by_username('default').user_id
386 self.scm_model.toggle_following_repo(repo_id, user_id)
386 self.scm_model.toggle_following_repo(repo_id, user_id)
387 h.flash(_('Updated repository visibility in public journal'),
387 h.flash(_('Updated repository visibility in public journal'),
388 category='success')
388 category='success')
@@ -64,8 +64,7 b' class LoginController(BaseController):'
64 c.form_result = login_form.to_python(dict(request.POST))
64 c.form_result = login_form.to_python(dict(request.POST))
65 #form checks for username/password, now we're authenticated
65 #form checks for username/password, now we're authenticated
66 username = c.form_result['username']
66 username = c.form_result['username']
67 user = User.by_username(username,
67 user = User.get_by_username(username, case_insensitive=True)
68 case_insensitive=True)
69 auth_user = AuthUser(user.user_id)
68 auth_user = AuthUser(user.user_id)
70 auth_user.set_authenticated()
69 auth_user.set_authenticated()
71 session['rhodecode_user'] = auth_user
70 session['rhodecode_user'] = auth_user
@@ -95,8 +94,7 b' class LoginController(BaseController):'
95 def register(self):
94 def register(self):
96 user_model = UserModel()
95 user_model = UserModel()
97 c.auto_active = False
96 c.auto_active = False
98 for perm in user_model.get_by_username('default',
97 for perm in User.get_by_username('default').user_perms:
99 cache=False).user_perms:
100 if perm.permission.permission_name == 'hg.register.auto_activate':
98 if perm.permission.permission_name == 'hg.register.auto_activate':
101 c.auto_active = True
99 c.auto_active = True
102 break
100 break
@@ -48,7 +48,7 b' from rhodecode.lib.auth_ldap import Auth'
48
48
49 from rhodecode.model import meta
49 from rhodecode.model import meta
50 from rhodecode.model.user import UserModel
50 from rhodecode.model.user import UserModel
51 from rhodecode.model.db import Permission, RhodeCodeSettings
51 from rhodecode.model.db import Permission, RhodeCodeSettings, User
52
52
53 log = logging.getLogger(__name__)
53 log = logging.getLogger(__name__)
54
54
@@ -151,7 +151,7 b' def authenticate(username, password):'
151 """
151 """
152
152
153 user_model = UserModel()
153 user_model = UserModel()
154 user = user_model.get_by_username(username, cache=False)
154 user = User.get_by_username(username)
155
155
156 log.debug('Authenticating user using RhodeCode account')
156 log.debug('Authenticating user using RhodeCode account')
157 if user is not None and not user.ldap_dn:
157 if user is not None and not user.ldap_dn:
@@ -170,8 +170,7 b' def authenticate(username, password):'
170
170
171 else:
171 else:
172 log.debug('Regular authentication failed')
172 log.debug('Regular authentication failed')
173 user_obj = user_model.get_by_username(username, cache=False,
173 user_obj = User.get_by_username(username, case_insensitive=True)
174 case_insensitive=True)
175
174
176 if user_obj is not None and not user_obj.ldap_dn:
175 if user_obj is not None and not user_obj.ldap_dn:
177 log.debug('this user already exists as non ldap')
176 log.debug('this user already exists as non ldap')
@@ -252,7 +251,7 b' class AuthUser(object):'
252
251
253 def propagate_data(self):
252 def propagate_data(self):
254 user_model = UserModel()
253 user_model = UserModel()
255 self.anonymous_user = user_model.get_by_username('default', cache=True)
254 self.anonymous_user = User.get_by_username('default')
256 if self._api_key and self._api_key != self.anonymous_user.api_key:
255 if self._api_key and self._api_key != self.anonymous_user.api_key:
257 #try go get user by api key
256 #try go get user by api key
258 log.debug('Auth User lookup by API KEY %s', self._api_key)
257 log.debug('Auth User lookup by API KEY %s', self._api_key)
@@ -67,7 +67,7 b' class BaseRepoController(BaseController)'
67 super(BaseRepoController, self).__before__()
67 super(BaseRepoController, self).__before__()
68 if c.repo_name:
68 if c.repo_name:
69
69
70 c.rhodecode_db_repo = Repository.by_repo_name(c.repo_name)
70 c.rhodecode_db_repo = Repository.get_by_repo_name(c.repo_name)
71 c.rhodecode_repo = c.rhodecode_db_repo.scm_instance
71 c.rhodecode_repo = c.rhodecode_db_repo.scm_instance
72
72
73 if c.rhodecode_repo is None:
73 if c.rhodecode_repo is None:
@@ -262,7 +262,7 b' class SimpleGit(object):'
262 return repo_name
262 return repo_name
263
263
264 def __get_user(self, username):
264 def __get_user(self, username):
265 return User.by_username(username)
265 return User.get_by_username(username)
266
266
267 def __get_action(self, environ):
267 def __get_action(self, environ):
268 """Maps git request commands into a pull or push command.
268 """Maps git request commands into a pull or push command.
@@ -229,7 +229,7 b' class SimpleHg(object):'
229 return repo_name
229 return repo_name
230
230
231 def __get_user(self, username):
231 def __get_user(self, username):
232 return User.by_username(username)
232 return User.get_by_username(username)
233
233
234 def __get_action(self, environ):
234 def __get_action(self, environ):
235 """
235 """
@@ -112,7 +112,7 b' def action_logger(user, action, repo, ip'
112 if hasattr(user, 'user_id'):
112 if hasattr(user, 'user_id'):
113 user_obj = user
113 user_obj = user
114 elif isinstance(user, basestring):
114 elif isinstance(user, basestring):
115 user_obj = User.by_username(user)
115 user_obj = User.get_by_username(user)
116 else:
116 else:
117 raise Exception('You have to provide user object or username')
117 raise Exception('You have to provide user object or username')
118
118
@@ -281,17 +281,16 b' class User(Base, BaseModel):'
281 return self.__class__.__name__
281 return self.__class__.__name__
282
282
283 @classmethod
283 @classmethod
284 def by_username(cls, username, case_insensitive=False):
284 def get_by_username(cls, username, case_insensitive=False):
285 if case_insensitive:
285 if case_insensitive:
286 return Session.query(cls).filter(cls.username.like(username)).one()
286 return Session.query(cls).filter(cls.username.like(username)).scalar()
287 else:
287 else:
288 return Session.query(cls).filter(cls.username == username).one()
288 return Session.query(cls).filter(cls.username == username).scalar()
289
289
290 @classmethod
290 @classmethod
291 def get_by_api_key(cls, api_key):
291 def get_by_api_key(cls, api_key):
292 return Session.query(cls).filter(cls.api_key == api_key).one()
292 return Session.query(cls).filter(cls.api_key == api_key).one()
293
293
294
295 def update_lastlogin(self):
294 def update_lastlogin(self):
296 """Update user lastlogin"""
295 """Update user lastlogin"""
297
296
@@ -487,7 +486,7 b' class Repository(Base, BaseModel):'
487 self.repo_id, self.repo_name)
486 self.repo_id, self.repo_name)
488
487
489 @classmethod
488 @classmethod
490 def by_repo_name(cls, repo_name):
489 def get_by_repo_name(cls, repo_name):
491 q = Session.query(cls).filter(cls.repo_name == repo_name)
490 q = Session.query(cls).filter(cls.repo_name == repo_name)
492
491
493 q = q.options(joinedload(Repository.fork))\
492 q = q.options(joinedload(Repository.fork))\
@@ -70,8 +70,7 b' def ValidUsername(edit, old_data):'
70 old_un = UserModel().get(old_data.get('user_id')).username
70 old_un = UserModel().get(old_data.get('user_id')).username
71
71
72 if old_un != value or not edit:
72 if old_un != value or not edit:
73 if UserModel().get_by_username(value, cache=False,
73 if User.get_by_username(value, case_insensitive=True):
74 case_insensitive=True):
75 raise formencode.Invalid(_('This username already '
74 raise formencode.Invalid(_('This username already '
76 'exists') , value, state)
75 'exists') , value, state)
77
76
@@ -206,7 +205,7 b' class ValidAuth(formencode.validators.Fa'
206 def validate_python(self, value, state):
205 def validate_python(self, value, state):
207 password = value['password']
206 password = value['password']
208 username = value['username']
207 username = value['username']
209 user = UserModel().get_by_username(username)
208 user = User.get_by_username(username)
210
209
211 if authenticate(username, password):
210 if authenticate(username, password):
212 return value
211 return value
@@ -102,7 +102,7 b' class RepoModel(BaseModel):'
102 for member, perm, member_type in form_data['perms_updates']:
102 for member, perm, member_type in form_data['perms_updates']:
103 if member_type == 'user':
103 if member_type == 'user':
104 r2p = self.sa.query(RepoToPerm)\
104 r2p = self.sa.query(RepoToPerm)\
105 .filter(RepoToPerm.user == User.by_username(member))\
105 .filter(RepoToPerm.user == User.get_by_username(member))\
106 .filter(RepoToPerm.repository == cur_repo)\
106 .filter(RepoToPerm.repository == cur_repo)\
107 .one()
107 .one()
108
108
@@ -127,7 +127,7 b' class RepoModel(BaseModel):'
127 if member_type == 'user':
127 if member_type == 'user':
128 r2p = RepoToPerm()
128 r2p = RepoToPerm()
129 r2p.repository = cur_repo
129 r2p.repository = cur_repo
130 r2p.user = User.by_username(member)
130 r2p.user = User.get_by_username(member)
131
131
132 r2p.permission = self.sa.query(Permission)\
132 r2p.permission = self.sa.query(Permission)\
133 .filter(Permission.
133 .filter(Permission.
@@ -147,7 +147,7 b' class RepoModel(BaseModel):'
147 #update current repo
147 #update current repo
148 for k, v in form_data.items():
148 for k, v in form_data.items():
149 if k == 'user':
149 if k == 'user':
150 cur_repo.user = User.by_username(v)
150 cur_repo.user = User.get_by_username(v)
151 elif k == 'repo_name':
151 elif k == 'repo_name':
152 cur_repo.repo_name = form_data['repo_name_full']
152 cur_repo.repo_name = form_data['repo_name_full']
153 elif k == 'repo_group':
153 elif k == 'repo_group':
@@ -208,8 +208,7 b' class RepoModel(BaseModel):'
208 #create default permission
208 #create default permission
209 repo_to_perm = RepoToPerm()
209 repo_to_perm = RepoToPerm()
210 default = 'repository.read'
210 default = 'repository.read'
211 for p in UserModel(self.sa).get_by_username('default',
211 for p in User.get_by_username('default').user_perms:
212 cache=False).user_perms:
213 if p.permission.permission_name.startswith('repository.'):
212 if p.permission.permission_name.startswith('repository.'):
214 default = p.permission.permission_name
213 default = p.permission.permission_name
215 break
214 break
@@ -221,8 +220,7 b' class RepoModel(BaseModel):'
221 .one().permission_id
220 .one().permission_id
222
221
223 repo_to_perm.repository = new_repo
222 repo_to_perm.repository = new_repo
224 repo_to_perm.user_id = UserModel(self.sa)\
223 repo_to_perm.user_id = User.get_by_username('default').user_id
225 .get_by_username('default', cache=False).user_id
226
224
227 self.sa.add(repo_to_perm)
225 self.sa.add(repo_to_perm)
228
226
@@ -22,7 +22,6 b''
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25 import os
26 import time
25 import time
27 import traceback
26 import traceback
28 import logging
27 import logging
@@ -41,9 +40,8 b' from rhodecode.lib.auth import HasRepoPe'
41 from rhodecode.lib.utils import get_repos as get_filesystem_repos, make_ui, \
40 from rhodecode.lib.utils import get_repos as get_filesystem_repos, make_ui, \
42 action_logger, EmptyChangeset
41 action_logger, EmptyChangeset
43 from rhodecode.model import BaseModel
42 from rhodecode.model import BaseModel
44 from rhodecode.model.user import UserModel
45 from rhodecode.model.db import Repository, RhodeCodeUi, CacheInvalidation, \
43 from rhodecode.model.db import Repository, RhodeCodeUi, CacheInvalidation, \
46 UserFollowing, UserLog
44 UserFollowing, UserLog, User
47
45
48 log = logging.getLogger(__name__)
46 log = logging.getLogger(__name__)
49
47
@@ -283,7 +281,7 b' class ScmModel(BaseModel):'
283 return f is not None
281 return f is not None
284
282
285 def is_following_user(self, username, user_id, cache=False):
283 def is_following_user(self, username, user_id, cache=False):
286 u = UserModel(self.sa).get_by_username(username)
284 u = User.get_by_username(username)
287
285
288 f = self.sa.query(UserFollowing)\
286 f = self.sa.query(UserFollowing)\
289 .filter(UserFollowing.follows_user == u)\
287 .filter(UserFollowing.follows_user == u)\
@@ -293,24 +291,24 b' class ScmModel(BaseModel):'
293
291
294 def get_followers(self, repo_id):
292 def get_followers(self, repo_id):
295 if not isinstance(repo_id, int):
293 if not isinstance(repo_id, int):
296 repo_id = getattr(Repository.by_repo_name(repo_id), 'repo_id')
294 repo_id = getattr(Repository.get_by_repo_name(repo_id), 'repo_id')
297
295
298 return self.sa.query(UserFollowing)\
296 return self.sa.query(UserFollowing)\
299 .filter(UserFollowing.follows_repo_id == repo_id).count()
297 .filter(UserFollowing.follows_repo_id == repo_id).count()
300
298
301 def get_forks(self, repo_id):
299 def get_forks(self, repo_id):
302 if not isinstance(repo_id, int):
300 if not isinstance(repo_id, int):
303 repo_id = getattr(Repository.by_repo_name(repo_id), 'repo_id')
301 repo_id = getattr(Repository.get_by_repo_name(repo_id), 'repo_id')
304
302
305 return self.sa.query(Repository)\
303 return self.sa.query(Repository)\
306 .filter(Repository.fork_id == repo_id).count()
304 .filter(Repository.fork_id == repo_id).count()
307
305
308 def pull_changes(self, repo_name, username):
306 def pull_changes(self, repo_name, username):
309 dbrepo = Repository.by_repo_name(repo_name)
307 dbrepo = Repository.get_by_repo_name(repo_name)
310 clone_uri = dbrepo.clone_uri
308 clone_uri = dbrepo.clone_uri
311 if not clone_uri:
309 if not clone_uri:
312 raise Exception("This repository doesn't have a clone uri")
310 raise Exception("This repository doesn't have a clone uri")
313
311
314 repo = dbrepo.scm_instance
312 repo = dbrepo.scm_instance
315 try:
313 try:
316 extras = {'ip': '',
314 extras = {'ip': '',
@@ -363,12 +361,12 b' class ScmModel(BaseModel):'
363 from vcs.backends.git import GitInMemoryChangeset as IMC
361 from vcs.backends.git import GitInMemoryChangeset as IMC
364 # decoding here will force that we have proper encoded values
362 # decoding here will force that we have proper encoded values
365 # in any other case this will throw exceptions and deny commit
363 # in any other case this will throw exceptions and deny commit
366
364
367 if isinstance(content,(basestring,)):
365 if isinstance(content, (basestring,)):
368 content = safe_str(content)
366 content = safe_str(content)
369 elif isinstance(content,file):
367 elif isinstance(content, file):
370 content = content.read()
368 content = content.read()
371
369
372 message = safe_str(message)
370 message = safe_str(message)
373 path = safe_str(f_path)
371 path = safe_str(f_path)
374 author = safe_str(author)
372 author = safe_str(author)
@@ -246,7 +246,7 b' class TestLoginController(TestController'
246
246
247 # GOOD KEY
247 # GOOD KEY
248
248
249 key = User.by_username(username).api_key
249 key = User.get_by_username(username).api_key
250
250
251 response = self.app.get(url(controller='login',
251 response = self.app.get(url(controller='login',
252 action='password_reset_confirmation',
252 action='password_reset_confirmation',
@@ -41,7 +41,7 b' class TestSummaryController(TestControll'
41
41
42
42
43 def _enable_stats(self):
43 def _enable_stats(self):
44 r = Repository.by_repo_name(HG_REPO)
44 r = Repository.get_by_repo_name(HG_REPO)
45 r.enable_statistics = True
45 r.enable_statistics = True
46 self.sa.add(r)
46 self.sa.add(r)
47 self.sa.commit()
47 self.sa.commit()
@@ -44,7 +44,7 b' add_cache(conf)'
44 USER = 'test_admin'
44 USER = 'test_admin'
45 PASS = 'test12'
45 PASS = 'test12'
46 HOST = '127.0.0.1:5000'
46 HOST = '127.0.0.1:5000'
47 DEBUG = bool(int(sys.argv[1]))
47 DEBUG = True if sys.argv[1:] else False
48 print 'DEBUG:', DEBUG
48 print 'DEBUG:', DEBUG
49 log = logging.getLogger(__name__)
49 log = logging.getLogger(__name__)
50
50
@@ -72,7 +72,7 b' class Command(object):'
72 def test_wrapp(func):
72 def test_wrapp(func):
73
73
74 def __wrapp(*args, **kwargs):
74 def __wrapp(*args, **kwargs):
75 print '###%s###' % func.__name__
75 print '>>>%s' % func.__name__
76 try:
76 try:
77 res = func(*args, **kwargs)
77 res = func(*args, **kwargs)
78 except Exception, e:
78 except Exception, e:
@@ -23,6 +23,7 b' pdebug = false'
23 #smtp_password =
23 #smtp_password =
24 #smtp_port =
24 #smtp_port =
25 #smtp_use_tls = false
25 #smtp_use_tls = false
26 #smtp_use_ssl = true
26
27
27 [server:main]
28 [server:main]
28 ##nr of threads to spawn
29 ##nr of threads to spawn
@@ -49,6 +50,7 b' app_instance_uuid = develop-test'
49 cut_off_limit = 256000
50 cut_off_limit = 256000
50 force_https = false
51 force_https = false
51 commit_parse_limit = 25
52 commit_parse_limit = 25
53 use_gravatar = true
52
54
53 ####################################
55 ####################################
54 ### CELERY CONFIG ####
56 ### CELERY CONFIG ####
@@ -93,7 +95,6 b' beaker.cache.short_term.expire=60'
93 beaker.cache.long_term.type=memory
95 beaker.cache.long_term.type=memory
94 beaker.cache.long_term.expire=36000
96 beaker.cache.long_term.expire=36000
95
97
96
97 beaker.cache.sql_cache_short.type=memory
98 beaker.cache.sql_cache_short.type=memory
98 beaker.cache.sql_cache_short.expire=10
99 beaker.cache.sql_cache_short.expire=10
99
100
@@ -150,13 +151,13 b' sqlalchemy.convert_unicode = true'
150 ### LOGGING CONFIGURATION ####
151 ### LOGGING CONFIGURATION ####
151 ################################
152 ################################
152 [loggers]
153 [loggers]
153 keys = root, routes, rhodecode, sqlalchemy,beaker,templates
154 keys = root, routes, rhodecode, sqlalchemy, beaker, templates
154
155
155 [handlers]
156 [handlers]
156 keys = console
157 keys = console
157
158
158 [formatters]
159 [formatters]
159 keys = generic,color_formatter
160 keys = generic, color_formatter
160
161
161 #############
162 #############
162 ## LOGGERS ##
163 ## LOGGERS ##
@@ -167,9 +168,10 b' handlers = console'
167
168
168 [logger_routes]
169 [logger_routes]
169 level = ERROR
170 level = ERROR
170 handlers = console
171 handlers =
171 qualname = routes.middleware
172 qualname = routes.middleware
172 # "level = DEBUG" logs the route matched and routing variables.
173 # "level = DEBUG" logs the route matched and routing variables.
174 propagate = 1
173
175
174 [logger_beaker]
176 [logger_beaker]
175 level = DEBUG
177 level = DEBUG
@@ -185,9 +187,9 b' propagate = 1'
185
187
186 [logger_rhodecode]
188 [logger_rhodecode]
187 level = ERROR
189 level = ERROR
188 handlers = console
190 handlers =
189 qualname = rhodecode
191 qualname = rhodecode
190 propagate = 0
192 propagate = 1
191
193
192 [logger_sqlalchemy]
194 [logger_sqlalchemy]
193 level = ERROR
195 level = ERROR
@@ -203,7 +205,7 b' propagate = 0'
203 class = StreamHandler
205 class = StreamHandler
204 args = (sys.stderr,)
206 args = (sys.stderr,)
205 level = NOTSET
207 level = NOTSET
206 formatter = color_formatter
208 formatter = generic
207
209
208 ################
210 ################
209 ## FORMATTERS ##
211 ## FORMATTERS ##
General Comments 0
You need to be logged in to leave comments. Login now