diff options
Diffstat (limited to 'uploader/publications')
| -rw-r--r-- | uploader/publications/models.py | 14 | ||||
| -rw-r--r-- | uploader/publications/views.py | 20 |
2 files changed, 25 insertions, 9 deletions
diff --git a/uploader/publications/models.py b/uploader/publications/models.py index dcfa02b..d913144 100644 --- a/uploader/publications/models.py +++ b/uploader/publications/models.py @@ -101,6 +101,20 @@ def fetch_publication_by_id(conn: Connection, publication_id: int) -> dict: return dict(_res) if _res else {} +def fetch_publications_by_ids( + conn: Connection, publications_ids: tuple[int, ...] +) -> tuple[dict, ...]: + """Fetch publications with the given IDs.""" + if len(publications_ids) == 0: + return tuple() + + with conn.cursor(cursorclass=DictCursor) as cursor: + paramstr = ", ".join(["%s"] * len(publications_ids)) + cursor.execute(f"SELECT * FROM Publication WHERE Id IN ({paramstr})", + tuple(publications_ids)) + return tuple(dict(row) for row in cursor.fetchall()) + + def fetch_publication_phenotypes( conn: Connection, publication_id: int) -> Iterable[dict]: """Fetch all phenotypes linked to this publication.""" diff --git a/uploader/publications/views.py b/uploader/publications/views.py index 11732db..89e9f5d 100644 --- a/uploader/publications/views.py +++ b/uploader/publications/views.py @@ -1,5 +1,6 @@ """Endpoints for publications""" import json +import datetime from gn_libs.mysqldb import database_connection from flask import ( @@ -10,8 +11,6 @@ from flask import ( render_template, current_app as app) -from uploader.sui import sui_template - from uploader.flask_extensions import url_for from uploader.authorisation import require_login from uploader.route_utils import redirect_to_next @@ -32,7 +31,7 @@ pubbp = Blueprint("publications", __name__) @require_login def index(): """Index page for publications.""" - return render_template(sui_template("publications/index.html")) + return render_template("publications/index.html") @pubbp.route("/list", methods=["GET"]) @@ -74,7 +73,7 @@ def view_publication(publication_id: int): return redirect(url_for('publications.index')) return render_template( - sui_template("publications/view-publication.html"), + "publications/view-publication.html", publication=publication, linked_phenotypes=tuple(fetch_publication_phenotypes( conn, publication_id))) @@ -91,9 +90,12 @@ def create_publication(): } if request.method == "GET": + now = datetime.datetime.now() return render_template( - sui_template("publications/create-publication.html"), - get_args=_get_args) + "publications/create-publication.html", + get_args=_get_args, + current_year=now.year, + current_month=now.strftime("%B")) form = request.form authors = form.get("publication-authors").encode("utf8") if authors is None or authors == "": @@ -130,7 +132,7 @@ def edit_publication(publication_id: int): with database_connection(app.config["SQL_URI"]) as conn: if request.method == "GET": return render_template( - sui_template("publications/edit-publication.html"), + "publications/edit-publication.html", publication=fetch_publication_by_id(conn, publication_id), linked_phenotypes=tuple(fetch_publication_phenotypes( conn, publication_id)), @@ -181,12 +183,12 @@ def delete_publication(publication_id: int): flash("Cannot delete publication with linked phenotypes!", "alert-warning") return redirect(url_for( - sui_template("publications.view_publication"), + "publications.view_publication", publication_id=publication_id)) if request.method == "GET": return render_template( - sui_template("publications/delete-publication.html"), + "publications/delete-publication.html", publication=publication, linked_phenotypes=linked_phenotypes, publication_id=publication_id) |
