Changeset - 87c2cd07166a
[Not reviewed]
default
0 5 0
Mads Kiilerich (mads) - 5 years ago 2020-11-01 23:04:25
mads@kiilerich.com
Grafted from: 90dd5831e497
lib: move get_all_user_repos to AuthUser
5 files changed with 13 insertions and 17 deletions:
0 comments (0 inline, 0 general)
kallithea/controllers/api/api.py
Show inline comments
 
@@ -1097,7 +1097,7 @@ class ApiController(JSONRPCController):
 
            error:  null
 
        """
 
        if not HasPermissionAny('hg.admin')():
 
            repos = RepoModel().get_all_user_repos(user=request.authuser.user_id)
 
            repos = request.authuser.get_all_user_repos()
 
        else:
 
            repos = db.Repository.query()
 

	
kallithea/lib/auth.py
Show inline comments
 
@@ -467,6 +467,16 @@ class AuthUser(object):
 
                pass
 
        return _set or set(['0.0.0.0/0', '::/0'])
 

	
 
    def get_all_user_repos(self):
 
        """
 
        Gets all repositories that user have at least read access
 
        """
 
        repos = [repo_name
 
            for repo_name, perm in self.repository_permissions.items()
 
            if perm in ['repository.read', 'repository.write', 'repository.admin']
 
            ]
 
        return db.Repository.query().filter(db.Repository.repo_name.in_(repos))
 

	
 

	
 
#==============================================================================
 
# CHECK DECORATORS
kallithea/lib/auth_modules/__init__.py
Show inline comments
 
@@ -22,7 +22,7 @@ from inspect import isfunction
 

	
 
from kallithea.lib.auth import AuthUser
 
from kallithea.lib.compat import hybrid_property
 
from kallithea.lib.utils2 import asbool, PasswordGenerator
 
from kallithea.lib.utils2 import PasswordGenerator, asbool
 
from kallithea.model import db, meta, validators
 
from kallithea.model.user import UserModel
 
from kallithea.model.user_group import UserGroupModel
kallithea/model/repo.py
Show inline comments
 
@@ -89,20 +89,6 @@ class RepoModel(object):
 
            .filter(db.Repository.repo_name == repo_name)
 
        return repo.scalar()
 

	
 
    def get_all_user_repos(self, user):
 
        """
 
        Gets all repositories that user have at least read access
 

	
 
        :param user:
 
        """
 
        from kallithea.lib.auth import AuthUser
 
        auth_user = AuthUser(dbuser=db.User.guess_instance(user))
 
        repos = [repo_name
 
            for repo_name, perm in auth_user.repository_permissions.items()
 
            if perm in ['repository.read', 'repository.write', 'repository.admin']
 
            ]
 
        return db.Repository.query().filter(db.Repository.repo_name.in_(repos))
 

	
 
    @classmethod
 
    def _render_datatable(cls, tmpl, *args, **kwargs):
 
        from tg import app_globals, request
kallithea/tests/api/api_base.py
Show inline comments
 
@@ -688,7 +688,7 @@ class _BaseTestApi(object):
 

	
 
        expected = jsonify([
 
            repo.get_api_data()
 
            for repo in RepoModel().get_all_user_repos(self.TEST_USER_LOGIN)
 
            for repo in AuthUser(dbuser=db.User.get_by_username(self.TEST_USER_LOGIN)).get_all_user_repos()
 
        ])
 

	
 
        self._compare_ok(id_, expected, given=response.body)
0 comments (0 inline, 0 general)