diff options
Diffstat (limited to 'uploader/publications/views.py')
-rw-r--r-- | uploader/publications/views.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/uploader/publications/views.py b/uploader/publications/views.py index ebb8740..63acf1b 100644 --- a/uploader/publications/views.py +++ b/uploader/publications/views.py @@ -1,6 +1,7 @@ """Endpoints for publications""" import json +from MySQLdb.cursors import DictCursor from gn_libs.mysqldb import database_connection from flask import ( flash, @@ -35,12 +36,23 @@ def index(): @pubbp.route("/list", methods=["GET"]) @require_login def list_publications(): - with database_connection(app.config["SQL_URI"]) as conn: + # request breakdown: + # https://datatables.net/manual/server-side + 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)) + return json.dumps({ - "publications": tuple({ - **row, "index": idx - } for idx,row in enumerate( - fetch_publications(conn), start=1)), + "draw": request.args.get("draw"), + "recordsTotal": _totalrows, + "recordsFiltered": len(_publications), + "publications": _publications, "status": "success" }) |