mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 19:08:21 +00:00
Merge branch '9.0'
This commit is contained in:
2
.github/workflows/dist.yml
vendored
2
.github/workflows/dist.yml
vendored
@@ -4,7 +4,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "8.0"
|
||||
- "9.0"
|
||||
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@@ -76,28 +76,12 @@ class UserItem extends React.Component {
|
||||
this.props.toggleRevokeAdmin(email);
|
||||
}
|
||||
|
||||
changeStatus = (st) => {
|
||||
let isActive;
|
||||
if (st == 'active') {
|
||||
isActive = 'true';
|
||||
} else {
|
||||
isActive = 'false';
|
||||
changeStatus = (value) => {
|
||||
const isActive = value == 'active';
|
||||
if (isActive) {
|
||||
toaster.notify(gettext('It may take some time, please wait.'));
|
||||
}
|
||||
|
||||
seafileAPI.orgAdminChangeOrgUserStatus(orgID, this.props.user.email, isActive).then(res => {
|
||||
this.setState({
|
||||
currentStatus: isActive == 'true' ? 'active' : 'inactive',
|
||||
highlight: false,
|
||||
showMenu: false,
|
||||
});
|
||||
toaster.success(gettext('Edit succeeded.'));
|
||||
}).catch(error => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
if (errMessage === gettext('Error')) {
|
||||
errMessage = gettext('Edit failed.');
|
||||
}
|
||||
toaster.danger(errMessage);
|
||||
});
|
||||
this.props.changeStatus(this.props.user.email, isActive);
|
||||
}
|
||||
|
||||
onDropdownToggleClick = (e) => {
|
||||
@@ -147,7 +131,7 @@ class UserItem extends React.Component {
|
||||
<UserStatusEditor
|
||||
isTextMode={true}
|
||||
isEditIconShow={isEditIconShow}
|
||||
currentStatus={this.state.currentStatus}
|
||||
currentStatus={user.is_active ? 'active' : 'inactive'}
|
||||
statusArray={this.statusArray}
|
||||
onStatusChanged={this.changeStatus}
|
||||
/>
|
||||
|
@@ -6,6 +6,7 @@ import UserItem from './org-user-item';
|
||||
const propTypes = {
|
||||
initOrgUsersData: PropTypes.func.isRequired,
|
||||
toggleDelete: PropTypes.func.isRequired,
|
||||
changeStatus: PropTypes.func.isRequired,
|
||||
orgUsers: PropTypes.array.isRequired,
|
||||
page: PropTypes.number.isRequired,
|
||||
pageNext: PropTypes.bool.isRequired,
|
||||
@@ -79,6 +80,7 @@ class OrgUsersList extends React.Component {
|
||||
currentTab="users"
|
||||
isItemFreezed={this.state.isItemFreezed}
|
||||
toggleDelete={this.props.toggleDelete}
|
||||
changeStatus={this.props.changeStatus}
|
||||
onFreezedItem={this.onFreezedItem}
|
||||
onUnfreezedItem={this.onUnfreezedItem}
|
||||
/>
|
||||
|
@@ -166,6 +166,22 @@ class OrgUsers extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
changeStatus= (email, isActive) => {
|
||||
seafileAPI.orgAdminChangeOrgUserStatus(orgID, email, isActive).then(res => {
|
||||
let users = this.state.orgUsers.map(item => {
|
||||
if (item.email == email) {
|
||||
item['is_active']= res.data['is_active'];
|
||||
}
|
||||
return item;
|
||||
});
|
||||
this.setState({orgUsers: users});
|
||||
toaster.success(gettext('Edit succeeded.'));
|
||||
}).catch(error => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
toaster.danger(errMessage);
|
||||
});
|
||||
}
|
||||
|
||||
searchItems = (keyword) => {
|
||||
navigate(`${siteRoot}org/useradmin/search-users/?query=${encodeURIComponent(keyword)}`);
|
||||
}
|
||||
@@ -210,6 +226,7 @@ class OrgUsers extends Component {
|
||||
<OrgUsersList
|
||||
initOrgUsersData={this.initOrgUsersData}
|
||||
toggleDelete={this.toggleOrgUsersDelete}
|
||||
changeStatus={this.changeStatus}
|
||||
orgUsers={this.state.orgUsers}
|
||||
page={this.state.page}
|
||||
pageNext={this.state.pageNext}
|
||||
|
@@ -289,6 +289,9 @@ class OrgAdminUsers(APIView):
|
||||
logger.error(e)
|
||||
user_info['quota'] = -1
|
||||
|
||||
user_info['quota_usage'] = user_info['self_usage']
|
||||
user_info['quota_total'] = user_info['quota']
|
||||
|
||||
return Response(user_info)
|
||||
|
||||
|
||||
|
@@ -975,9 +975,9 @@ def view_history_file_common(request, repo_id, ret_dict):
|
||||
if is_textual_file(file_type=filetype):
|
||||
handle_textual_file(request, filetype, inner_path, ret_dict)
|
||||
elif filetype == DOCUMENT:
|
||||
handle_document(inner_path, obj_id, fileext, ret_dict)
|
||||
handle_document(raw_path, obj_id, fileext, ret_dict)
|
||||
elif filetype == SPREADSHEET:
|
||||
handle_spreadsheet(inner_path, obj_id, fileext, ret_dict)
|
||||
handle_spreadsheet(raw_path, obj_id, fileext, ret_dict)
|
||||
else:
|
||||
pass
|
||||
else:
|
||||
@@ -1271,9 +1271,9 @@ def view_shared_file(request, fileshare):
|
||||
if is_textual_file(file_type=filetype):
|
||||
handle_textual_file(request, filetype, inner_path, ret_dict)
|
||||
elif filetype == DOCUMENT:
|
||||
handle_document(inner_path, obj_id, fileext, ret_dict)
|
||||
handle_document(raw_path, obj_id, fileext, ret_dict)
|
||||
elif filetype == SPREADSHEET:
|
||||
handle_spreadsheet(inner_path, obj_id, fileext, ret_dict)
|
||||
handle_spreadsheet(raw_path, obj_id, fileext, ret_dict)
|
||||
elif filetype == XMIND:
|
||||
xmind_image_path = get_thumbnail_image_path(obj_id, XMIND_IMAGE_SIZE)
|
||||
if not os.path.exists(xmind_image_path) and not extract_xmind_image(repo_id, path)[0]:
|
||||
@@ -1470,9 +1470,9 @@ def view_file_via_shared_dir(request, fileshare):
|
||||
if is_textual_file(file_type=filetype):
|
||||
handle_textual_file(request, filetype, inner_path, ret_dict)
|
||||
elif filetype == DOCUMENT:
|
||||
handle_document(inner_path, obj_id, fileext, ret_dict)
|
||||
handle_document(raw_path, obj_id, fileext, ret_dict)
|
||||
elif filetype == SPREADSHEET:
|
||||
handle_spreadsheet(inner_path, obj_id, fileext, ret_dict)
|
||||
handle_spreadsheet(raw_path, obj_id, fileext, ret_dict)
|
||||
elif filetype == IMAGE:
|
||||
current_commit = get_commits(repo_id, 0, 1)[0]
|
||||
real_parent_dir = os.path.dirname(real_path)
|
||||
|
Reference in New Issue
Block a user