mirror of
https://github.com/Cian-H/invenio-theme-iform.git
synced 2025-12-22 20:51:58 +00:00
79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (C) 2019-2021 CERN.
|
|
# Copyright (C) 2019-2021 Northwestern University.
|
|
# Copyright (C) 2021 TU Wien.
|
|
# Copyright (C) 2021 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.
|
|
# https://github.com/inveniosoftware/invenio-app-rdm/blob/master/invenio_app_rdm/records_ui/views/deposits.py
|
|
"""Routes for record-related pages provided by Invenio-App-RDM."""
|
|
|
|
|
|
from flask import render_template
|
|
from flask_login import login_required
|
|
from invenio_app_rdm.records_ui.views.decorators import (
|
|
pass_draft,
|
|
pass_draft_files,
|
|
pass_is_preview,
|
|
pass_record_files,
|
|
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.resources.serializers import UIJSONSerializer
|
|
|
|
|
|
@login_required
|
|
def deposit_create():
|
|
"""Create a new deposit."""
|
|
return render_template(
|
|
"invenio_theme_tugraz/deposit/deposit.html",
|
|
forms_config=get_form_config(createUrl=("/api/records")),
|
|
searchbar_config=dict(searchUrl=get_search_url()),
|
|
record=new_record(),
|
|
files=dict(
|
|
default_preview=None, entries=[], links={}
|
|
),
|
|
)
|
|
|
|
|
|
@login_required
|
|
@pass_draft
|
|
@pass_draft_files
|
|
def deposit_edit(draft=None, draft_files=None, pid_value=None):
|
|
"""Edit an existing deposit."""
|
|
serializer = UIJSONSerializer()
|
|
record = serializer.serialize_object_to_dict(draft.to_dict())
|
|
|
|
return render_template(
|
|
"invenio_theme_tugraz/deposit/deposit.html",
|
|
forms_config=get_form_config(apiUrl=f"/api/records/{pid_value}/draft"),
|
|
record=record,
|
|
files=draft_files.to_dict(),
|
|
searchbar_config=dict(searchUrl=get_search_url()),
|
|
permissions=draft.has_permissions_to(['new_version'])
|
|
)
|
|
|
|
|
|
@pass_is_preview
|
|
@pass_record_or_draft
|
|
@pass_record_files
|
|
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', 'manage',
|
|
'update_draft', 'read_files']),
|
|
is_preview=is_preview,
|
|
)
|