1
0
mirror of https://github.com/haiwen/seafile-server.git synced 2025-04-28 03:20:10 +00:00

Merge branch '8.0'

This commit is contained in:
caixiangyue 2021-09-26 11:09:02 +08:00
commit 85ead5e00e
11 changed files with 64 additions and 4 deletions

View File

@ -2769,7 +2769,6 @@ seaf_fs_manager_get_dirent_by_path (SeafFSManager *mgr,
root_id, parent_dir, error);
if (!dir) {
seaf_warning ("dir %s doesn't exist in repo %.8s.\n", parent_dir, repo_id);
goto out;
}

View File

@ -1443,6 +1443,33 @@ ccnet_group_manager_get_groups_members (CcnetGroupManager *mgr, const char *grou
return ret;
}
GList*
ccnet_group_manager_search_group_members (CcnetGroupManager *mgr,
int group_id,
const char *pattern)
{
CcnetDB *db = mgr->priv->db;
GList *ret = NULL;
char *sql;
int rc;
char *db_patt = g_strdup_printf ("%%%s%%", pattern);
sql = "SELECT DISTINCT user_name FROM GroupUser "
"WHERE group_id = ? AND user_name LIKE ? ORDER BY user_name";
rc = seaf_db_statement_foreach_row (db, sql,
get_groups_members_cb, &ret,
2, "int", group_id, "string", db_patt);
g_free (db_patt);
if (rc < 0) {
g_list_free_full (ret, g_object_unref);
return NULL;
}
return g_list_reverse (ret);
}
int
ccnet_group_manager_update_group_user (CcnetGroupManager *mgr,
const char *old_email,

View File

@ -130,6 +130,11 @@ ccnet_group_manager_search_groups (CcnetGroupManager *mgr,
const char *keyword,
int start, int limit);
GList*
ccnet_group_manager_search_group_members (CcnetGroupManager *mgr,
int group_id,
const char *pattern);
GList *
ccnet_group_manager_get_top_groups (CcnetGroupManager *mgr, gboolean including_org, GError **error);

View File

@ -4696,6 +4696,17 @@ ccnet_rpc_search_groups (const char *group_patt,
return groups;
}
GList *
ccnet_rpc_search_group_members (int group_id, const char *pattern, GError **error)
{
CcnetGroupManager *group_mgr = seaf->group_mgr;
GList *ret = NULL;
ret = ccnet_group_manager_search_group_members (group_mgr, group_id, pattern);
return ret;
}
GList*
ccnet_rpc_get_top_groups (int including_org, GError **error)
{

View File

@ -1280,6 +1280,9 @@ ccnet_rpc_search_groups (const char *group_patt,
GList *
ccnet_rpc_get_groups_members (const char *group_ids, GError **error);
GList *
ccnet_rpc_search_group_members (int group_id, const char *pattern, GError **error);
int
ccnet_rpc_create_org (const char *org_name, const char *url_prefix,
const char *creator, GError **error);

View File

@ -978,6 +978,10 @@ class SeafServerThreadedRpcClient(NamedPipeClient):
def search_groups(self, group_patt, start, limit):
pass
@searpc_func("objlist", ["int", "string"])
def search_group_members(self, group_id, pattern):
pass
@searpc_func("objlist", ["string"])
def get_groups_members(self, group_ids):
pass

View File

@ -935,6 +935,9 @@ class CcnetAPI(object):
Search for groups whose name contains @group_patt.
"""
return ccnet_threaded_rpc.search_groups(group_patt, start, limit)
def search_group_members(self, group_id, pattern):
return ccnet_threaded_rpc.search_group_members(group_id, pattern)
def get_top_groups(self, including_org=False):
return ccnet_threaded_rpc.get_top_groups(1 if including_org else 0)

View File

@ -1209,7 +1209,6 @@ class SeafDavConfigurator(AbstractConfigurator):
[WEBDAV]
enabled = false
port = 8080
fastcgi = false
share_name = /
'''

View File

@ -349,8 +349,6 @@ function gen_seafdav_conf () {
[WEBDAV]
enabled = false
port = 8080
fastcgi = false
host = 0.0.0.0
share_name = /
EOF
); then

View File

@ -930,6 +930,10 @@ static void start_rpc_service (const char *seafile_dir,
ccnet_rpc_search_groups,
"search_groups",
searpc_signature_objlist__string_int_int());
searpc_server_register_function ("seafserv-threaded-rpcserver",
ccnet_rpc_search_group_members,
"search_group_members",
searpc_signature_objlist__int_string());
searpc_server_register_function ("seafserv-threaded-rpcserver",
ccnet_rpc_get_top_groups,
"get_top_groups",

View File

@ -3,6 +3,7 @@ from seaserv import seafile_api as api
from seaserv import ccnet_api
from tests.config import USER, USER2
from tests.utils import randstring
def test_multi_tier_groups(repo):
id1 = ccnet_api.create_group('group1', USER, parent_group_id=-1)
@ -21,6 +22,12 @@ def test_multi_tier_groups(repo):
assert group3.parent_group_id == id1
assert group4.parent_group_id == id3
members = ccnet_api.search_group_members (id1, 'randgroup{}'.format(randstring(6)))
assert len(members) == 0
members = ccnet_api.search_group_members (id1, USER)
assert len(members) == 1
assert members[0].user_name == USER
ances_order = [id5, id4, id3, id2, id1]
user2_groups_with_ancestors = ccnet_api.get_groups (USER2, return_ancestors = True)
assert len(user2_groups_with_ancestors) == 5