diff --git a/frontend/src/components/dialog/transfer-dialog.js b/frontend/src/components/dialog/transfer-dialog.js index 8ff6db7e60..093c9e5fdf 100644 --- a/frontend/src/components/dialog/transfer-dialog.js +++ b/frontend/src/components/dialog/transfer-dialog.js @@ -76,14 +76,14 @@ class TransferDialog extends React.Component { maxMenuHeight={200} hideSelectedOptions={true} components={makeAnimated()} - placeholder={gettext('Select a Department')} + placeholder={gettext('Select a department')} options={this.options} onChange={this.handleSelectChange} /> } {isPro && {this.state.transferToUser ? - gettext('Transfer Library to Department'): gettext('Transfer Library to User')} + gettext('Transfer to department'): gettext('Transfer to user')} } diff --git a/seahub/api2/endpoints/departments.py b/seahub/api2/endpoints/departments.py index daa33a66c8..8a50e1d48c 100644 --- a/seahub/api2/endpoints/departments.py +++ b/seahub/api2/endpoints/departments.py @@ -15,6 +15,7 @@ from seahub.api2.authentication import TokenAuthentication from seahub.api2.throttling import UserRateThrottle from seahub.avatar.templatetags.group_avatar_tags import api_grp_avatar_url, get_default_group_avatar_url from seahub.utils.timeutils import timestamp_to_isoformat_timestr +from seahub.group.utils import is_group_member from seahub.avatar.settings import GROUP_AVATAR_DEFAULT_SIZE logger = logging.getLogger(__name__) @@ -46,6 +47,10 @@ class Departments(APIView): for department in departments: department = seaserv.get_group(department.id) + username = request.user.username + if not is_group_member(department.id, username): + continue + try: avatar_url, is_default, date_uploaded = api_grp_avatar_url(department.id, avatar_size) except Exception as e: diff --git a/seahub/api2/views.py b/seahub/api2/views.py index 06852132ef..28d5880cd4 100644 --- a/seahub/api2/views.py +++ b/seahub/api2/views.py @@ -1579,7 +1579,11 @@ class RepoOwner(APIView): # transfer repo try: if org_id: - seafile_api.set_org_repo_owner(org_id, repo_id, new_owner) + if '@seafile_group' in new_owner: + group_id = int(new_owner.split('@')[0]) + seafile_api.org_transfer_repo_to_group(repo_id, org_id, group_id, PERMISSION_READ_WRITE) + else: + seafile_api.set_org_repo_owner(org_id, repo_id, new_owner) else: if ccnet_api.get_orgs_by_user(new_owner): # can not transfer library to organization user %s. @@ -1588,7 +1592,7 @@ class RepoOwner(APIView): else: if '@seafile_group' in new_owner: group_id = int(new_owner.split('@')[0]) - seafile_api.transfer_repo_to_group(repo_id, group_id, '') + seafile_api.transfer_repo_to_group(repo_id, group_id, PERMISSION_READ_WRITE) else: seafile_api.set_repo_owner(repo_id, new_owner) except SearpcError as e: @@ -1614,7 +1618,8 @@ class RepoOwner(APIView): for shared_group in shared_groups: shared_group_id = shared_group.group_id - if not is_group_member(shared_group_id, new_owner): + if ('@seafile_group' not in new_owner) and\ + (not is_group_member(shared_group_id, new_owner)): continue if org_id: