mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-14 22:33:17 +00:00
repo admin can enable metadata (#6569)
This commit is contained in:
@@ -322,7 +322,7 @@ class DirColumnNav extends React.Component {
|
|||||||
isDisplayFiles={this.state.isDisplayFiles}
|
isDisplayFiles={this.state.isDisplayFiles}
|
||||||
/>
|
/>
|
||||||
</TreeSection>
|
</TreeSection>
|
||||||
<DirViews repoID={repoID} currentPath={currentPath} userPerm={userPerm} />
|
<DirViews repoID={repoID} currentPath={currentPath} userPerm={userPerm} currentRepoInfo={currentRepoInfo} />
|
||||||
<DirOthers
|
<DirOthers
|
||||||
repoID={repoID}
|
repoID={repoID}
|
||||||
userPerm={userPerm}
|
userPerm={userPerm}
|
||||||
|
@@ -4,7 +4,7 @@ import { gettext } from '../../utils/constants';
|
|||||||
import TreeSection from '../tree-section';
|
import TreeSection from '../tree-section';
|
||||||
import { MetadataStatusManagementDialog, MetadataTreeView, useMetadata } from '../../metadata';
|
import { MetadataStatusManagementDialog, MetadataTreeView, useMetadata } from '../../metadata';
|
||||||
|
|
||||||
const DirViews = ({ userPerm, repoID, currentPath }) => {
|
const DirViews = ({ userPerm, repoID, currentPath, currentRepoInfo }) => {
|
||||||
const enableMetadataManagement = useMemo(() => {
|
const enableMetadataManagement = useMemo(() => {
|
||||||
return window.app.pageOptions.enableMetadataManagement;
|
return window.app.pageOptions.enableMetadataManagement;
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@@ -13,8 +13,7 @@ const DirViews = ({ userPerm, repoID, currentPath }) => {
|
|||||||
const [showMetadataStatusManagementDialog, setShowMetadataStatusManagementDialog] = useState(false);
|
const [showMetadataStatusManagementDialog, setShowMetadataStatusManagementDialog] = useState(false);
|
||||||
const { enableMetadata, updateEnableMetadata, navigation } = useMetadata();
|
const { enableMetadata, updateEnableMetadata, navigation } = useMetadata();
|
||||||
const moreOperations = useMemo(() => {
|
const moreOperations = useMemo(() => {
|
||||||
if (!enableMetadataManagement) return [];
|
if (!enableMetadataManagement || !currentRepoInfo.is_admin) return [];
|
||||||
if (userPerm !== 'rw' && userPerm !== 'admin') return [];
|
|
||||||
return [
|
return [
|
||||||
{ key: 'extended-properties', value: gettext('Extended properties') }
|
{ key: 'extended-properties', value: gettext('Extended properties') }
|
||||||
];
|
];
|
||||||
|
@@ -14,6 +14,7 @@ from seahub.views import check_folder_permission
|
|||||||
from seahub.repo_metadata.utils import add_init_metadata_task, gen_unique_id, init_metadata, get_sys_columns
|
from seahub.repo_metadata.utils import add_init_metadata_task, gen_unique_id, init_metadata, get_sys_columns
|
||||||
from seahub.repo_metadata.metadata_server_api import MetadataServerAPI, list_metadata_view_records
|
from seahub.repo_metadata.metadata_server_api import MetadataServerAPI, list_metadata_view_records
|
||||||
from seahub.utils.timeutils import datetime_to_isoformat_timestr
|
from seahub.utils.timeutils import datetime_to_isoformat_timestr
|
||||||
|
from seahub.utils.repo import is_repo_admin
|
||||||
|
|
||||||
from seaserv import seafile_api
|
from seaserv import seafile_api
|
||||||
|
|
||||||
@@ -72,6 +73,10 @@ class MetadataManage(APIView):
|
|||||||
error_msg = 'Library %s not found.' % repo_id
|
error_msg = 'Library %s not found.' % repo_id
|
||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
|
|
||||||
|
if not is_repo_admin(request.user.username, repo_id):
|
||||||
|
error_msg = 'Permission denied.'
|
||||||
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
# permission check
|
# permission check
|
||||||
permission = check_folder_permission(request, repo_id, '/')
|
permission = check_folder_permission(request, repo_id, '/')
|
||||||
if not permission:
|
if not permission:
|
||||||
@@ -115,8 +120,7 @@ class MetadataManage(APIView):
|
|||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
|
|
||||||
# permission check
|
# permission check
|
||||||
permission = check_folder_permission(request, repo_id, '/')
|
if not is_repo_admin(request.user.username, repo_id):
|
||||||
if not permission:
|
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user