1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-18 00:00:00 +00:00
This commit is contained in:
孙永强
2025-04-01 17:19:44 +08:00
parent d1b1cdd2e1
commit 8d44d72d7d
3 changed files with 37 additions and 12 deletions

View File

@@ -198,7 +198,8 @@ class FIleTransferLogs extends Component {
} = this.state;
const emails = {
from_emails: selectedFromUsers.map(user => user.email),
from_emails: selectedFromUsers.filter(item => item.email).map(user => user.email),
from_groups: selectedFromUsers.filter(item => !item.email).map(group => group.id),
to_emails: selectedToUsers.map(user => user.email),
to_groups: selectedToGroups.map(group => group.to_group_id || group.id),
operator_emails: selectedOperators.map(user => user.email)
@@ -231,18 +232,34 @@ class FIleTransferLogs extends Component {
}, () => this.getLogsByPage(this.initPage));
};
handleFromUserFilter = (user, shouldFetchData = true) => {
handleFromUserFilter = (item, shouldFetchData = true) => {
const { selectedFromUsers } = this.state;
let newSelectedUsers;
if (user === null) {
if (item === null) {
newSelectedUsers = selectedFromUsers;
} else {
const isSelected = selectedFromUsers.find(item => item.email === user.email);
if (isSelected) {
newSelectedUsers = selectedFromUsers.filter(item => item.email !== user.email);
if (item.email) {
const isSelected = selectedFromUsers.find(user => user.email === item.email);
if (isSelected) {
newSelectedUsers = selectedFromUsers.filter(user => user.email !== item.email);
} else {
newSelectedUsers = [...selectedFromUsers, item];
}
} else {
newSelectedUsers = [...selectedFromUsers, user];
const groupId = item.id;
const isSelected = selectedFromUsers.find(group => group.id === groupId);
if (isSelected) {
newSelectedUsers = selectedFromUsers.filter(group => group.id !== groupId);
} else {
const groupItem = {
id: groupId,
name: item.name,
from_group_id: groupId,
from_group_name: item.name
};
newSelectedUsers = [...selectedFromUsers, groupItem];
}
}
}
@@ -422,6 +439,7 @@ class FIleTransferLogs extends Component {
isOpen={openSelector === 'fromUser'}
onToggle={() => this.handleSelectorToggle('fromUser')}
searchUsersFunc={this.searchUsers}
searchGroupsFunc={this.searchGroups}
/>
<LogUserSelector
componentName="Transfer To"

View File

@@ -752,15 +752,18 @@ class SystemAdminAPI {
if (emails.from_emails && emails.from_emails.length) {
params.from_emails = emails.from_emails.join(',');
}
if (emails.from_groups && emails.from_groups.length) {
params.from_groups = emails.from_groups.join(',');
}
if (emails.to_emails && emails.to_emails.length) {
params.to_emails = emails.to_emails.join(',');
}
if (emails.operator_emails && emails.operator_emails.length) {
params.operator_emails = emails.operator_emails.join(',');
}
if (emails.to_groups && emails.to_groups.length) {
params.to_groups = emails.to_groups.join(',');
}
if (emails.operator_emails && emails.operator_emails.length) {
params.operator_emails = emails.operator_emails.join(',');
}
if (repos && repos.length) {
params.repos = repos.map(repo => repo.id).join(',');
}

View File

@@ -493,6 +493,10 @@ class AdminLogsFileTransferLogs(APIView):
if not is_valid_email(user_selected):
error_msg = 'email %s invalid.' % user_selected
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
from_groups = request.GET.get('from_groups')
from_groups = from_groups.split(',') if from_groups else []
from_groups = [group_id + '@seafile_group' for group_id in from_groups]
to_groups = request.GET.get('to_groups')
to_groups = to_groups.split(',') if to_groups else []
to_groups = [group_id + '@seafile_group' for group_id in to_groups]
@@ -505,8 +509,8 @@ class AdminLogsFileTransferLogs(APIView):
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
queryset = RepoTransfer.objects.all()
if from_emails:
queryset = queryset.by_from_user(from_emails)
if from_emails or from_groups:
queryset = queryset.by_from_user(from_emails + from_groups)
if to_emails or to_groups:
queryset = queryset.by_to_user(to_emails + to_groups)
if operator_emails: