+
+ {% if record.access.record == 'restricted' %}
+
+
{{ record.ui.access_status.title_l10n }} {{ record.ui.access_status.description_l10n }}
+ {% if record.access.embargo.reason %}
+
Reason: {{ record.access.embargo.reason }}
{% endif %}
- {%- else -%}
- {# TODO: come up with a proper display #}
-
Sorry, the files are restricted!
- {%- endif -%}
- {%- endblock record_files -%}
- {%- block record_details -%}
- {# More details #}
-
- {%- include "invenio_app_rdm/records/details/details.html" %}
- {%- endblock record_details -%}
- {%- block record_footer -%}
-
-
-
-
-
- Created: {{ record.ui.created_date_l10n_long }} | Modified: {{ record.ui.updated_date_l10n_long }}
-
+ {% endif %}
+ {%- block record_body -%}
+ {%- block record_header -%}
+
+
+
+ {{ record.ui.publication_date_l10n_long }}
+ | Version {{ record.ui.version }}
+
+
+ {{ record.ui.resource_type }}
+
+ {% if record.ui.access_status.icon %}{% endif %}
+ {{ record.ui.access_status.title_l10n }}
+
+
+
+
+ {%- endblock record_header -%}
+ {%- block record_title -%}
+
{{ metadata.title }}
+
{%- include "invenio_app_rdm/records/details/creators.html" %}
+ {%- endblock record_title -%}
+ {%- block record_content -%}
+
{%- include "invenio_app_rdm/records/details/contributors.html" %}
+
{%- include "invenio_app_rdm/records/details/doi.html" %}
+ {%- include "invenio_app_rdm/records/details/subjects.html" %}
+
+ {%- include "invenio_app_rdm/records/details/description.html" %}
+
+
+ {%- include "invenio_app_rdm/records/details/licenses.html" %}
+
+ {%- endblock record_content -%}
+
+ {# files #}
+ {%- block record_files -%}
+ {%- if record.files.enabled -%}
+ {%- if permissions.can_read_files -%}
+ {# record has files AND user can see files #}
+ {%- set files = files|order_entries %}
+ {%- if files|has_previewable_files -%}
+ {%-set preview_file = files|select_preview_file(default_preview=record.files.default_preview) %}
+ {{ preview_file_box(preview_file, pid, is_preview, record) }}
+ {%- endif -%}
+ {{ file_list_box(files, pid, is_preview, record) }}
+ {% else %}
+ {# record has files BUT user cannot see files #}
+
+
+
+ {{ _("Files") }}
+
+
+
+
+
{{ record.ui.access_status.title_l10n }}
+
{{ record.ui.access_status.description_l10n }}
+ {% if record.access.embargo.reason %}
+
{{_("Reason")}}: {{record.access.embargo.reason}}
+ {% endif%}
+
+
-
- {%- endblock record_footer -%}
-
- {%- endblock record_body %}
-
- {% block record_sidebar %}
- {%- include "invenio_app_rdm/records/details/side_bar.html" %}
-
- {%- include "invenio_theme_tugraz/landingpage/doi.html" %}
-
- {% endblock record_sidebar %}
+ {%- endblock record_footer -%}
+ {%- block jump -%}
+
+ {%- endblock jump -%}
+ {%- endblock record_body %}
+
+
+ {% block record_sidebar %}
+ {%- include "invenio_app_rdm/records/details/side_bar.html" %}
+ {% endblock record_sidebar %}
-
- {%- endblock page_body %}
-
- {%- block javascript %}
- {{ super() }}
- {{ webpack['invenio-app-rdm-landing-page.js'] }}
- {# Communities management -- TODO include again when communities are ready #}
- {# {{ webpack['invenio-communities-records.js'] }} #}
- {{ webpack['previewer_theme.js'] }}
- {%- endblock javascript %}
+
+
+{%- endblock page_body %}
+
+{%- block javascript %}
+{{ super() }}
+{{ webpack['invenio-app-rdm-landing-page.js'] }}
+{# Communities management -- TODO include again when communities are ready #}
+{# {{ webpack['invenio-communities-records.js'] }} #}
+{{ webpack['previewer_theme.js'] }}
+{%- endblock javascript %}
diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/doi.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/doi.html
deleted file mode 100644
index 16aef0b..0000000
--- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/landingpage/doi.html
+++ /dev/null
@@ -1,43 +0,0 @@
-{#
- Copyright (C) 2020 CERN.
- Copyright (C) 2020 Northwestern University.
-
- 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.
- #}
-
- {% if metadata.identifiers %}
- {% for identifier in metadata.identifiers %}
- {% if identifier.scheme == 'doi' %}
-
-
- {%- set id_doi = identifier.identifier %}
-
- {% if id_doi %}
-
-
-
-
-
-
-
-
- DOI
-
-
- {{ id_doi }}
-
- {% from "semantic-ui/invenio_formatter/macros/badges.html" import badges_formats_list %}
- {{ badges_formats_list(url_for('invenio_formatter_badges.badge', title='DOI', value=id_doi, ext='svg', _external=True, _scheme='https'), id_doi|pid_url(scheme='doi')) }}
-
-
- {% else %}
- {{ _("No minted DOI") }}
- {% endif %}
-
- {% endif %}
-{% endfor %}
-
- {% endif %}
diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/record_landing_page.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/record_landing_page.html
deleted file mode 100644
index c57a092..0000000
--- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/record_landing_page.html
+++ /dev/null
@@ -1,107 +0,0 @@
-{#
- Copyright (C) 2020 CERN.
- Copyright (C) 2020 Northwestern University.
- Copyright (C) 2020 Graz University of Technology
-
- invenio-theme-tugraz is free software; you can redistribute it and/or modify
- it under the terms of the MIT License; see LICENSE file for more details.
-
- origin: invenio-rdm-records/record_landing_page.html
-#}
-
-{%- extends config.BASE_TEMPLATE %}
-
-{%- block css %}
-{{ super() }}
-{%- endblock css %}
-
-{%- from "invenio_app_rdm/landing_page/macros/files.html" import file_list_box, preview_file_box %}
-{%- from "invenio_app_rdm/landing_page/macros/detail.html" import show_detail %}
-
-{%- set record = record|dereference_record|serialize_ui %}
-{%- set metadata = record.metadata %}
-
-{%- block page_body %}
-
-
-
-
-
- {%- block record_body %}
-
-
-
- {{ record.metadata.publication_date }} {{ '(' ~ record.metadata.version ~ ')' if record.metadata.version }}
-
-
-
-
- {{record.ui.resource_type }}
-
-
-
-
{{ record.metadata.title }}
-
{%- include "invenio_app_rdm/landing_page/details/creators.html" %}
-
{%- include "invenio_app_rdm/landing_page/details/contributors.html" %}
-
-
-
-
- {%- for s in record.metadata.subjects %}
-
{{s.subject}}
- {%- endfor %}
-
- Created: {{ record.ui.created_date_l10n_long }} | Modified: {{ record.ui.updated_date_l10n_long }}
-
-
-
-
-
-
- {{ record.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }}
- {%- for right in record.metadata.rights %}
- {{ '(' ~ right.identifier ~ ')' }}
- {%- endfor %}
-
-
-
-
-
-
- {%- include "invenio_app_rdm/landing_page/details/description.html" %}
-
-
- {# files #}
- {%- if record.files and record | can_list_files %}
- {%- set files = record.files | make_files_preview_compatible %}
- {%- set default_preview_file = files | select_preview_file(default_preview=record.files.default_preview) %}
- {{ preview_file_box(default_preview_file, pid) }}
- {{ file_list_box(files, pid) }}
- {% endif %}
-
- {%- endblock record_body %}
-
-
-
-
-
- {% block sidebar %}
- {%- include "invenio_app_rdm/landing_page/details/side_bar.html" %}
- {% endblock sidebar %}
-
-
-
-
-
-{%- endblock page_body %}
-
-{%- block javascript %}
-{{ super() }}
-{{ webpack['invenio-app-rdm-records.js'] }}
-{# Communities management #}
-{{ webpack['invenio-communities-records.js'] }}
-{{ webpack['previewer_theme.js'] }}
-{{ webpack['invenio-app-rdm-record-management.js'] }}
-{%- endblock javascript %}
diff --git a/invenio_theme_tugraz/templates/invenio_theme_tugraz/search.html b/invenio_theme_tugraz/templates/invenio_theme_tugraz/search.html
deleted file mode 100644
index d39a23c..0000000
--- a/invenio_theme_tugraz/templates/invenio_theme_tugraz/search.html
+++ /dev/null
@@ -1,82 +0,0 @@
-{#
- Copyright (C) 2020 Graz University of Technology
-
- invenio-theme-tugraz 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 %}
-
-{%- block javascript %}
- {{ super() }}
- {{ webpack['invenio-theme-tugraz-search-app.js'] }}
-{%- endblock %}
-
-{%- block page_body %}
-
-
-
-{%- endblock page_body %}
diff --git a/invenio_theme_tugraz/views.py b/invenio_theme_tugraz/views.py
index 22d0386..94fef7a 100644
--- a/invenio_theme_tugraz/views.py
+++ b/invenio_theme_tugraz/views.py
@@ -19,20 +19,11 @@ from flask_babelex import get_locale
from flask_login import login_required
from flask_menu import current_menu
from invenio_app_rdm.records_ui.views.decorators import (
- pass_draft,
- pass_record,
+ pass_is_preview,
pass_record_files,
- service,
+ pass_record_or_draft,
)
-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
from .search import FrontpageRecordsSearch
@@ -53,9 +44,7 @@ def ui_blueprint(app):
blueprint.add_url_rule(routes["guide"], view_func=guide)
blueprint.add_url_rule(routes["terms"], view_func=terms)
blueprint.add_url_rule(routes["gdpr"], view_func=gdpr)
- blueprint.add_url_rule(routes["deposit_create"], view_func=deposit_create)
blueprint.add_url_rule(routes["record_detail"], view_func=record_detail)
- blueprint.add_url_rule(routes["getdoi"], view_func=retrieve_doi, methods=["POST"])
@blueprint.app_template_filter("make_dict_like")
def make_dict_like(value: str, key: str) -> Dict[str, str]:
@@ -110,103 +99,19 @@ def gdpr():
_external=True))
-def get_datacite_details():
- """Application credentials for DOI."""
- prefix = environ.get("INVENIO_DATACITE_PREFIX")
- suffix = environ.get("INVENIO_DATACITE_SUFFIX")
- host_url = environ.get("INVENIO_SITE_HOSTNAME")
-
- details = {
- "datacite_prefix": prefix,
- "datacite_suffix": suffix,
- "datacite_host_url": host_url,
- }
- return details
-
-
-@login_required
-def retrieve_doi():
- """Retrieve DOI from datacite API."""
- doi_metadata = request.get_json()
-
- url = environ.get("INVENIO_DATACITE_URL")
- username = environ.get("INVENIO_DATACITE_UNAME")
- password = environ.get("INVENIO_DATACITE_PASS")
-
- doi_response = requests.post(
- url,
- auth=(username, password.encode('utf-8')),
- json=doi_metadata,
- )
-
- response_data = {"code": doi_response.status_code}
-
- try:
- doi_response.raise_for_status()
- response_data["data"] = doi_response.json()
- except requests.exceptions.RequestException:
- response_data["errors"] = doi_response.json()["errors"]
-
- return response_data, response_data["code"]
-
-
-#
-# TODO: change this override behaviour once
-# PR is merged:
-# https://github.com/inveniosoftware/invenio-app-rdm/pull/638
-#
-
-
-@login_required
-def deposit_create():
- """Create a new deposit."""
- forms_config = get_form_config(createUrl=("/api/records"))
- forms_config["data_cite"] = get_datacite_details()
-
- return render_template(
- "invenio_theme_tugraz/deposit/deposit.html",
- forms_config=forms_config,
- searchbar_config=dict(searchUrl=get_search_url()),
- record=new_record(),
- files=dict(default_preview=None, enabled=True, entries=[], links={}),
- )
-
-
-@login_required
-@pass_draft
-def deposit_edit(draft=None, pid_value=None):
- """Edit an existing deposit."""
- files_list = current_rdm_records.draft_files_service.list_files(
- id_=pid_value,
- identity=g.identity,
- links_config=RDMDraftFilesResourceConfig.links_config,
- )
-
- serializer = UIJSONSerializer()
- record = serializer.serialize_object_to_dict(draft.to_dict())
-
- forms_config = get_form_config(apiUrl=f"/api/records/{pid_value}/draft")
- forms_config["data_cite"] = get_datacite_details()
-
- return render_template(
- "invenio_theme_tugraz/deposit/deposit.html",
- forms_config=forms_config,
- record=record,
- files=files_list.to_dict(),
- searchbar_config=dict(searchUrl=get_search_url()),
- permissions=draft.has_permissions_to(['new_version'])
- )
-
-
-@pass_record
+@pass_is_preview
+@pass_record_or_draft
@pass_record_files
-def record_detail(record=None, files=None, pid_value=None):
+def record_detail(record=None, files=None, pid_value=None, is_preview=False):
"""Record detail page (aka landing page)."""
files_dict = None if files is None else files.to_dict()
+
return render_template(
"invenio_theme_tugraz/landingpage/detail.html",
record=UIJSONSerializer().serialize_object_to_dict(record.to_dict()),
pid=pid_value,
files=files_dict,
- permissions=record.has_permissions_to(['edit', 'new_version']),
+ permissions=record.has_permissions_to(['edit', 'new_version', 'manage',
+ 'update_draft', 'read_files']),
+ is_preview=is_preview,
)
diff --git a/invenio_theme_tugraz/webpack.py b/invenio_theme_tugraz/webpack.py
index 70c92f7..4cc5fe9 100644
--- a/invenio_theme_tugraz/webpack.py
+++ b/invenio_theme_tugraz/webpack.py
@@ -17,31 +17,10 @@ theme = WebpackThemeBundle(
entry={
"invenio-theme-tugraz-theme": "./less/invenio_theme_tugraz/theme.less",
"invenio-theme-tugraz-js": "./js/invenio_theme_tugraz/theme.js",
- "invenio-theme-tugraz-search-app": "./js/invenio_theme_tugraz/search/index.js",
- # overrides RDM deposit form
- 'invenio-theme-tugraz-rdm-deposit': './js/invenio_theme_tugraz/deposit/index.js',
+ # "invenio-theme-tugraz-search-app": "./js/invenio_theme_tugraz/search/index.js",
},
dependencies={
-
- # required for RDM deposit form
- # keep in sync
- "@babel/runtime": "^7.9.0",
- 'formik': '^2.1.4',
- 'luxon': '^1.23.0',
- 'path': '^0.12.7',
- 'prop-types': '^15.7.2',
- 'react-dnd': '^11.1.3',
- 'react-dnd-html5-backend': '^11.1.3',
- 'react-invenio-deposit': '^0.12.0',
- 'react-invenio-forms': '^0.6.3',
- 'react-dropzone': "^11.0.3",
- 'yup': '^0.27.0',
- '@ckeditor/ckeditor5-build-classic': '^16.0.0',
- '@ckeditor/ckeditor5-react': '^2.1.0',
-
- # datacite - rest api plugin
- 'datacite-rest': '^0.1.8',
-
+ # Add your dependencies
},
)
},
diff --git a/setup.py b/setup.py
index 8bb310e..772e242 100644
--- a/setup.py
+++ b/setup.py
@@ -56,11 +56,7 @@ install_requires = [
"Flask-WebpackExt>=1.0.0",
"invenio-assets>=1.2.0",
"invenio-i18n>=1.2.0",
- "elasticsearch_dsl>=7.2.1",
- "invenio_search>=1.4.0,<2.0.0",
- "invenio_config_tugraz>=0.5.1,<0.5.8",
- # keep this package updated.
- "invenio_app_rdm==2.0.1",
+ "invenio_config_tugraz>=0.5.8",
]
packages = find_packages()