# HG changeset patch # User Søren Løvborg # Date 1484753413 -3600 # Node ID c8f34ad333a214d7293c340a44fb67f43f4635db # Parent a918c4c5a841f0d7963c3f42e09e31c9e6b82229 model: simplify guess_instance invocations The second argument to the guess_instance classmethod is in practice fixed for Gist, Permission, RepoGroup, Repository, User, UserGroup; so might as well move this logic into per-class specializations of guess_instance. diff -r a918c4c5a841 -r c8f34ad333a2 kallithea/model/base.py --- a/kallithea/model/base.py Tue Jan 17 17:47:33 2017 +0100 +++ b/kallithea/model/base.py Wed Jan 18 16:30:13 2017 +0100 @@ -67,8 +67,7 @@ :param user: UserID, username, or User instance """ from kallithea.model.db import User - return User.guess_instance(user, - callback=User.get_by_username) + return User.guess_instance(user) def _get_repo(self, repository): """ @@ -77,8 +76,7 @@ :param repository: RepoID, repository name or Repository Instance """ from kallithea.model.db import Repository - return Repository.guess_instance(repository, - callback=Repository.get_by_repo_name) + return Repository.guess_instance(repository) def _get_perm(self, permission): """ @@ -87,5 +85,4 @@ :param permission: PermissionID, permission_name or Permission instance """ from kallithea.model.db import Permission - return Permission.guess_instance(permission, - callback=Permission.get_by_key) + return Permission.guess_instance(permission) diff -r a918c4c5a841 -r c8f34ad333a2 kallithea/model/db.py --- a/kallithea/model/db.py Tue Jan 17 17:47:33 2017 +0100 +++ b/kallithea/model/db.py Wed Jan 18 16:30:13 2017 +0100 @@ -560,6 +560,10 @@ self.user_id, self.username) @classmethod + def guess_instance(cls, value): + return super(User, cls).guess_instance(value, User.get_by_username) + + @classmethod def get_or_404(cls, id_, allow_default=True): ''' Overridden version of BaseDbModel.get_or_404, with an extra check on @@ -880,6 +884,10 @@ self.users_group_name) @classmethod + def guess_instance(cls, value): + return super(UserGroup, cls).guess_instance(value, UserGroup.get_by_group_name) + + @classmethod def get_by_group_name(cls, group_name, cache=False, case_insensitive=False): if case_insensitive: @@ -1118,6 +1126,10 @@ return cls.url_sep().join(repo_name.split(os.sep)) @classmethod + def guess_instance(cls, value): + return super(Repository, cls).guess_instance(value, Repository.get_by_repo_name) + + @classmethod def get_by_repo_name(cls, repo_name): q = Session().query(cls).filter(cls.repo_name == repo_name) q = q.options(joinedload(Repository.fork)) \ @@ -1562,6 +1574,10 @@ return URL_SEP @classmethod + def guess_instance(cls, value): + return super(RepoGroup, cls).guess_instance(value, RepoGroup.get_by_group_name) + + @classmethod def get_by_group_name(cls, group_name, cache=False, case_insensitive=False): group_name = group_name.rstrip('/') if case_insensitive: @@ -1778,6 +1794,10 @@ ) @classmethod + def guess_instance(cls, value): + return super(Permission, cls).guess_instance(value, Permission.get_by_key) + + @classmethod def get_by_key(cls, key): return cls.query().filter(cls.permission_name == key).scalar() @@ -2538,6 +2558,10 @@ return '' % (self.gist_type, self.gist_access_id) @classmethod + def guess_instance(cls, value): + return super(Gist, cls).guess_instance(value, Gist.get_by_access_id) + + @classmethod def get_or_404(cls, id_): res = cls.query().filter(cls.gist_access_id == id_).scalar() if res is None: diff -r a918c4c5a841 -r c8f34ad333a2 kallithea/model/gist.py --- a/kallithea/model/gist.py Tue Jan 17 17:47:33 2017 +0100 +++ b/kallithea/model/gist.py Wed Jan 18 16:30:13 2017 +0100 @@ -53,7 +53,7 @@ :param gist: GistID, gist_access_id, or Gist instance """ - return Gist.guess_instance(gist, callback=Gist.get_by_access_id) + return Gist.guess_instance(gist) def __delete_gist(self, gist): """ diff -r a918c4c5a841 -r c8f34ad333a2 kallithea/model/repo.py --- a/kallithea/model/repo.py Tue Jan 17 17:47:33 2017 +0100 +++ b/kallithea/model/repo.py Wed Jan 18 16:30:13 2017 +0100 @@ -59,12 +59,10 @@ URL_SEPARATOR = Repository.url_sep() def _get_user_group(self, users_group): - return UserGroup.guess_instance(users_group, - callback=UserGroup.get_by_group_name) + return UserGroup.guess_instance(users_group) def _get_repo_group(self, repo_group): - return RepoGroup.guess_instance(repo_group, - callback=RepoGroup.get_by_group_name) + return RepoGroup.guess_instance(repo_group) def _create_default_perms(self, repository, private): # create default permission diff -r a918c4c5a841 -r c8f34ad333a2 kallithea/model/repo_group.py --- a/kallithea/model/repo_group.py Tue Jan 17 17:47:33 2017 +0100 +++ b/kallithea/model/repo_group.py Wed Jan 18 16:30:13 2017 +0100 @@ -44,12 +44,10 @@ class RepoGroupModel(BaseModel): def _get_user_group(self, users_group): - return UserGroup.guess_instance(users_group, - callback=UserGroup.get_by_group_name) + return UserGroup.guess_instance(users_group) def _get_repo_group(self, repo_group): - return RepoGroup.guess_instance(repo_group, - callback=RepoGroup.get_by_group_name) + return RepoGroup.guess_instance(repo_group) @LazyProperty def repos_path(self): diff -r a918c4c5a841 -r c8f34ad333a2 kallithea/model/user_group.py --- a/kallithea/model/user_group.py Tue Jan 17 17:47:33 2017 +0100 +++ b/kallithea/model/user_group.py Wed Jan 18 16:30:13 2017 +0100 @@ -40,8 +40,7 @@ class UserGroupModel(BaseModel): def _get_user_group(self, user_group): - return UserGroup.guess_instance(user_group, - callback=UserGroup.get_by_group_name) + return UserGroup.guess_instance(user_group) def _create_default_perms(self, user_group): # create default permission