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