diff --git a/invenio_app_rdm/records_ui/views/deposits.py b/invenio_app_rdm/records_ui/views/deposits.py index 01daf9330e..719b5c7ae5 100644 --- a/invenio_app_rdm/records_ui/views/deposits.py +++ b/invenio_app_rdm/records_ui/views/deposits.py @@ -3,7 +3,7 @@ # Copyright (C) 2019-2021 CERN. # Copyright (C) 2019-2021 Northwestern University. # Copyright (C) 2021 TU Wien. -# Copyright (C) 2022 KTH Royal Institute of Technology +# Copyright (C) 2022-2023 KTH Royal Institute of Technology. # Copyright (C) 2023 Graz University of Technology. # # Invenio App RDM is free software; you can redistribute it and/or modify it @@ -368,6 +368,17 @@ def new_record(): @pass_draft_community def deposit_create(community=None): """Create a new deposit.""" + permissions = get_record_permissions( + [ + "manage_files", + "delete_draft", + "manage_record_access", + ] + ) + # Can't check "publish" permission as draft is not a record with an id yet. + permissions["can_publish_with_community_only"] = current_app.config.get( + "RDM_RECORD_ALWAYS_IN_COMMUNITY", False + ) return render_template( current_app.config["APP_RDM_DEPOSIT_FORM_TEMPLATE"], forms_config=get_form_config(createUrl="/api/records", quota=get_quota()), @@ -376,13 +387,7 @@ def deposit_create(community=None): files=dict(default_preview=None, entries=[], links={}), preselectedCommunity=community, files_locked=False, - permissions=get_record_permissions( - [ - "manage_files", - "delete_draft", - "manage_record_access", - ] - ), + permissions=permissions, ) @@ -394,7 +399,18 @@ def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True): files_dict = None if draft_files is None else draft_files.to_dict() ui_serializer = UIJSONSerializer() record = ui_serializer.dump_obj(draft.to_dict()) - + permissions = draft.has_permissions_to( + [ + "new_version", + "delete_draft", + "manage_files", + "manage_record_access", + "publish", + ] + ) + permissions["can_publish_always_in_community"] = current_app.config.get( + "RDM_RECORD_ALWAYS_IN_COMMUNITY", False + ) return render_template( current_app.config["APP_RDM_DEPOSIT_FORM_TEMPLATE"], forms_config=get_form_config( @@ -406,12 +422,5 @@ def deposit_edit(pid_value, draft=None, draft_files=None, files_locked=True): files=files_dict, searchbar_config=dict(searchUrl=get_search_url()), files_locked=files_locked, - permissions=draft.has_permissions_to( - [ - "new_version", - "delete_draft", - "manage_files", - "manage_record_access", - ] - ), + permissions=permissions, )