diff --git a/media/assets/scripts/app/views/folder-perm.js b/media/assets/scripts/app/views/folder-perm.js
index 76afdecbf3..7e4ee4171e 100644
--- a/media/assets/scripts/app/views/folder-perm.js
+++ b/media/assets/scripts/app/views/folder-perm.js
@@ -92,7 +92,7 @@ define([
$('[name="email"]', $add_user_perm).select2(Common.contactInputOptionsForSelect2());
// use select2 to 'group' input in 'add group perm'
- var groups = app.pageOptions.groups || [],
+ var groups = app.pageOptions.joined_groups_exclude_address_book || [],
g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) {
g_opts += '';
diff --git a/media/assets/scripts/app/views/share.js b/media/assets/scripts/app/views/share.js
index 870ed0c51f..01d6b4c96f 100644
--- a/media/assets/scripts/app/views/share.js
+++ b/media/assets/scripts/app/views/share.js
@@ -466,7 +466,7 @@ define([
width: '400px'
},Common.contactInputOptionsForSelect2()));
- var groups = app.pageOptions.groups || [];
+ var groups = app.pageOptions.joined_groups_exclude_address_book || [];
var g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) {
g_opts += '';
diff --git a/seahub/api2/endpoints/shareable_groups.py b/seahub/api2/endpoints/shareable_groups.py
index aed4313f5a..c0f28215da 100644
--- a/seahub/api2/endpoints/shareable_groups.py
+++ b/seahub/api2/endpoints/shareable_groups.py
@@ -54,6 +54,6 @@ class ShareableGroups(APIView):
avatar_size = GROUP_AVATAR_DEFAULT_SIZE
result = [get_group_info(request, g.id, avatar_size)
- for g in groups]
+ for g in groups if g.parent_group_id == 0]
return Response(result)
diff --git a/seahub/templates/libraries.html b/seahub/templates/libraries.html
index 0cbdc0fff7..aa1deb94b6 100644
--- a/seahub/templates/libraries.html
+++ b/seahub/templates/libraries.html
@@ -224,6 +224,13 @@ app["pageOptions"] = {
{% endfor %}
return groups;
})(),
+ joined_groups_exclude_address_book: (function () {
+ var groups = [];
+ {% for group in joined_groups_exclude_address_book %}
+ groups.push({'name': '{{group.group_name}}', 'id': '{{group.id}}'});
+ {% endfor %}
+ return groups;
+ })(),
library_templates: (function () {
var templates = [];
{% for template in library_templates %}
diff --git a/seahub/views/__init__.py b/seahub/views/__init__.py
index 1f06969b46..2b0b4ec231 100644
--- a/seahub/views/__init__.py
+++ b/seahub/views/__init__.py
@@ -23,7 +23,7 @@ import seaserv
from seaserv import get_repo, get_commits, \
seafserv_threaded_rpc, seafserv_rpc, is_repo_owner, \
get_file_size, MAX_DOWNLOAD_DIR_SIZE, \
- seafile_api
+ seafile_api, ccnet_api
from pysearpc import SearpcError
from seahub.avatar.util import get_avatar_file_storage
@@ -694,7 +694,7 @@ def libraries(request):
org_id = request.user.org.org_id
joined_groups = seaserv.get_org_groups_by_user(org_id, username)
else:
- joined_groups = seaserv.get_personal_groups_by_user(username)
+ joined_groups = ccnet_api.get_groups(username, return_ancestors=True)
if joined_groups:
try:
@@ -703,6 +703,9 @@ def libraries(request):
logger.error(e)
joined_groups = []
+ joined_groups_exclude_address_book = [item for item in joined_groups if
+ item.parent_group_id == 0]
+
return render(request, 'libraries.html', {
"allow_public_share": allow_public_share,
"guide_enabled": guide_enabled,
@@ -723,6 +726,7 @@ def libraries(request):
'file_audit_enabled': FILE_AUDIT_ENABLED,
'can_add_pub_repo': can_add_pub_repo,
'joined_groups': joined_groups,
+ 'joined_groups_exclude_address_book': joined_groups_exclude_address_book,
'storages': get_library_storages(request),
'unread_notifications_request_interval': UNREAD_NOTIFICATIONS_REQUEST_INTERVAL,
'library_templates': LIBRARY_TEMPLATES.keys() if \
diff --git a/static/scripts/app/views/dialogs/repo-folder-perm-admin.js b/static/scripts/app/views/dialogs/repo-folder-perm-admin.js
index 4b3c8a7d3c..92fd2a2eff 100644
--- a/static/scripts/app/views/dialogs/repo-folder-perm-admin.js
+++ b/static/scripts/app/views/dialogs/repo-folder-perm-admin.js
@@ -102,7 +102,7 @@ define([
placeholder: gettext("Search user or enter email and press Enter") // to override 'placeholder' returned by `Common.conta...`
}));
} else {
- var groups = app.pageOptions.groups || [];
+ var groups = app.pageOptions.joined_groups_exclude_address_book || [];
var g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) {
g_opts += '';
diff --git a/static/scripts/app/views/folder-perm.js b/static/scripts/app/views/folder-perm.js
index 91845b17bc..b12cb2ceae 100644
--- a/static/scripts/app/views/folder-perm.js
+++ b/static/scripts/app/views/folder-perm.js
@@ -103,7 +103,7 @@ define([
$('[name="email"]', this.$add_user_perm).select2(Common.contactInputOptionsForSelect2());
// use select2 to 'group' input in 'add group perm'
- var groups = app.pageOptions.groups || [],
+ var groups = app.pageOptions.joined_groups_exclude_address_book || [],
g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) {
g_opts += '';
diff --git a/static/scripts/app/views/share.js b/static/scripts/app/views/share.js
index c488c9b884..fad103cd66 100644
--- a/static/scripts/app/views/share.js
+++ b/static/scripts/app/views/share.js
@@ -714,7 +714,7 @@ define([
}
});
} else {
- groups = app.pageOptions.groups || [];
+ groups = app.pageOptions.joined_groups_exclude_address_book || [];
prepareGroupsSelector();
$table.removeClass('hide');
}