diff options
Diffstat (limited to 'uploader/publications/views.py')
-rw-r--r-- | uploader/publications/views.py | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/uploader/publications/views.py b/uploader/publications/views.py index 63acf1b..0608a35 100644 --- a/uploader/publications/views.py +++ b/uploader/publications/views.py @@ -15,11 +15,12 @@ from flask import ( from uploader.authorisation import require_login from .models import ( - fetch_publications, fetch_publication_by_id, create_new_publications, fetch_publication_phenotypes) +from .datatables import fetch_publications + from gn_libs.debug import __pk__ pubbp = Blueprint("publications", __name__) @@ -38,20 +39,22 @@ def index(): def list_publications(): # request breakdown: # https://datatables.net/manual/server-side + _page = int(request.args.get("draw")) + _length = int(request.args.get("length") or '-1') + _start = int(request.args.get("start") or '0') + _search = request.args["search[value]"] with (database_connection(app.config["SQL_URI"]) as conn, conn.cursor(cursorclass=DictCursor) as cursor): - cursor.execute("SELECT COUNT(*) FROM Publication") - _totalrows = int(cursor.fetchone()["COUNT(*)"]) - _publications = tuple({ - **row, "index": idx - } for idx,row in enumerate( - fetch_publications( - conn, request.args["search[value]"]), start=1)) + _publications, _current_rows, _totalfiltered, _totalrows = fetch_publications( + conn, + _search, + offset=_start, + limit=_length) return json.dumps({ - "draw": request.args.get("draw"), + "draw": _page, "recordsTotal": _totalrows, - "recordsFiltered": len(_publications), + "recordsFiltered": _totalfiltered, "publications": _publications, "status": "success" }) @@ -83,7 +86,7 @@ def create_publication(): with database_connection(app.config["SQL_URI"]) as conn: publications = create_new_publications(conn, ({ - "pubmed_id": form.get("pubmed-id"), + "pubmed_id": form.get("pubmed-id") or None, "abstract": form.get("publication-abstract").encode("utf8") or None, "authors": authors, "title": form.get("publication-title").encode("utf8") or None, |