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)