# HG changeset patch # User Marcin Kuzminski # Date 1339266228 -7200 # Node ID d3ac7491a5c85186fda18ef8dd919e8ebda62ff2 # Parent 60dfc369df1d1c755e47ddaff05e13a5b077abf3 Share common getter functions in base model, and remove duplicated functions from other models diff -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/__init__.py --- a/rhodecode/model/__init__.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/__init__.py Sat Jun 09 20:23:48 2012 +0200 @@ -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 @@ ) 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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/changeset_status.py --- a/rhodecode/model/changeset_status.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/changeset_status.py Sat Jun 09 20:23:48 2012 +0200 @@ -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 @@ 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 @@ :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 @@ :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 @@ 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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/notification.py --- a/rhodecode/model/notification.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/notification.py Sat Jun 09 20:23:48 2012 +0200 @@ -42,9 +42,6 @@ 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 @@ 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 @@ # 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 @@ 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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/repo.py --- a/rhodecode/model/repo.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/repo.py Sat Jun 09 20:23:48 2012 +0200 @@ -48,9 +48,6 @@ 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 @@ 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 @@ 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 @@ 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 @@ :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 @@ :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 @@ 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 @@ :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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/repo_permission.py --- a/rhodecode/model/repo_permission.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/repo_permission.py Sat Jun 09 20:23:48 2012 +0200 @@ -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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/repos_group.py --- a/rhodecode/model/repos_group.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/repos_group.py Sat Jun 09 20:23:48 2012 +0200 @@ -39,9 +39,6 @@ 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 @@ 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 @@ """ 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 @@ """ 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 @@ """ 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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/user.py --- a/rhodecode/model/user.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/user.py Sat Jun 09 20:23:48 2012 +0200 @@ -35,8 +35,8 @@ 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 @@ 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 @@ 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 @@ raise def delete(self, user): - user = self.__get_user(user) + user = self._get_user(user) try: if user.username == 'default': @@ -545,7 +538,7 @@ 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 @@ :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 @@ :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 @@ :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 @@ :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 -r 60dfc369df1d -r d3ac7491a5c8 rhodecode/model/users_group.py --- a/rhodecode/model/users_group.py Sat Jun 09 18:10:59 2012 +0200 +++ b/rhodecode/model/users_group.py Sat Jun 09 20:23:48 2012 +0200 @@ -37,17 +37,10 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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)\