From 189c78cb46e3a18d69914ce307ae076fd4de9b6e Mon Sep 17 00:00:00 2001 From: Sam AL-Arbid Date: Sat, 23 Sep 2023 02:27:35 +0200 Subject: [PATCH] permissions: records always in community feature --- .gitignore | 5 +- .../controls/PublishButton/PublishButton.js | 14 +- invenio_rdm_records/config.py | 7 + invenio_rdm_records/services/generators.py | 12 ++ invenio_rdm_records/services/permissions.py | 29 ++- tests/resources/test_resources_communities.py | 182 ++++++++++++++++++ 6 files changed, 242 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 43261e10f..12e73aa5c 100644 --- a/.gitignore +++ b/.gitignore @@ -75,5 +75,6 @@ Pipfile.lock # pip wheel pip-wheel-metadata/ -# node_modules -node_modules +# node modules +**/*/node_modules +node_modules \ No newline at end of file diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js index 6e88f0a31..188a871eb 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js @@ -1,6 +1,7 @@ // This file is part of Invenio-RDM-Records // Copyright (C) 2020-2023 CERN. // Copyright (C) 2020-2022 Northwestern University. +// Copyright (C) 2023 KTH Royal Institute of Technology. // // Invenio-RDM-Records is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. @@ -40,10 +41,13 @@ class PublishButtonComponent extends Component { this.closeConfirmModal(); }; - isDisabled = (values, isSubmitting, numberOfFiles) => { + isDisabled = (values, isSubmitting, numberOfFiles, permissions) => { + const canPublish = permissions?.can_publish ?? false; + const publishWithCommunity = permissions?.can_publish_always_in_community ?? false; + const hasNoPermission = !canPublish && publishWithCommunity; const filesEnabled = _get(values, "files.enabled", false); const filesMissing = filesEnabled && !numberOfFiles; - return isSubmitting || filesMissing; + return isSubmitting || filesMissing || hasNoPermission; }; render() { @@ -54,6 +58,7 @@ class PublishButtonComponent extends Component { publishWithoutCommunity, formik, publishModalExtraContent, + permissions, ...ui } = this.props; const { isConfirmModalOpen } = this.state; @@ -64,7 +69,7 @@ class PublishButtonComponent extends Component { return ( <>