From 62f31eee77020b0ca9e85a47aec2806c3ce10f98 Mon Sep 17 00:00:00 2001 From: JoinTyang <41655440+JoinTyang@users.noreply.github.com> Date: Sat, 19 Apr 2025 14:34:02 +0800 Subject: [PATCH] fix update records bug (#7747) --- frontend/src/metadata/store/server-operator.js | 6 +++++- seahub/repo_metadata/apis.py | 6 +++++- seahub/repo_metadata/constants.py | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/src/metadata/store/server-operator.js b/frontend/src/metadata/store/server-operator.js index ba99e7bce9..548ca48e68 100644 --- a/frontend/src/metadata/store/server-operator.js +++ b/frontend/src/metadata/store/server-operator.js @@ -44,7 +44,11 @@ class ServerOperator { window.sfMetadataContext.modifyRecords(repo_id, recordsData, is_copy_paste).then(res => { callback({ operation }); }).catch(error => { - callback({ error: gettext('Failed to modify records') }); + if (error.response && error.response.status === 413) { + callback({ error: gettext('Number of records exceeds the limit of 1000') }); + } else { + callback({ error: gettext('Failed to modify records') }); + } }); } break; diff --git a/seahub/repo_metadata/apis.py b/seahub/repo_metadata/apis.py index 7199e5157b..b14fdcb40a 100644 --- a/seahub/repo_metadata/apis.py +++ b/seahub/repo_metadata/apis.py @@ -21,7 +21,7 @@ from seahub.repo_metadata.utils import add_init_metadata_task, recognize_faces, from seahub.repo_metadata.metadata_server_api import MetadataServerAPI, list_metadata_view_records from seahub.utils.repo import is_repo_admin from seaserv import seafile_api -from seahub.repo_metadata.constants import FACE_RECOGNITION_VIEW_ID +from seahub.repo_metadata.constants import FACE_RECOGNITION_VIEW_ID, METADATA_RECORD_UPDATE_LIMIT logger = logging.getLogger(__name__) @@ -375,6 +375,10 @@ class MetadataRecords(APIView): error_msg = 'records_data invalid.' return api_error(status.HTTP_400_BAD_REQUEST, error_msg) + if len(records_data) > METADATA_RECORD_UPDATE_LIMIT: + error_msg = 'Number of records exceeds the limit of 1000.' + return api_error(status.HTTP_413_REQUEST_ENTITY_TOO_LARGE, error_msg) + metadata = RepoMetadata.objects.filter(repo_id=repo_id).first() if not metadata or not metadata.enabled: error_msg = f'The metadata module is disabled for repo {repo_id}.' diff --git a/seahub/repo_metadata/constants.py b/seahub/repo_metadata/constants.py index 5dfb4ec520..3d71979962 100644 --- a/seahub/repo_metadata/constants.py +++ b/seahub/repo_metadata/constants.py @@ -1 +1,3 @@ FACE_RECOGNITION_VIEW_ID = '_face_recognition' + +METADATA_RECORD_UPDATE_LIMIT = 1000