diff --git a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js b/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js index 51c0be4..397f6c7 100644 --- a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js +++ b/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/RDMDepositForm.js @@ -279,14 +279,11 @@ export class RDMDepositForm extends Component { config={this.config} record={this.props.record} files={this.props.files} + permissions={this.props.permissions} > - + @@ -296,7 +293,7 @@ export class RDMDepositForm extends Component { label={"Files"} ui={this.accordionStyle} > - {this.noFiles && ( + {this.noFiles && this.props.record.is_published && (

- +
{/**TODO: uncomment to use FundingField*/} @@ -505,8 +502,11 @@ export class RDMDepositForm extends Component { label={"Protection"} labelIcon={"shield"} /> - {this.config.data_cite &&( - + {this.config.data_cite && ( + )} diff --git a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js b/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js index 0bf9bed..869d72b 100644 --- a/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js +++ b/invenio_theme_tugraz/assets/semantic-ui/js/invenio_theme_tugraz/deposit/index.js @@ -17,6 +17,7 @@ ReactDOM.render( record={getInputFromDOM("deposits-record")} files={getInputFromDOM("deposits-record-files")} config={getInputFromDOM("deposits-config")} + permissions={getInputFromDOM("deposits-record-permissions")} />, document.getElementById("deposit-form") ); diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html index 0a1b36d..5b06cd2 100644 --- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html +++ b/invenio_theme_tugraz/templates/invenio_theme_tugraz/deposit/deposit.html @@ -10,17 +10,20 @@ {%- extends config.BASE_TEMPLATE %} {%- block page_body %} - {%- if record %} - - {%- endif %} - {%- if files %} - - {%- endif %} - {%- if forms_config %} - - {%- endif %} -

- {%- endblock page_body %} + {%- if record %} + + {%- endif %} + {%- if files %} + + {%- endif %} + {%- if forms_config %} + + {%- endif %} + {%- if permissions %} + + {%- endif %} +
+{%- endblock page_body %} {%- block javascript %} {{ super() }} diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html index fa4b4cf..1fa6580 100644 --- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html +++ b/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/detail.html @@ -7,9 +7,9 @@ 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. #} - + {%- extends config.BASE_TEMPLATE %} - + {%- from "invenio_app_rdm/records/macros/files.html" import file_list_box, preview_file_box %} {%- from "invenio_app_rdm/records/macros/detail.html" import show_detail %} @@ -17,12 +17,34 @@ {%- set metadata = record.metadata %} {%- block page_body %} - {% if permissions is defined and permissions.can_update_draft %} -
+
+ {% if permissions is defined and permissions.can_edit %} +
+
+
+
- {% endif %} + {% endif %} + {% if not record.versions.is_latest %} +
+
+
+
+
+

+ {% trans link_start=('')|safe, link_end=''|safe %} + There is a {{ link_start }}newer version{{ link_end }} of the record available. + {% endtrans %} +

+
+
+
+
+
+ {% endif %} +
+ +
@@ -33,9 +55,7 @@
{{ record.ui.publication_date_l10n_long }} - {%- if metadata.version %} - | Version {{ metadata.version }} - {% endif %} + | Version {{ record.ui.version }}
{{ record.ui.resource_type }} @@ -88,7 +108,7 @@
-

Upload infromation

+

Upload information

@@ -114,8 +134,8 @@ {% block record_sidebar %} {%- include "invenio_app_rdm/records/details/side_bar.html" %}
- {%- include "invenio_theme_tugraz/landingpage/doi.html" %} -
+ {%- include "invenio_theme_tugraz/landingpage/doi.html" %} +
{% endblock record_sidebar %}
diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/navbar.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/navbar.html index 6a8f3aa..19275d6 100644 --- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/navbar.html +++ b/invenio_theme_tugraz/templates/invenio_theme_tugraz/navbar.html @@ -60,7 +60,7 @@
- + TU GRAZ
{{_ ("REPOSITORY")}} diff --git a/invenio_theme_tugraz/views.py b/invenio_theme_tugraz/views.py index 44258be..d15c692 100644 --- a/invenio_theme_tugraz/views.py +++ b/invenio_theme_tugraz/views.py @@ -22,13 +22,13 @@ from invenio_app_rdm.records_ui.views.decorators import ( pass_record, pass_record_files, service, - user_permissions, ) from invenio_app_rdm.records_ui.views.deposits import ( get_form_config, get_search_url, new_record, ) +from invenio_rdm_records.proxies import current_rdm_records from invenio_rdm_records.resources.config import RDMDraftFilesResourceConfig from invenio_rdm_records.resources.serializers import UIJSONSerializer from invenio_rdm_records.services import RDMDraftFilesService @@ -146,9 +146,7 @@ def deposit_create(): @pass_draft def deposit_edit(draft=None, pid_value=None): """Edit an existing deposit.""" - # TODO: should be embedded in record service - files_service = RDMDraftFilesService() - files_list = files_service.list_files( + files_list = current_rdm_records.draft_files_service.list_files( id_=pid_value, identity=g.identity, links_config=RDMDraftFilesResourceConfig.links_config, @@ -157,15 +155,6 @@ def deposit_edit(draft=None, pid_value=None): serializer = UIJSONSerializer() record = serializer.serialize_object_to_dict(draft.to_dict()) - # TODO: get the `is_published` field when reading the draft - from invenio_pidstore.errors import PIDUnregistered - - try: - service().draft_cls.pid.resolve(pid_value, registered_only=True) - record["is_published"] = True - except PIDUnregistered: - record["is_published"] = False - forms_config = get_form_config(apiUrl=f"/api/records/{pid_value}/draft") forms_config["data_cite"] = get_datacite_details() @@ -175,13 +164,13 @@ def deposit_edit(draft=None, pid_value=None): record=record, files=files_list.to_dict(), searchbar_config=dict(searchUrl=get_search_url()), + permissions=draft.has_permissions_to(['new_version']) ) @pass_record @pass_record_files -@user_permissions(actions=["update_draft"]) -def record_detail(record=None, files=None, pid_value=None, permissions=None): +def record_detail(record=None, files=None, pid_value=None): """Record detail page (aka landing page).""" files_dict = None if files is None else files.to_dict() return render_template( @@ -189,5 +178,5 @@ def record_detail(record=None, files=None, pid_value=None, permissions=None): record=UIJSONSerializer().serialize_object_to_dict(record.to_dict()), pid=pid_value, files=files_dict, - permissions=permissions, + permissions=record.has_permissions_to(['edit', 'new_version']), ) diff --git a/invenio_theme_tugraz/webpack.py b/invenio_theme_tugraz/webpack.py index 87839e7..5d9a12e 100644 --- a/invenio_theme_tugraz/webpack.py +++ b/invenio_theme_tugraz/webpack.py @@ -32,7 +32,7 @@ theme = WebpackThemeBundle( 'prop-types': '^15.7.2', 'react-dnd': '^11.1.3', 'react-dnd-html5-backend': '^11.1.3', - 'react-invenio-deposit': '^0.11.10', + 'react-invenio-deposit': '^0.12.0', 'react-invenio-forms': '^0.6.3', 'react-dropzone': "^11.0.3", 'yup': '^0.27.0', diff --git a/setup.py b/setup.py index 9c8bc49..6a84e27 100644 --- a/setup.py +++ b/setup.py @@ -20,9 +20,9 @@ tests_require = [ "invenio-app>=1.3.0,<2.0.0", ] -# Should follow inveniosoftware/invenio versions -invenio_search_version = ">=1.4.0,<2.0.0" -invenio_db_version = ">=1.0.5,<2.0.0" +# Should follow invenio-app-rdm +invenio_search_version = ">=1.4.0,<1.5.0" +invenio_db_version = ">=1.0.9,<1.1.0" extras_require = { "elasticsearch7": [f"invenio-search[elasticsearch7]{invenio_search_version}"], @@ -60,7 +60,7 @@ install_requires = [ "invenio_search>=1.4.0,<2.0.0", "invenio_config_tugraz>=0.5.1", # keep this package updated. - "invenio_app_rdm<=1.0.0", + "invenio_app_rdm==2.0.1", ] packages = find_packages()