From 4a16f580a25aba122a4990a61e0e96f4692b833c Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 28 Apr 2025 02:11:25 -0500 Subject: Initialise entry-point for managing publications. --- uploader/__init__.py | 2 + uploader/publications/__init__.py | 1 + uploader/publications/views.py | 34 ++++++++++++ uploader/templates/base.html | 3 ++ uploader/templates/publications/base.html | 12 +++++ uploader/templates/publications/index.html | 83 ++++++++++++++++++++++++++++++ 6 files changed, 135 insertions(+) create mode 100644 uploader/publications/views.py create mode 100644 uploader/templates/publications/base.html create mode 100644 uploader/templates/publications/index.html diff --git a/uploader/__init__.py b/uploader/__init__.py index 24c45a5..69d34f7 100644 --- a/uploader/__init__.py +++ b/uploader/__init__.py @@ -16,6 +16,7 @@ from . import session from .base_routes import base from .files.views import files from .species import speciesbp +from .publications import pubbp from .oauth2.views import oauth2 from .expression_data import exprdatabp from .errors import register_error_handlers @@ -103,6 +104,7 @@ def create_app(config: dict = {}): app.register_blueprint(files, url_prefix="/files") app.register_blueprint(oauth2, url_prefix="/oauth2") app.register_blueprint(speciesbp, url_prefix="/species") + app.register_blueprint(pubbp, url_prefix="/publications") app.register_blueprint(background_jobs_bp, url_prefix="/background-jobs/") register_error_handlers(app) diff --git a/uploader/publications/__init__.py b/uploader/publications/__init__.py index 57c0cbb..7efcabb 100644 --- a/uploader/publications/__init__.py +++ b/uploader/publications/__init__.py @@ -1 +1,2 @@ """Package for handling publications.""" +from .views import pubbp diff --git a/uploader/publications/views.py b/uploader/publications/views.py new file mode 100644 index 0000000..85d3aef --- /dev/null +++ b/uploader/publications/views.py @@ -0,0 +1,34 @@ +"""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 + +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" + }) diff --git a/uploader/templates/base.html b/uploader/templates/base.html index 09e6470..de9c226 100644 --- a/uploader/templates/base.html +++ b/uploader/templates/base.html @@ -46,6 +46,9 @@