diff --git a/kallithea/lib/celerylib/tasks.py b/kallithea/lib/celerylib/tasks.py --- a/kallithea/lib/celerylib/tasks.py +++ b/kallithea/lib/celerylib/tasks.py @@ -327,12 +327,11 @@ def send_email(recipients, subject, body @celerylib.dbsession def create_repo(form_data, cur_user): from kallithea.model.repo import RepoModel - from kallithea.model.user import UserModel from kallithea.model.db import Setting DBS = celerylib.get_session() - cur_user = UserModel(DBS)._get_user(cur_user) + cur_user = User.guess_instance(cur_user) owner = cur_user repo_name = form_data['repo_name'] @@ -417,12 +416,11 @@ def create_repo_fork(form_data, cur_user :param cur_user: """ from kallithea.model.repo import RepoModel - from kallithea.model.user import UserModel DBS = celerylib.get_session() base_path = Repository.base_path() - cur_user = UserModel(DBS)._get_user(cur_user) + cur_user = User.guess_instance(cur_user) repo_name = form_data['repo_name'] # fork in this case repo_name_full = form_data['repo_name_full'] diff --git a/kallithea/model/api_key.py b/kallithea/model/api_key.py --- a/kallithea/model/api_key.py +++ b/kallithea/model/api_key.py @@ -31,7 +31,7 @@ from sqlalchemy import or_ from kallithea.lib.utils2 import generate_api_key from kallithea.model.base import BaseModel -from kallithea.model.db import UserApiKeys +from kallithea.model.db import User, UserApiKeys from kallithea.model.meta import Session log = logging.getLogger(__name__) @@ -45,7 +45,7 @@ class ApiKeyModel(BaseModel): :param description: description of ApiKey :param lifetime: expiration time in seconds """ - user = self._get_user(user) + user = User.guess_instance(user) new_api_key = UserApiKeys() new_api_key.api_key = generate_api_key() @@ -64,14 +64,14 @@ class ApiKeyModel(BaseModel): api_key = UserApiKeys.query().filter(UserApiKeys.api_key == api_key) if user is not None: - user = self._get_user(user) + user = User.guess_instance(user) api_key = api_key.filter(UserApiKeys.user_id == user.user_id) api_key = api_key.scalar() Session().delete(api_key) def get_api_keys(self, user, show_expired=True): - user = self._get_user(user) + user = User.guess_instance(user) user_api_keys = UserApiKeys.query() \ .filter(UserApiKeys.user_id == user.user_id) if not show_expired: diff --git a/kallithea/model/base.py b/kallithea/model/base.py --- a/kallithea/model/base.py +++ b/kallithea/model/base.py @@ -60,15 +60,6 @@ class BaseModel(object): else: self.sa = meta.Session() - def _get_user(self, user): - """ - Helper method to get user by ID, or username fallback - - :param user: UserID, username, or User instance - """ - from kallithea.model.db import User - return User.guess_instance(user) - def _get_repo(self, repository): """ Helper method to get repository by ID, or repository name diff --git a/kallithea/model/changeset_status.py b/kallithea/model/changeset_status.py --- a/kallithea/model/changeset_status.py +++ b/kallithea/model/changeset_status.py @@ -29,7 +29,7 @@ import logging from sqlalchemy.orm import joinedload from kallithea.model.base import BaseModel -from kallithea.model.db import ChangesetStatus, PullRequest +from kallithea.model.db import ChangesetStatus, PullRequest, User from kallithea.lib.exceptions import StatusChangeOnClosedPullRequestError log = logging.getLogger(__name__) @@ -184,7 +184,7 @@ class ChangesetStatusModel(BaseModel): for rev in revisions: new_status = ChangesetStatus() new_status.version = 0 # default - new_status.author = self._get_user(user) + new_status.author = User.guess_instance(user) new_status.repo = self._get_repo(repo) new_status.status = status new_status.comment = comment diff --git a/kallithea/model/comment.py b/kallithea/model/comment.py --- a/kallithea/model/comment.py +++ b/kallithea/model/comment.py @@ -169,7 +169,7 @@ class ChangesetCommentsModel(BaseModel): return None repo = self._get_repo(repo) - author = self._get_user(author) + author = User.guess_instance(author) comment = ChangesetComment() comment.repo = repo comment.author = author diff --git a/kallithea/model/gist.py b/kallithea/model/gist.py --- a/kallithea/model/gist.py +++ b/kallithea/model/gist.py @@ -35,7 +35,7 @@ from kallithea.lib.utils2 import safe_un time_to_datetime, AttributeDict from kallithea.lib.compat import json from kallithea.model.base import BaseModel -from kallithea.model.db import Gist +from kallithea.model.db import Gist, User from kallithea.model.repo import RepoModel from kallithea.model.scm import ScmModel @@ -107,7 +107,7 @@ class GistModel(BaseModel): :param gist_type: type of gist private/public :param lifetime: in minutes, -1 == forever """ - owner = self._get_user(owner) + owner = User.guess_instance(owner) gist_id = safe_unicode(unique_id(20)) lifetime = safe_int(lifetime, -1) gist_expires = time.time() + (lifetime * 60) if lifetime != -1 else -1 diff --git a/kallithea/model/notification.py b/kallithea/model/notification.py --- a/kallithea/model/notification.py +++ b/kallithea/model/notification.py @@ -67,12 +67,12 @@ class NotificationModel(BaseModel): if recipients and not getattr(recipients, '__iter__', False): raise Exception('recipients must be a list or iterable') - created_by_obj = self._get_user(created_by) + created_by_obj = User.guess_instance(created_by) recipients_objs = [] if recipients: for u in recipients: - obj = self._get_user(u) + obj = User.guess_instance(u) if obj is not None: recipients_objs.append(obj) else: @@ -142,7 +142,7 @@ class NotificationModel(BaseModel): # we don't want to remove actual notification just the assignment try: notification = Notification.guess_instance(notification) - user = self._get_user(user) + user = User.guess_instance(user) if notification and user: obj = UserNotification.query() \ .filter(UserNotification.user == user) \ @@ -162,7 +162,7 @@ class NotificationModel(BaseModel): :param user: :param filter: """ - user = self._get_user(user) + user = User.guess_instance(user) q = UserNotification.query() \ .filter(UserNotification.user == user) \ @@ -180,7 +180,7 @@ class NotificationModel(BaseModel): def mark_read(self, user, notification): try: notification = Notification.guess_instance(notification) - user = self._get_user(user) + user = User.guess_instance(user) if notification and user: obj = UserNotification.query() \ .filter(UserNotification.user == user) \ @@ -194,7 +194,7 @@ class NotificationModel(BaseModel): raise def mark_all_read_for_user(self, user, filter_=None): - user = self._get_user(user) + user = User.guess_instance(user) q = UserNotification.query() \ .filter(UserNotification.user == user) \ .filter(UserNotification.read == False) \ @@ -209,19 +209,19 @@ class NotificationModel(BaseModel): obj.read = True def get_unread_cnt_for_user(self, user): - user = self._get_user(user) + user = User.guess_instance(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 = User.guess_instance(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 = User.guess_instance(user) notification = Notification.guess_instance(notification) return UserNotification.query() \ diff --git a/kallithea/model/permission.py b/kallithea/model/permission.py --- a/kallithea/model/permission.py +++ b/kallithea/model/permission.py @@ -62,7 +62,7 @@ class PermissionModel(BaseModel): :param user: """ - user = self._get_user(user) + user = User.guess_instance(user) def _make_perm(perm): new_perm = UserToPerm() diff --git a/kallithea/model/pull_request.py b/kallithea/model/pull_request.py --- a/kallithea/model/pull_request.py +++ b/kallithea/model/pull_request.py @@ -53,7 +53,7 @@ class PullRequestModel(BaseModel): specified, or if a given ID or username does not match any user. """ for user_spec in seq: - user = self._get_user(user_spec) + user = User.guess_instance(user_spec) if user is None or user.username == User.DEFAULT_USER: raise UserInvalidException(user_spec) yield user diff --git a/kallithea/model/repo.py b/kallithea/model/repo.py --- a/kallithea/model/repo.py +++ b/kallithea/model/repo.py @@ -120,7 +120,7 @@ class RepoModel(BaseModel): :param user: """ from kallithea.lib.auth import AuthUser - user = self._get_user(user) + user = User.guess_instance(user) repos = AuthUser(dbuser=user).permissions['repositories'] access_check = lambda r: r[1] in ['repository.read', 'repository.write', @@ -368,7 +368,7 @@ class RepoModel(BaseModel): """ from kallithea.model.scm import ScmModel - owner = self._get_user(owner) + owner = User.guess_instance(owner) fork_of = self._get_repo(fork_of) repo_group = self._get_repo_group(repo_group) try: @@ -557,7 +557,7 @@ 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) + user = User.guess_instance(user) repo = self._get_repo(repo) permission = self._get_perm(perm) @@ -584,7 +584,7 @@ class RepoModel(BaseModel): :param user: Instance of User, user_id or username """ - user = self._get_user(user) + user = User.guess_instance(user) repo = self._get_repo(repo) obj = self.sa.query(UserRepoToPerm) \ diff --git a/kallithea/model/repo_group.py b/kallithea/model/repo_group.py --- a/kallithea/model/repo_group.py +++ b/kallithea/model/repo_group.py @@ -141,7 +141,7 @@ class RepoGroupModel(BaseModel): def create(self, group_name, group_description, owner, parent=None, just_db=False, copy_permissions=False): try: - owner = self._get_user(owner) + owner = User.guess_instance(owner) parent_group = self._get_repo_group(parent) new_repo_group = RepoGroup() new_repo_group.owner = owner @@ -447,7 +447,7 @@ class RepoGroupModel(BaseModel): """ repo_group = self._get_repo_group(repo_group) - user = self._get_user(user) + user = User.guess_instance(user) permission = self._get_perm(perm) # check if we have that permission already @@ -475,7 +475,7 @@ class RepoGroupModel(BaseModel): """ repo_group = self._get_repo_group(repo_group) - user = self._get_user(user) + user = User.guess_instance(user) obj = self.sa.query(UserRepoGroupToPerm) \ .filter(UserRepoGroupToPerm.user == user) \ diff --git a/kallithea/model/repo_permission.py b/kallithea/model/repo_permission.py --- a/kallithea/model/repo_permission.py +++ b/kallithea/model/repo_permission.py @@ -25,7 +25,7 @@ Original author and date, and relevant c import logging from kallithea.model.base import BaseModel -from kallithea.model.db import UserRepoToPerm, UserGroupRepoToPerm, \ +from kallithea.model.db import User, UserRepoToPerm, UserGroupRepoToPerm, \ Permission log = logging.getLogger(__name__) @@ -35,7 +35,7 @@ class RepositoryPermissionModel(BaseMode def get_user_permission(self, repository, user): repository = self._get_repo(repository) - user = self._get_user(user) + user = User.guess_instance(user) return UserRepoToPerm.query() \ .filter(UserRepoToPerm.user == user) \ diff --git a/kallithea/model/scm.py b/kallithea/model/scm.py --- a/kallithea/model/scm.py +++ b/kallithea/model/scm.py @@ -438,7 +438,7 @@ class ScmModel(BaseModel): :param repo: a db_repo.scm_instance """ - user = self._get_user(user) + user = User.guess_instance(user) IMC = self._get_IMC_module(repo.alias) # decoding here will force that we have proper encoded values @@ -519,7 +519,7 @@ class ScmModel(BaseModel): :returns: new committed changeset """ - user = self._get_user(user) + user = User.guess_instance(user) scm_instance = repo.scm_instance_no_cache() processed_nodes = [] @@ -577,7 +577,7 @@ class ScmModel(BaseModel): """ Commits specified nodes to repo. Again. """ - user = self._get_user(user) + user = User.guess_instance(user) scm_instance = repo.scm_instance_no_cache() message = safe_unicode(message) @@ -647,7 +647,7 @@ class ScmModel(BaseModel): :returns: new committed changeset after deletion """ - user = self._get_user(user) + user = User.guess_instance(user) scm_instance = repo.scm_instance_no_cache() processed_nodes = [] diff --git a/kallithea/model/user.py b/kallithea/model/user.py --- a/kallithea/model/user.py +++ b/kallithea/model/user.py @@ -61,7 +61,7 @@ class UserModel(BaseModel): return user.get(user_id) def get_user(self, user): - return self._get_user(user) + return User.guess_instance(user) def create(self, form_data, cur_user=None): if not cur_user: @@ -231,7 +231,7 @@ class UserModel(BaseModel): def update_user(self, user, **kwargs): from kallithea.lib.auth import get_crypt_password - user = self._get_user(user) + user = User.guess_instance(user) if user.username == User.DEFAULT_USER: raise DefaultUserException( _("You can't edit this user since it's" @@ -249,7 +249,7 @@ class UserModel(BaseModel): def delete(self, user, cur_user=None): if cur_user is None: cur_user = getattr(get_current_authuser(), 'username', None) - user = self._get_user(user) + user = User.guess_instance(user) if user.username == User.DEFAULT_USER: raise DefaultUserException( @@ -421,7 +421,7 @@ class UserModel(BaseModel): def has_perm(self, user, perm): perm = self._get_perm(perm) - user = self._get_user(user) + user = User.guess_instance(user) return UserToPerm.query().filter(UserToPerm.user == user) \ .filter(UserToPerm.permission == perm).scalar() is not None @@ -433,7 +433,7 @@ class UserModel(BaseModel): :param user: :param perm: """ - user = self._get_user(user) + user = User.guess_instance(user) perm = self._get_perm(perm) # if this permission is already granted skip it _perm = UserToPerm.query() \ @@ -455,7 +455,7 @@ class UserModel(BaseModel): :param user: :param perm: """ - user = self._get_user(user) + user = User.guess_instance(user) perm = self._get_perm(perm) UserToPerm.query().filter( @@ -473,7 +473,7 @@ class UserModel(BaseModel): from kallithea.model import forms form = forms.UserExtraEmailForm()() data = form.to_python(dict(email=email)) - user = self._get_user(user) + user = User.guess_instance(user) obj = UserEmailMap() obj.user = user @@ -488,7 +488,7 @@ class UserModel(BaseModel): :param user: :param email_id: """ - user = self._get_user(user) + user = User.guess_instance(user) obj = UserEmailMap.query().get(email_id) if obj is not None: self.sa.delete(obj) @@ -503,7 +503,7 @@ class UserModel(BaseModel): from kallithea.model import forms form = forms.UserExtraIpForm()() data = form.to_python(dict(ip=ip)) - user = self._get_user(user) + user = User.guess_instance(user) obj = UserIpMap() obj.user = user @@ -518,7 +518,7 @@ class UserModel(BaseModel): :param user: :param ip_id: """ - user = self._get_user(user) + user = User.guess_instance(user) obj = UserIpMap.query().get(ip_id) if obj: self.sa.delete(obj) diff --git a/kallithea/model/user_group.py b/kallithea/model/user_group.py --- a/kallithea/model/user_group.py +++ b/kallithea/model/user_group.py @@ -106,7 +106,7 @@ class UserGroupModel(BaseModel): def create(self, name, description, owner, active=True, group_data=None): try: new_user_group = UserGroup() - new_user_group.owner = self._get_user(owner) + new_user_group.owner = User.guess_instance(owner) new_user_group.users_group_name = name new_user_group.user_group_description = description new_user_group.users_group_active = active @@ -174,7 +174,7 @@ class UserGroupModel(BaseModel): def add_user_to_group(self, user_group, user): user_group = self._get_user_group(user_group) - user = self._get_user(user) + user = User.guess_instance(user) for m in user_group.members: u = m.user @@ -198,7 +198,7 @@ class UserGroupModel(BaseModel): def remove_user_from_group(self, user_group, user): user_group = self._get_user_group(user_group) - user = self._get_user(user) + user = User.guess_instance(user) user_group_member = None for m in user_group.members: @@ -266,7 +266,7 @@ class UserGroupModel(BaseModel): """ user_group = self._get_user_group(user_group) - user = self._get_user(user) + user = User.guess_instance(user) permission = self._get_perm(perm) # check if we have that permission already @@ -294,7 +294,7 @@ class UserGroupModel(BaseModel): """ user_group = self._get_user_group(user_group) - user = self._get_user(user) + user = User.guess_instance(user) obj = self.sa.query(UserUserGroupToPerm) \ .filter(UserUserGroupToPerm.user == user) \ @@ -354,7 +354,7 @@ class UserGroupModel(BaseModel): log.debug('Revoked perm on %s on %s', target_user_group, user_group) def enforce_groups(self, user, groups, extern_type=None): - user = self._get_user(user) + user = User.guess_instance(user) log.debug('Enforcing groups %s on user %s', user, groups) current_groups = user.group_member # find the external created groups