From a99f78f90312969b1b64eb1eca34e8b70e0ffca2 Mon Sep 17 00:00:00 2001 From: Joe Abbate Date: Sat, 26 Mar 2022 04:31:04 -0400 Subject: [PATCH 1/3] Add Pagination --- audiophiler/__init__.py | 48 ++++++++++++++++++++++---------- audiophiler/templates/main.html | 49 +++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 15 deletions(-) diff --git a/audiophiler/__init__.py b/audiophiler/__init__.py index 83feecb..ed940e3 100644 --- a/audiophiler/__init__.py +++ b/audiophiler/__init__.py @@ -63,9 +63,17 @@ @app.route("/") @auth.oidc_auth('default') @audiophiler_auth -def home(auth_dict=None): +def home_def(auth_dict=None): + return redirect("/1") + +@app.route("/") +@auth.oidc_auth('default') +@audiophiler_auth +def home(page, auth_dict=None): # Retrieve list of files for templating - db_files = File.query.all() + rows = File.query.count() + rows = int(rows // 10 + bool(rows % 10)) + db_files = File.query.offset((page-1) * 10).limit(10).all() harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") is_rtp = ldap_is_rtp(auth_dict["uid"]) @@ -73,52 +81,62 @@ def home(auth_dict=None): return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, - is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False) + is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False, + current="", page=page, rows=rows) -@app.route("/mine") +@app.route("/mine/") @auth.oidc_auth('default') @audiophiler_auth -def mine(auth_dict=None): +def mine(page, auth_dict=None): + rows = File.query.count() + rows = int(rows // 10 + bool(rows % 10)) is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) # Retrieve list of files for templating - db_files = File.query.filter_by(author=auth_dict["uid"]).all() + db_files = File.query.filter_by(author=auth_dict["uid"]).offset((page-1) * 10).limit(10).all() harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") return render_template("main.html", db_files=db_files, get_file_s3=get_file_s3, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, - tour_harolds=tour_harolds, is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False) + tour_harolds=tour_harolds, is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False, + current="/mine",page=page, rows=rows) -@app.route("/selected") +@app.route("/selected/") @auth.oidc_auth('default') @audiophiler_auth -def selected(auth_dict=None): +def selected(page, auth_dict=None): + rows = File.query.count() + rows = int(rows // 10 + bool(rows % 10)) is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) #Retrieve list of files for templating harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") - db_files = File.query.filter(File.file_hash.in_(harolds)).all() + db_files = File.query.filter(File.file_hash.in_(harolds)).offset((page-1) * 10).limit(10).all() return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, - is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False) + is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False, + current="/selected",page=page, rows=rows) -@app.route("/tour_page") +@app.route("/tour_page/") @auth.oidc_auth('default') @audiophiler_auth -def admin(auth_dict=None): +def admin(page, auth_dict=None): + rows = File.query.count() + rows = int(rows // 10 + bool(rows % 10)) is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) if is_eboard or is_rtp: harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") - db_files = File.query.filter(File.file_hash.in_(tour_harolds)).all() + db_files = File.query.filter(File.file_hash.in_(tour_harolds)).offset((page-1) * 10).limit(10).all() return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, - is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=True, is_tour_mode=get_tour_lock_status()) + is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=True, is_tour_mode=get_tour_lock_status(), + current="/tour_page",page=page, rows=rows) return "Permission Denied", 403 diff --git a/audiophiler/templates/main.html b/audiophiler/templates/main.html index fc785ae..5f85972 100644 --- a/audiophiler/templates/main.html +++ b/audiophiler/templates/main.html @@ -81,5 +81,54 @@
Owner: {{ file.author }} uploaded {{ get_date_modified(s3_bucket, file.file_ {% endif %} {% endfor %} +
+ +
{% endblock %} From f8189ea3ab729cf50f7868a93ec258785a7a15b7 Mon Sep 17 00:00:00 2001 From: Joe Abbate Date: Mon, 28 Mar 2022 19:46:54 -0400 Subject: [PATCH 2/3] Neater Format of Pagination HTML --- audiophiler/__init__.py | 71 +++++++++++++++++++++++++++------ audiophiler/templates/main.html | 31 +++----------- 2 files changed, 64 insertions(+), 38 deletions(-) diff --git a/audiophiler/__init__.py b/audiophiler/__init__.py index ed940e3..f7eb3df 100644 --- a/audiophiler/__init__.py +++ b/audiophiler/__init__.py @@ -71,72 +71,117 @@ def home_def(auth_dict=None): @audiophiler_auth def home(page, auth_dict=None): # Retrieve list of files for templating - rows = File.query.count() + query = File.query + rows = query.count() rows = int(rows // 10 + bool(rows % 10)) + + if page > rows or page < 1: + return "Page Out of Bounds", 404 + db_files = File.query.offset((page-1) * 10).limit(10).all() harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") + is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) + return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False, - current="", page=page, rows=rows) + current="", page=page, rows=rows, begin=max(1, page-6), + end=min(page+6, rows) + 1) + +@app.route("/mine") +@auth.oidc_auth('default') +@audiophiler_auth +def mine_def(auth_dict=None): + return redirect("/mine/1") @app.route("/mine/") @auth.oidc_auth('default') @audiophiler_auth def mine(page, auth_dict=None): - rows = File.query.count() + query = File.query.filter_by(author=auth_dict["uid"]) + rows = query.count() rows = int(rows // 10 + bool(rows % 10)) + + if page > rows or page < 1: + return "Page Out of Bounds", 404 + is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) + # Retrieve list of files for templating - db_files = File.query.filter_by(author=auth_dict["uid"]).offset((page-1) * 10).limit(10).all() + db_files = query.offset((page-1) * 10).limit(10).all() harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") return render_template("main.html", db_files=db_files, get_file_s3=get_file_s3, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False, - current="/mine",page=page, rows=rows) + current="/mine", page=page, rows=rows, begin=max(1, page-6), + end=min(page+6, rows) + 1) + +@app.route("/selected") +@auth.oidc_auth('default') +@audiophiler_auth +def selected_def(auth_dict=None): + return redirect("/selected/1") @app.route("/selected/") @auth.oidc_auth('default') @audiophiler_auth def selected(page, auth_dict=None): - rows = File.query.count() + #Retrieve list of files for templating + harolds = get_harold_list(auth_dict["uid"]) + query = File.query.filter(File.file_hash.in_(harolds)) + rows = query.count() rows = int(rows // 10 + bool(rows % 10)) + + if page > rows or page < 1: + return "Page Out of Bounds", 404 + is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) - #Retrieve list of files for templating - harolds = get_harold_list(auth_dict["uid"]) + tour_harolds = get_harold_list("root") - db_files = File.query.filter(File.file_hash.in_(harolds)).offset((page-1) * 10).limit(10).all() + db_files = query.offset((page-1) * 10).limit(10).all() return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=False, - current="/selected",page=page, rows=rows) + current="/selected", page=page, rows=rows, begin=max(1, page-6), + end=min(page+6, rows) + 1) + +@app.route("/tour_page") +@auth.oidc_auth('default') +@audiophiler_auth +def admin_def(auth_dict=None): + return redirect("/tour_page/1") @app.route("/tour_page/") @auth.oidc_auth('default') @audiophiler_auth def admin(page, auth_dict=None): - rows = File.query.count() + query = File.query.filter(File.file_hash.in_(tour_harolds)) + rows = query.count() + + if page > rows or page < 1: + return "Page Out of Bounds", 404 + rows = int(rows // 10 + bool(rows % 10)) is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) if is_eboard or is_rtp: harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") - db_files = File.query.filter(File.file_hash.in_(tour_harolds)).offset((page-1) * 10).limit(10).all() + db_files = query.offset((page-1) * 10).limit(10).all() return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket, auth_dict=auth_dict, harolds=harolds, tour_harolds=tour_harolds, is_rtp=is_rtp, is_eboard=is_eboard, is_tour_page=True, is_tour_mode=get_tour_lock_status(), - current="/tour_page",page=page, rows=rows) + current="/tour_page", page=page, rows=rows, begin=max(1, page-6), end=min(page+6, rows) + 1) return "Permission Denied", 403 diff --git a/audiophiler/templates/main.html b/audiophiler/templates/main.html index 5f85972..51c4591 100644 --- a/audiophiler/templates/main.html +++ b/audiophiler/templates/main.html @@ -80,43 +80,26 @@
Owner: {{ file.author }} uploaded {{ get_date_modified(s3_bucket, file.file_ {% if not loop.index0 is divisibleby 2 %} {% endif %} + {% if loop.index0 is divisibleby 2 and loop.last %} + + {% endif %} {% endfor %}
From 32204a44d25cacb761ebfca81b5ba13d1443b9de Mon Sep 17 00:00:00 2001 From: Joe Abbate Date: Mon, 28 Mar 2022 22:33:52 -0400 Subject: [PATCH 3/3] Fix Pylint --- audiophiler/__init__.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/audiophiler/__init__.py b/audiophiler/__init__.py index f7eb3df..0d4b717 100644 --- a/audiophiler/__init__.py +++ b/audiophiler/__init__.py @@ -81,7 +81,7 @@ def home(page, auth_dict=None): db_files = File.query.offset((page-1) * 10).limit(10).all() harolds = get_harold_list(auth_dict["uid"]) tour_harolds = get_harold_list("root") - + is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) @@ -144,7 +144,7 @@ def selected(page, auth_dict=None): is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) - + tour_harolds = get_harold_list("root") db_files = query.offset((page-1) * 10).limit(10).all() return render_template("main.html", db_files=db_files, @@ -164,18 +164,19 @@ def admin_def(auth_dict=None): @auth.oidc_auth('default') @audiophiler_auth def admin(page, auth_dict=None): + tour_harolds = get_harold_list("root") query = File.query.filter(File.file_hash.in_(tour_harolds)) rows = query.count() + rows = int(rows // 10 + bool(rows % 10)) if page > rows or page < 1: return "Page Out of Bounds", 404 - rows = int(rows // 10 + bool(rows % 10)) is_rtp = ldap_is_rtp(auth_dict["uid"]) is_eboard = ldap_is_eboard(auth_dict["uid"]) + if is_eboard or is_rtp: harolds = get_harold_list(auth_dict["uid"]) - tour_harolds = get_harold_list("root") db_files = query.offset((page-1) * 10).limit(10).all() return render_template("main.html", db_files=db_files, get_date_modified=get_date_modified, s3_bucket=s3_bucket,