aboutsummaryrefslogtreecommitdiff
path: root/uploader/publications/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/publications/views.py')
-rw-r--r--uploader/publications/views.py22
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"
})