1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
"""Endpoints for publications"""
import json
from gn_libs.mysqldb import database_connection
from flask import Blueprint, render_template, current_app as app
from uploader.authorisation import require_login
from .models import (
fetch_publications,
fetch_publication_by_id,
fetch_publication_phenotypes)
from gn_libs.debug import __pk__
pubbp = Blueprint("publications", __name__)
@pubbp.route("/", methods=["GET"])
@require_login
def index():
"""Index page for publications."""
with database_connection(app.config["SQL_URI"]) as conn:
return render_template("publications/index.html")
@pubbp.route("/list", methods=["GET"])
@require_login
def list_publications():
with database_connection(app.config["SQL_URI"]) as conn:
return json.dumps({
"publications": tuple({
**row, "index": idx
} for idx,row in enumerate(
fetch_publications(conn), start=1)),
"status": "success"
})
@pubbp.route("/view/<int:publication_id>", methods=["GET"])
@require_login
def view_publication(publication_id: int):
"""View more details on a particular publication."""
with database_connection(app.config["SQL_URI"]) as conn:
return render_template(
"publications/view-publication.html",
publication=fetch_publication_by_id(conn, publication_id),
linked_phenotypes=tuple(fetch_publication_phenotypes(
conn, publication_id)))
|