From c6805b9f64a178c7a0f7515a1244d607e5c7c30f Mon Sep 17 00:00:00 2001 From: Michael An <2331806369@qq.com> Date: Thu, 26 Jun 2025 16:34:11 +0800 Subject: [PATCH] fix enableFaceRecognition and menu Detect faces (#7979) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix frontend enableFaceRecognition and menu Detect faces * Update apis.py --------- Co-authored-by: 孙永强 <11704063+s-yongqiang@user.noreply.gitee.com> --- frontend/src/css/lib-settings.css | 2 +- .../dialog/metadata-face-recognition-dialog/index.js | 2 +- .../dialog/metadata-tags-status-dialog/index.js | 2 +- frontend/src/metadata/views/table/context-menu.js | 10 ++++++---- seahub/repo_metadata/apis.py | 6 +++--- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/frontend/src/css/lib-settings.css b/frontend/src/css/lib-settings.css index 265a7b0725..38827063f6 100644 --- a/frontend/src/css/lib-settings.css +++ b/frontend/src/css/lib-settings.css @@ -52,7 +52,7 @@ flex-direction: column; } -.lib-settings-dialog .oepn-metadata-tip { +.lib-settings-dialog .open-metadata-tip { background-color: #ffeacd; margin: -1rem -1rem 1rem; padding: 0.5rem 1rem; diff --git a/frontend/src/metadata/components/dialog/metadata-face-recognition-dialog/index.js b/frontend/src/metadata/components/dialog/metadata-face-recognition-dialog/index.js index 8136bf7bbb..f161dd5f0d 100644 --- a/frontend/src/metadata/components/dialog/metadata-face-recognition-dialog/index.js +++ b/frontend/src/metadata/components/dialog/metadata-face-recognition-dialog/index.js @@ -62,7 +62,7 @@ const MetadataFaceRecognitionDialog = ({ value: oldValue, repoID, toggleDialog: {!showTurnOffConfirmDialog && ( <> - {!enableMetadata &&

{gettext('Please turn on extended properties setting first')}

} + {!enableMetadata &&

{gettext('Please turn on extended properties setting first')}

} - {!enableMetadata &&

{gettext('Please turn on extended properties setting first')}

} + {!enableMetadata &&

{gettext('Please turn on extended properties setting first')}

} 0) { + if (enableFaceRecognition && imageRecords.length > 0) { list.push({ value: OPERATION.DETECT_FACES, label: gettext('Detect faces'), records: imageRecords }); } } @@ -152,7 +154,7 @@ const ContextMenu = ({ const fileName = getFileNameFromRecord(record); return Utils.imageCheck(fileName); }); - if (imageRecords.length > 0) { + if (enableFaceRecognition && imageRecords.length > 0) { list.push({ value: OPERATION.DETECT_FACES, label: gettext('Detect faces'), records: imageRecords }); } } @@ -202,7 +204,7 @@ const ContextMenu = ({ if (isImage || isVideo) { aiOptions.push({ value: OPERATION.FILE_DETAIL, label: gettext('Extract file detail'), record: record }); } - if (isImage) { + if (enableFaceRecognition && isImage) { aiOptions.push({ value: OPERATION.DETECT_FACES, label: gettext('Detect faces'), records: [record] }); } @@ -229,7 +231,7 @@ const ContextMenu = ({ } return list; - }, [isGroupView, selectedPosition, recordMetrics, selectedRange, metadata, recordGetterByIndex, checkIsDescribableFile, getAbleDeleteRecords]); + }, [isGroupView, selectedPosition, recordMetrics, selectedRange, metadata, recordGetterByIndex, checkIsDescribableFile, getAbleDeleteRecords, enableFaceRecognition]); const handleOptionClick = useCallback((option, event) => { switch (option.value) { diff --git a/seahub/repo_metadata/apis.py b/seahub/repo_metadata/apis.py index c6eb4ba67e..81c0513bc0 100644 --- a/seahub/repo_metadata/apis.py +++ b/seahub/repo_metadata/apis.py @@ -1778,9 +1778,9 @@ class MetadataRecognizeFaces(APIView): error_msg = 'obj_ids is invalid.' return api_error(status.HTTP_400_BAD_REQUEST, error_msg) - record = RepoMetadata.objects.filter(repo_id=repo_id).first() - if not record or not record.enabled: - error_msg = f'The metadata module is disabled for repo {repo_id}.' + metadata = RepoMetadata.objects.filter(repo_id=repo_id).first() + if not metadata or not metadata.enabled or not metadata.face_recognition_enabled: + error_msg = f'The face recognition is disabled for repo {repo_id}.' return api_error(status.HTTP_404_NOT_FOUND, error_msg) repo = seafile_api.get_repo(repo_id)