changeset 2432:d3ac7491a5c8 codereview

Share common getter functions in base model, and remove duplicated functions from other models
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 09 Jun 2012 20:23:48 +0200
parents 60dfc369df1d
children 74f2910f7ad9
files rhodecode/model/__init__.py rhodecode/model/changeset_status.py rhodecode/model/notification.py rhodecode/model/repo.py rhodecode/model/repo_permission.py rhodecode/model/repos_group.py rhodecode/model/user.py rhodecode/model/users_group.py
diffstat 8 files changed, 77 insertions(+), 104 deletions(-) [+]
line wrap: on
line diff
--- 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 <http://www.gnu.org/licenses/>.
 
 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)
--- 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
--- 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()\
--- 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)\
--- 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) \
--- 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)\
--- 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
--- 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)\