Mercurial > kallithea
comparison rhodecode/model/scm.py @ 1530:04027bdb876c beta
Refactoring of model get functions
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 08 Oct 2011 02:02:25 +0200 |
parents | 4aba7be311e8 |
children | e7c6341ad3cb |
comparison
equal
deleted
inserted
replaced
1529:0b268dd369ec | 1530:04027bdb876c |
---|---|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 # GNU General Public License for more details. | 21 # GNU General Public License for more details. |
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 |
29 | 28 |
30 from sqlalchemy.exc import DatabaseError | 29 from sqlalchemy.exc import DatabaseError |
39 from rhodecode.lib import safe_str | 38 from rhodecode.lib import safe_str |
40 from rhodecode.lib.auth import HasRepoPermissionAny | 39 from rhodecode.lib.auth import HasRepoPermissionAny |
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 |
50 | 48 |
51 class UserTemp(object): | 49 class UserTemp(object): |
281 .filter(UserFollowing.user_id == user_id).scalar() | 279 .filter(UserFollowing.user_id == user_id).scalar() |
282 | 280 |
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)\ |
290 .filter(UserFollowing.user_id == user_id).scalar() | 288 .filter(UserFollowing.user_id == user_id).scalar() |
291 | 289 |
292 return f is not None | 290 return f is not None |
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': '', |
317 'username': username, | 315 'username': username, |
318 'action': 'push_remote', | 316 'action': 'push_remote', |
361 from vcs.backends.hg import MercurialInMemoryChangeset as IMC | 359 from vcs.backends.hg import MercurialInMemoryChangeset as IMC |
362 elif repo.alias == 'git': | 360 elif repo.alias == 'git': |
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) |
375 m = IMC(repo) | 373 m = IMC(repo) |
376 | 374 |