diff --git a/rhodecode/model/__init__.py b/rhodecode/model/__init__.py --- a/rhodecode/model/__init__.py +++ b/rhodecode/model/__init__.py @@ -42,7 +42,7 @@ # along with this program. If not, see . import logging - +from rhodecode.model.db import User, Repository, Permission from rhodecode.model import meta log = logging.getLogger(__name__) @@ -96,3 +96,33 @@ class BaseModel(object): ) else: return callback(instance) + + def _get_user(self, user): + """ + Helper method to get user by ID, or username fallback + + :param user: + :type user: UserID, username, or User instance + """ + return self._get_instance(User, user, + callback=User.get_by_username) + + def _get_repo(self, repository): + """ + Helper method to get repository by ID, or repository name + + :param repository: + :type repository: RepoID, repository name or Repository Instance + """ + return self._get_instance(Repository, repository, + callback=Repository.get_by_repo_name) + + def _get_perm(self, permission): + """ + Helper method to get permission by ID, or permission name + + :param permission: + :type permission: PermissionID, permission_name or Permission instance + """ + return self._get_instance(Permission, permission, + callback=Permission.get_by_key) diff --git a/rhodecode/model/changeset_status.py b/rhodecode/model/changeset_status.py --- a/rhodecode/model/changeset_status.py +++ b/rhodecode/model/changeset_status.py @@ -24,13 +24,9 @@ import logging -import traceback -from pylons.i18n.translation import _ - -from rhodecode.lib.utils2 import safe_unicode from rhodecode.model import BaseModel -from rhodecode.model.db import ChangesetStatus, Repository, User +from rhodecode.model.db import ChangesetStatus log = logging.getLogger(__name__) @@ -40,13 +36,6 @@ class ChangesetStatusModel(BaseModel): def __get_changeset_status(self, changeset_status): return self._get_instance(ChangesetStatus, changeset_status) - def __get_repo(self, repository): - return self._get_instance(Repository, repository, - callback=Repository.get_by_repo_name) - - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - def get_status(self, repo, revision): """ Returns status of changeset for given revision and version 0 @@ -58,7 +47,7 @@ class ChangesetStatusModel(BaseModel): :param revision: 40char hash :type revision: str """ - repo = self.__get_repo(repo) + repo = self._get_repo(repo) status = ChangesetStatus.query()\ .filter(ChangesetStatus.repo == repo)\ @@ -84,7 +73,7 @@ class ChangesetStatusModel(BaseModel): :param comment: :type comment: """ - repo = self.__get_repo(repo) + repo = self._get_repo(repo) cur_statuses = ChangesetStatus.query()\ .filter(ChangesetStatus.repo == repo)\ @@ -95,8 +84,8 @@ class ChangesetStatusModel(BaseModel): st.version += 1 self.sa.add(st) new_status = ChangesetStatus() - new_status.author = self.__get_user(user) - new_status.repo = self.__get_repo(repo) + new_status.author = self._get_user(user) + new_status.repo = self._get_repo(repo) new_status.status = status new_status.revision = revision new_status.comment = comment diff --git a/rhodecode/model/notification.py b/rhodecode/model/notification.py --- a/rhodecode/model/notification.py +++ b/rhodecode/model/notification.py @@ -42,9 +42,6 @@ log = logging.getLogger(__name__) class NotificationModel(BaseModel): - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - def __get_notification(self, notification): if isinstance(notification, Notification): return notification @@ -77,12 +74,12 @@ class NotificationModel(BaseModel): if recipients and not getattr(recipients, '__iter__', False): raise Exception('recipients must be a list of iterable') - created_by_obj = self.__get_user(created_by) + created_by_obj = self._get_user(created_by) if recipients: recipients_objs = [] for u in recipients: - obj = self.__get_user(u) + obj = self._get_user(u) if obj: recipients_objs.append(obj) recipients_objs = set(recipients_objs) @@ -126,7 +123,7 @@ class NotificationModel(BaseModel): # we don't want to remove actual notification just the assignment try: notification = self.__get_notification(notification) - user = self.__get_user(user) + user = self._get_user(user) if notification and user: obj = UserNotification.query()\ .filter(UserNotification.user == user)\ @@ -140,29 +137,29 @@ class NotificationModel(BaseModel): raise def get_for_user(self, user): - user = self.__get_user(user) + user = self._get_user(user) return user.notifications def mark_all_read_for_user(self, user): - user = self.__get_user(user) + user = self._get_user(user) UserNotification.query()\ .filter(UserNotification.read == False)\ .update({'read': True}) def get_unread_cnt_for_user(self, user): - user = self.__get_user(user) + user = self._get_user(user) return UserNotification.query()\ .filter(UserNotification.read == False)\ .filter(UserNotification.user == user).count() def get_unread_for_user(self, user): - user = self.__get_user(user) + user = self._get_user(user) return [x.notification for x in UserNotification.query()\ .filter(UserNotification.read == False)\ .filter(UserNotification.user == user).all()] def get_user_notification(self, user, notification): - user = self.__get_user(user) + user = self._get_user(user) notification = self.__get_notification(notification) return UserNotification.query()\ diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py --- a/rhodecode/model/repo.py +++ b/rhodecode/model/repo.py @@ -48,9 +48,6 @@ log = logging.getLogger(__name__) class RepoModel(BaseModel): - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - def __get_users_group(self, users_group): return self._get_instance(UsersGroup, users_group, callback=UsersGroup.get_by_group_name) @@ -59,14 +56,6 @@ class RepoModel(BaseModel): return self._get_instance(RepoGroup, repos_group, callback=RepoGroup.get_by_group_name) - def __get_repo(self, repository): - return self._get_instance(Repository, repository, - callback=Repository.get_by_repo_name) - - def __get_perm(self, permission): - return self._get_instance(Permission, permission, - callback=Permission.get_by_key) - @LazyProperty def repos_path(self): """ @@ -86,7 +75,7 @@ class RepoModel(BaseModel): return repo.scalar() def get_repo(self, repository): - return self.__get_repo(repository) + return self._get_repo(repository) def get_by_repo_name(self, repo_name, cache=False): repo = self.sa.query(Repository)\ @@ -311,7 +300,7 @@ class RepoModel(BaseModel): run_task(tasks.create_repo_fork, form_data, cur_user) def delete(self, repo): - repo = self.__get_repo(repo) + repo = self._get_repo(repo) try: self.sa.delete(repo) self.__delete_repo(repo) @@ -328,9 +317,9 @@ class RepoModel(BaseModel): :param user: Instance of User, user_id or username :param perm: Instance of Permission, or permission_name """ - user = self.__get_user(user) - repo = self.__get_repo(repo) - permission = self.__get_perm(perm) + user = self._get_user(user) + repo = self._get_repo(repo) + permission = self._get_perm(perm) # check if we have that permission already obj = self.sa.query(UserRepoToPerm)\ @@ -353,8 +342,8 @@ class RepoModel(BaseModel): :param user: Instance of User, user_id or username """ - user = self.__get_user(user) - repo = self.__get_repo(repo) + user = self._get_user(user) + repo = self._get_repo(repo) obj = self.sa.query(UserRepoToPerm)\ .filter(UserRepoToPerm.repository == repo)\ @@ -372,9 +361,9 @@ class RepoModel(BaseModel): or users group name :param perm: Instance of Permission, or permission_name """ - repo = self.__get_repo(repo) + repo = self._get_repo(repo) group_name = self.__get_users_group(group_name) - permission = self.__get_perm(perm) + permission = self._get_perm(perm) # check if we have that permission already obj = self.sa.query(UsersGroupRepoToPerm)\ @@ -399,7 +388,7 @@ class RepoModel(BaseModel): :param group_name: Instance of UserGroup, users_group_id, or users group name """ - repo = self.__get_repo(repo) + repo = self._get_repo(repo) group_name = self.__get_users_group(group_name) obj = self.sa.query(UsersGroupRepoToPerm)\ diff --git a/rhodecode/model/repo_permission.py b/rhodecode/model/repo_permission.py --- a/rhodecode/model/repo_permission.py +++ b/rhodecode/model/repo_permission.py @@ -26,28 +26,17 @@ import logging from rhodecode.model import BaseModel -from rhodecode.model.db import UserRepoToPerm, UsersGroupRepoToPerm, Permission,\ - User, Repository +from rhodecode.model.db import UserRepoToPerm, UsersGroupRepoToPerm, \ + Permission log = logging.getLogger(__name__) class RepositoryPermissionModel(BaseModel): - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - - def __get_repo(self, repository): - return self._get_instance(Repository, repository, - callback=Repository.get_by_repo_name) - - def __get_perm(self, permission): - return self._get_instance(Permission, permission, - callback=Permission.get_by_key) - def get_user_permission(self, repository, user): - repository = self.__get_repo(repository) - user = self.__get_user(user) + repository = self._get_repo(repository) + user = self._get_user(user) return UserRepoToPerm.query() \ .filter(UserRepoToPerm.user == user) \ diff --git a/rhodecode/model/repos_group.py b/rhodecode/model/repos_group.py --- a/rhodecode/model/repos_group.py +++ b/rhodecode/model/repos_group.py @@ -39,9 +39,6 @@ log = logging.getLogger(__name__) class ReposGroupModel(BaseModel): - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - def __get_users_group(self, users_group): return self._get_instance(UsersGroup, users_group, callback=UsersGroup.get_by_group_name) @@ -50,10 +47,6 @@ class ReposGroupModel(BaseModel): return self._get_instance(RepoGroup, repos_group, callback=RepoGroup.get_by_group_name) - def __get_perm(self, permission): - return self._get_instance(Permission, permission, - callback=Permission.get_by_key) - @LazyProperty def repos_path(self): """ @@ -227,8 +220,8 @@ class ReposGroupModel(BaseModel): """ repos_group = self.__get_repos_group(repos_group) - user = self.__get_user(user) - permission = self.__get_perm(perm) + user = self._get_user(user) + permission = self._get_perm(perm) # check if we have that permission already obj = self.sa.query(UserRepoGroupToPerm)\ @@ -253,7 +246,7 @@ class ReposGroupModel(BaseModel): """ repos_group = self.__get_repos_group(repos_group) - user = self.__get_user(user) + user = self._get_user(user) obj = self.sa.query(UserRepoGroupToPerm)\ .filter(UserRepoGroupToPerm.user == user)\ @@ -274,7 +267,7 @@ class ReposGroupModel(BaseModel): """ repos_group = self.__get_repos_group(repos_group) group_name = self.__get_users_group(group_name) - permission = self.__get_perm(perm) + permission = self._get_perm(perm) # check if we have that permission already obj = self.sa.query(UsersGroupRepoGroupToPerm)\ diff --git a/rhodecode/model/user.py b/rhodecode/model/user.py --- a/rhodecode/model/user.py +++ b/rhodecode/model/user.py @@ -35,8 +35,8 @@ from rhodecode.lib.caching_query import from rhodecode.model import BaseModel from rhodecode.model.db import User, UserRepoToPerm, Repository, Permission, \ UserToPerm, UsersGroupRepoToPerm, UsersGroupToPerm, UsersGroupMember, \ - Notification, RepoGroup, UserRepoGroupToPerm, UsersGroup,\ - UsersGroupRepoGroupToPerm, UserEmailMap + Notification, RepoGroup, UserRepoGroupToPerm, UsersGroupRepoGroupToPerm, \ + UserEmailMap from rhodecode.lib.exceptions import DefaultUserException, \ UserOwnsReposException @@ -61,13 +61,6 @@ PERM_WEIGHTS = { class UserModel(BaseModel): - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - - def __get_perm(self, permission): - return self._get_instance(Permission, permission, - callback=Permission.get_by_key) - def get(self, user_id, cache=False): user = self.sa.query(User) if cache: @@ -76,7 +69,7 @@ class UserModel(BaseModel): return user.get(user_id) def get_user(self, user): - return self.__get_user(user) + return self._get_user(user) def get_by_username(self, username, cache=False, case_insensitive=False): @@ -292,7 +285,7 @@ class UserModel(BaseModel): raise def delete(self, user): - user = self.__get_user(user) + user = self._get_user(user) try: if user.username == 'default': @@ -545,7 +538,7 @@ class UserModel(BaseModel): raise Exception('perm needs to be an instance of Permission class ' 'got %s instead' % type(perm)) - user = self.__get_user(user) + user = self._get_user(user) return UserToPerm.query().filter(UserToPerm.user == user)\ .filter(UserToPerm.permission == perm).scalar() is not None @@ -557,8 +550,8 @@ class UserModel(BaseModel): :param user: :param perm: """ - user = self.__get_user(user) - perm = self.__get_perm(perm) + user = self._get_user(user) + perm = self._get_perm(perm) # if this permission is already granted skip it _perm = UserToPerm.query()\ .filter(UserToPerm.user == user)\ @@ -578,8 +571,8 @@ class UserModel(BaseModel): :param user: :param perm: """ - user = self.__get_user(user) - perm = self.__get_perm(perm) + user = self._get_user(user) + perm = self._get_perm(perm) obj = UserToPerm.query()\ .filter(UserToPerm.user == user)\ @@ -595,7 +588,7 @@ class UserModel(BaseModel): :param user: :param email: """ - user = self.__get_user(user) + user = self._get_user(user) obj = UserEmailMap() obj.user = user obj.email = email @@ -609,7 +602,7 @@ class UserModel(BaseModel): :param user: :param email_id: """ - user = self.__get_user(user) + user = self._get_user(user) obj = UserEmailMap.query().get(email_id) if obj: self.sa.delete(obj) \ No newline at end of file diff --git a/rhodecode/model/users_group.py b/rhodecode/model/users_group.py --- a/rhodecode/model/users_group.py +++ b/rhodecode/model/users_group.py @@ -37,17 +37,10 @@ log = logging.getLogger(__name__) class UsersGroupModel(BaseModel): - def __get_user(self, user): - return self._get_instance(User, user, callback=User.get_by_username) - def __get_users_group(self, users_group): return self._get_instance(UsersGroup, users_group, callback=UsersGroup.get_by_group_name) - def __get_perm(self, permission): - return self._get_instance(Permission, permission, - callback=Permission.get_by_key) - def get(self, users_group_id, cache=False): return UsersGroup.get(users_group_id) @@ -115,7 +108,7 @@ class UsersGroupModel(BaseModel): def add_user_to_group(self, users_group, user): users_group = self.__get_users_group(users_group) - user = self.__get_user(user) + user = self._get_user(user) for m in users_group.members: u = m.user @@ -138,7 +131,7 @@ class UsersGroupModel(BaseModel): def remove_user_from_group(self, users_group, user): users_group = self.__get_users_group(users_group) - user = self.__get_user(user) + user = self._get_user(user) users_group_member = None for m in users_group.members: @@ -160,7 +153,7 @@ class UsersGroupModel(BaseModel): def has_perm(self, users_group, perm): users_group = self.__get_users_group(users_group) - perm = self.__get_perm(perm) + perm = self._get_perm(perm) return UsersGroupToPerm.query()\ .filter(UsersGroupToPerm.users_group == users_group)\ @@ -187,7 +180,7 @@ class UsersGroupModel(BaseModel): def revoke_perm(self, users_group, perm): users_group = self.__get_users_group(users_group) - perm = self.__get_perm(perm) + perm = self._get_perm(perm) obj = UsersGroupToPerm.query()\ .filter(UsersGroupToPerm.users_group == users_group)\