aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-04-28 13:00:12 -0500
committerFrederick Muriuki Muriithi2025-04-28 13:00:12 -0500
commit29177392613cab26d6402bf8f63f42096aee1c9d (patch)
treec120740ce08df46c0cc87264f7a6bfecfc3e8bcf
parent4304f23144f9dfc7c2ef678f6ffd66a5b2c86418 (diff)
downloadgn-uploader-29177392613cab26d6402bf8f63f42096aee1c9d.tar.gz
Implement creating publications.
-rw-r--r--uploader/publications/views.py38
1 files changed, 36 insertions, 2 deletions
diff --git a/uploader/publications/views.py b/uploader/publications/views.py
index ca4bfcb..bf3ea10 100644
--- a/uploader/publications/views.py
+++ b/uploader/publications/views.py
@@ -2,13 +2,21 @@
import json
from gn_libs.mysqldb import database_connection
-from flask import request, Blueprint, render_template, current_app as app
+from flask import (
+ flash,
+ request,
+ url_for,
+ redirect,
+ Blueprint,
+ render_template,
+ current_app as app)
from uploader.authorisation import require_login
from .models import (
fetch_publications,
fetch_publication_by_id,
+ create_new_publications,
fetch_publication_phenotypes)
from gn_libs.debug import __pk__
@@ -55,4 +63,30 @@ def create_publication():
"""Create a new publication."""
if(request.method == "GET"):
return render_template("publications/create-publication.html")
- return "Not Implemented"
+ form = request.form
+ authors = form.get("publication-authors")
+ if authors is None or authors == "":
+ flash("The publication's author(s) MUST be provided!", "alert alert-danger")
+ return redirect(url_for("publications.create", **request.args))
+
+ with database_connection(app.config["SQL_URI"]) as conn:
+ publications = create_new_publications(conn, ({
+ "pubmed_id": form.get("pubmed-id"),
+ "abstract": form.get("publication-abstract"),
+ "authors": authors or None,
+ "title": form.get("publication-title") or None,
+ "journal": form.get("publication-journal") or None,
+ "volume": form.get("publication-volume") or None,
+ "pages": form.get("publication-pages") or None,
+ "month": (form.get("publication-month") or "").capitalize() or None,
+ "year": form.get("publication-year") or None
+ },))
+ flash("New publication created!", "alert alert-success")
+ return redirect(url_for(
+ request.args.get("return-to") or "publications.view_publication",
+ publication_id=publications[0]["publication_id"],
+ **request.args))
+
+ flash("Publication creation failed!", "alert alert-danger")
+ app.logger.debug("Failed to create the new publication.", exc_info=True)
+ return redirect(url_for("publications.create_publication"))