Skip to content

Commit b3f879a

Browse files
authored
Merge pull request #111 from diverso-lab/edit_metadata
Edit metadata
2 parents 9a05c88 + b34eac8 commit b3f879a

File tree

10 files changed

+1110
-341
lines changed

10 files changed

+1110
-341
lines changed

app/modules/dataset/assets/js/stepper.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ function updateDropzoneStatus() {
219219

220220
function get_summary() {
221221
const datasetTypeElement = document.querySelector('input[name="dataset_type"]:checked');
222+
const isAnonymousUpload = datasetTypeElement?.value === "zenodo_anonymous";
222223
const datasetType = datasetTypeElement
223224
? document.querySelector(`label[for="${datasetTypeElement.id}"]`)?.innerText.trim() || "Not selected"
224225
: "Not selected";
@@ -257,6 +258,11 @@ function get_summary() {
257258
let summaryContent = `
258259
<h3>Summary</h3>
259260
<p><strong>Dataset Type:</strong><br>${datasetType}</p>
261+
${
262+
isAnonymousUpload
263+
? '<div class="alert alert-warning py-3"><strong>Anonymous upload:</strong> enabled.</div>'
264+
: ''
265+
}
260266
<p><strong>Title:</strong> ${title}</p>
261267
<p><strong>Description:</strong> ${description}</p>
262268
<p><strong>Publication Type:</strong> ${publicationType}</p>
@@ -269,7 +275,9 @@ function get_summary() {
269275
<h4>Authors</h4>
270276
`;
271277

272-
if (authors.length > 0) {
278+
if (isAnonymousUpload) {
279+
summaryContent += '<p><strong>Anonymous:</strong> Enabled. Author details will be hidden in publication.</p>';
280+
} else if (authors.length > 0) {
273281
summaryContent += '<ul>';
274282
authors.forEach((author, index) => {
275283
summaryContent += `

app/modules/dataset/routes.py

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,29 @@
44
import tempfile
55
from datetime import datetime
66

7-
from flask import abort, current_app, jsonify, make_response, redirect, render_template, request, send_file, url_for
7+
from flask import (
8+
abort,
9+
current_app,
10+
flash,
11+
jsonify,
12+
make_response,
13+
redirect,
14+
render_template,
15+
request,
16+
send_file,
17+
url_for,
18+
)
819
from flask_login import current_user, login_required
920

1021
from app.modules.apikeys.decorators import require_api_key
1122
from app.modules.dataset import dataset_bp
1223
from app.modules.dataset.decorators import is_dataset_owner
1324
from app.modules.dataset.forms import DataSetForm
14-
from app.modules.dataset.models import DataSet
25+
from app.modules.dataset.models import DataSet, PublicationType
1526
from app.modules.dataset.services import (
1627
AuthorService,
28+
DatasetMetadataUpdateError,
29+
DatasetMetadataValidationError,
1730
DataSetService,
1831
DOIMappingService,
1932
DSDownloadRecordService,
@@ -118,6 +131,47 @@ def create_dataset():
118131
return render_template("dataset/create_and_edit_dataset.html", form=form)
119132

120133

134+
@dataset_bp.route("/dataset/edit/<int:dataset_id>", methods=["GET", "POST"])
135+
@login_required
136+
def edit_metadata(dataset_id):
137+
dataset = dataset_service.get_or_404(dataset_id)
138+
form = DataSetForm()
139+
if dataset.user_id != current_user.id:
140+
abort(403)
141+
142+
if request.method == "POST":
143+
is_ajax = request.headers.get("X-Requested-With") == "XMLHttpRequest"
144+
try:
145+
dataset_service.update_metadata_from_request(dataset, request.form, zenodo_service=zenodo_service)
146+
if is_ajax:
147+
return jsonify({"message": "Dataset updated successfully"}), 200
148+
flash("Dataset updated successfully!", "success")
149+
except DatasetMetadataValidationError as exc:
150+
if is_ajax:
151+
return jsonify({"message": str(exc)}), 400
152+
flash(str(exc), "danger")
153+
return redirect(url_for("dataset.edit_metadata", dataset_id=dataset_id))
154+
except DatasetMetadataUpdateError as exc:
155+
if is_ajax:
156+
return jsonify({"message": f"Error updating metadata: {exc}"}), 400
157+
flash(f"Error updating metadata: {exc}", "danger")
158+
except Exception as exc:
159+
logger.exception("[EDIT DATASET] Unexpected error updating dataset %s", dataset_id)
160+
if is_ajax:
161+
return jsonify({"message": f"Unexpected error updating metadata: {exc}"}), 400
162+
flash(f"Unexpected error updating metadata: {exc}", "danger")
163+
164+
return redirect(url_for("dataset.list_dataset"))
165+
166+
return render_template(
167+
"dataset/create_and_edit_dataset.html",
168+
dataset=dataset,
169+
is_edit=True,
170+
form=form,
171+
PublicationType=PublicationType,
172+
)
173+
174+
121175
@dataset_bp.route("/datasets/list", methods=["GET"])
122176
@login_required
123177
def list_dataset():

0 commit comments

Comments
 (0)