mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-09-02 16:04:26 +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 service import seafserv_rpc, seafserv_threaded_rpc, ccnet_threaded_rpc
|
||||||
from pysearpc import SearpcError
|
from pysearpc import SearpcError
|
||||||
|
import json
|
||||||
|
|
||||||
"""
|
"""
|
||||||
General rules for return values and exception handling of Seafile python API:
|
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
|
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):
|
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):
|
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):
|
def list_org_inner_pub_repos(self, org_id):
|
||||||
return seafserv_threaded_rpc.list_org_inner_pub_repos(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):
|
def set_reference_id (self, primary_id, reference_id):
|
||||||
return ccnet_threaded_rpc.set_reference_id(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()
|
ccnet_api = CcnetAPI()
|
||||||
|
Reference in New Issue
Block a user