Flesh out the API for managing permissions.
This commit is contained in:
parent
6bcb5cfcaa
commit
1883014ad9
2 changed files with 85 additions and 6 deletions
|
@ -200,3 +200,37 @@ def get_user_repo_permissions(user, repository):
|
|||
select = RepositoryPermission.select()
|
||||
return select.where(RepositoryPermission.user == user,
|
||||
RepositoryPermission.repository == repository)
|
||||
|
||||
|
||||
def get_user_reponame_permission(user_obj, namespace_name, repository_name):
|
||||
repo = Repository.get(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name)
|
||||
perm = RepositoryPermission.get(RepositoryPermission.user == user_obj,
|
||||
RepositoryPermission.repository == repo)
|
||||
return perm
|
||||
|
||||
|
||||
def set_user_repo_permission(user_obj, namespace_name, repository_name,
|
||||
role_name):
|
||||
repo = Repository.get(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name)
|
||||
new_role = Role.get(Role.name == role_name)
|
||||
|
||||
# Fetch any existing permission for this user on the repo
|
||||
try:
|
||||
perm = RepositoryPermission.get(RepositoryPermission.user == user_obj,
|
||||
RepositoryPermission.repository == repo)
|
||||
perm.role = new_role
|
||||
perm.save()
|
||||
return perm
|
||||
except RepositoryPermission.DoesNotExist:
|
||||
new_perm = RepositoryPermission.create(repository=repo, user=user_obj,
|
||||
role=new_role)
|
||||
return new_perm
|
||||
|
||||
def delete_user_permission(user_obj, namespace_name, repository_name):
|
||||
repo = Repository.get(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name)
|
||||
perm = RepositoryPermission.get(RepositoryPermission.user == user_obj,
|
||||
RepositoryPermission.repository == repo)
|
||||
perm.delete_instance()
|
||||
|
|
Reference in a new issue