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 |
|
|
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 = |
|
|
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 = |
|
|
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 = |
|
|
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)). |
|
|
286 | return Session.query(cls).filter(cls.username.like(username)).scalar() | |
|
287 | 287 | else: |
|
288 |
return Session.query(cls).filter(cls.username == username). |
|
|
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 User |
|
|
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 = User |
|
|
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 User |
|
|
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 = User |
|
|
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 = User |
|
|
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 ' |
|
|
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 = |
|
|
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 = |
|
|
190 | handlers = | |
|
189 | 191 | qualname = rhodecode |
|
190 |
propagate = |
|
|
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 = |
|
|
208 | formatter = generic | |
|
207 | 209 | |
|
208 | 210 | ################ |
|
209 | 211 | ## FORMATTERS ## |
General Comments 0
You need to be logged in to leave comments.
Login now