mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-08-31 23:19:36 +00:00
Get all shared users by repo including group users.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
|
||||
from service import seafserv_rpc, seafserv_threaded_rpc, ccnet_threaded_rpc
|
||||
from pysearpc import SearpcError
|
||||
import json
|
||||
|
||||
"""
|
||||
General rules for return values and exception handling of Seafile python API:
|
||||
@@ -741,10 +742,58 @@ class SeafileAPI(object):
|
||||
return True if seafserv_threaded_rpc.repo_has_been_shared(repo_id, 1 if including_groups else 0) else False
|
||||
|
||||
def get_shared_users_by_repo(self, repo_id):
|
||||
return seafserv_threaded_rpc.get_shared_users_by_repo (repo_id)
|
||||
users = []
|
||||
# get users that the repo is shared to
|
||||
shared_users = seafserv_threaded_rpc.get_shared_users_by_repo (repo_id)
|
||||
for user in shared_users:
|
||||
users.append(user.user)
|
||||
|
||||
# get users in groups that the repo is shared to
|
||||
group_ids = seafserv_threaded_rpc.get_shared_groups_by_repo(repo_id)
|
||||
if not group_ids:
|
||||
return users
|
||||
|
||||
ids = []
|
||||
for group_id in group_ids.split('\n'):
|
||||
if not group_id:
|
||||
continue
|
||||
ids.append(int(group_id))
|
||||
|
||||
json_ids = json.dumps(ids)
|
||||
group_users = ccnet_threaded_rpc.get_groups_members(json_ids)
|
||||
|
||||
for user in group_users:
|
||||
if user.user_name not in users:
|
||||
users.append(user.user_name)
|
||||
|
||||
return users
|
||||
|
||||
def org_get_shared_users_by_repo(self, org_id, repo_id):
|
||||
return seafserv_threaded_rpc.org_get_shared_users_by_repo(org_id, repo_id)
|
||||
users = []
|
||||
# get users that the repo is shared to
|
||||
shared_users = seafserv_threaded_rpc.org_get_shared_users_by_repo(org_id, repo_id)
|
||||
for user in shared_users:
|
||||
users.append(user.user)
|
||||
|
||||
# get users in groups that the repo is shared to
|
||||
group_ids = seafserv_threaded_rpc.get_org_groups_by_repo(org_id, repo_id)
|
||||
if not group_ids:
|
||||
return users
|
||||
|
||||
ids = []
|
||||
for group_id in group_ids.split('\n'):
|
||||
if not group_id:
|
||||
continue
|
||||
ids.append(int(group_id))
|
||||
|
||||
json_ids = json.dumps(ids)
|
||||
group_users = ccnet_threaded_rpc.get_groups_members(json_ids)
|
||||
|
||||
for user in group_users:
|
||||
if user.user_name not in users:
|
||||
users.append(user.user_name)
|
||||
|
||||
return users
|
||||
|
||||
def list_org_inner_pub_repos(self, org_id):
|
||||
return seafserv_threaded_rpc.list_org_inner_pub_repos(org_id)
|
||||
@@ -1070,4 +1119,10 @@ class CcnetAPI(object):
|
||||
def set_reference_id (self, primary_id, reference_id):
|
||||
return ccnet_threaded_rpc.set_reference_id(primary_id, reference_id)
|
||||
|
||||
def get_groups_members(self, group_ids):
|
||||
"""
|
||||
@group_ids: json '[id1, id2, id3,...]'
|
||||
"""
|
||||
return ccnet_threaded_rpc.get_groups_members(group_ids)
|
||||
|
||||
ccnet_api = CcnetAPI()
|
||||
|
Reference in New Issue
Block a user