Mercurial > kallithea
changeset 6462:c8f34ad333a2
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.
author | Søren Løvborg <sorenl@unity3d.com> |
---|---|
date | Wed, 18 Jan 2017 16:30:13 +0100 |
parents | a918c4c5a841 |
children | eb1a4c3cb76c |
files | kallithea/model/base.py kallithea/model/db.py kallithea/model/gist.py kallithea/model/repo.py kallithea/model/repo_group.py kallithea/model/user_group.py |
diffstat | 6 files changed, 33 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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 '<Gist:[%s]%s>' % (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:
--- 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): """
--- 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
--- 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):
--- 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