diff options
Diffstat (limited to 'uploader')
-rw-r--r-- | uploader/publications/views.py | 38 |
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")) |