From 4c64393df199b45c307a3d70835fde56861208b1 Mon Sep 17 00:00:00 2001 From: Son NK Date: Sun, 26 Apr 2020 12:25:12 +0200 Subject: [PATCH 1/3] Add other sorting options: A-Z, Z-A, new-old, old-new --- app/api/serializer.py | 6 ++++++ app/dashboard/templates/dashboard/index.html | 11 ++++++++++- app/dashboard/views/index.py | 2 -- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/api/serializer.py b/app/api/serializer.py index 58d44d5a..7b8ab497 100644 --- a/app/api/serializer.py +++ b/app/api/serializer.py @@ -141,6 +141,12 @@ def get_alias_infos_with_pagination_v2( if sort == "old2new": q = q.order_by(Alias.created_at) + elif sort == "new2old": + q = q.order_by(Alias.created_at.desc()) + elif sort == "a2z": + q = q.order_by(Alias.email) + elif sort == "z2a": + q = q.order_by(Alias.email.desc()) else: # default sorting q = q.order_by(latest_activity.desc()) diff --git a/app/dashboard/templates/dashboard/index.html b/app/dashboard/templates/dashboard/index.html index 64b1db0a..638d82fb 100644 --- a/app/dashboard/templates/dashboard/index.html +++ b/app/dashboard/templates/dashboard/index.html @@ -70,7 +70,16 @@ Sort by most recent activity + + + diff --git a/app/dashboard/views/index.py b/app/dashboard/views/index.py index 40c981e0..3368f379 100644 --- a/app/dashboard/views/index.py +++ b/app/dashboard/views/index.py @@ -3,7 +3,6 @@ from flask_login import login_required, current_user from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import joinedload -from app import email_utils from app.api.serializer import get_alias_infos_with_pagination_v2 from app.dashboard.base import dashboard_bp from app.extensions import db @@ -13,7 +12,6 @@ from app.models import ( ClientUser, DeletedAlias, AliasGeneratorEnum, - Mailbox, ) From 12714ae60180a552fdf4de26e9b82d676b6bf061 Mon Sep 17 00:00:00 2001 From: Son NK Date: Sun, 26 Apr 2020 12:31:10 +0200 Subject: [PATCH 2/3] Add Only enabled alias sorting option --- app/api/serializer.py | 3 +++ app/dashboard/templates/dashboard/index.html | 3 +++ server.py | 9 ++++++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/api/serializer.py b/app/api/serializer.py index 7b8ab497..c2422ba0 100644 --- a/app/api/serializer.py +++ b/app/api/serializer.py @@ -139,6 +139,9 @@ def get_alias_infos_with_pagination_v2( or_(Alias.email.ilike(f"%{query}%"), Alias.note.ilike(f"%{query}%")) ) + if sort == "enabled": + q = q.filter(Alias.enabled) + if sort == "old2new": q = q.order_by(Alias.created_at) elif sort == "new2old": diff --git a/app/dashboard/templates/dashboard/index.html b/app/dashboard/templates/dashboard/index.html index 638d82fb..424e2103 100644 --- a/app/dashboard/templates/dashboard/index.html +++ b/app/dashboard/templates/dashboard/index.html @@ -81,6 +81,9 @@ + Date: Sun, 26 Apr 2020 13:04:27 +0200 Subject: [PATCH 3/3] Support alias filter --- app/api/serializer.py | 6 ++-- app/dashboard/templates/dashboard/index.html | 30 ++++++++++++++++---- app/dashboard/views/index.py | 12 ++++++-- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/app/api/serializer.py b/app/api/serializer.py index c2422ba0..47ba265c 100644 --- a/app/api/serializer.py +++ b/app/api/serializer.py @@ -113,7 +113,7 @@ def get_alias_infos_with_pagination(user, page_id=0, query=None) -> [AliasInfo]: def get_alias_infos_with_pagination_v2( - user, page_id=0, query=None, sort=None + user, page_id=0, query=None, sort=None, alias_filter=None ) -> [AliasInfo]: ret = [] latest_activity = func.max( @@ -139,8 +139,10 @@ def get_alias_infos_with_pagination_v2( or_(Alias.email.ilike(f"%{query}%"), Alias.note.ilike(f"%{query}%")) ) - if sort == "enabled": + if alias_filter == "enabled": q = q.filter(Alias.enabled) + elif alias_filter == "disabled": + q = q.filter(Alias.enabled == False) if sort == "old2new": q = q.order_by(Alias.created_at) diff --git a/app/dashboard/templates/dashboard/index.html b/app/dashboard/templates/dashboard/index.html index 424e2103..42adb0ec 100644 --- a/app/dashboard/templates/dashboard/index.html +++ b/app/dashboard/templates/dashboard/index.html @@ -21,7 +21,8 @@ {% block default_content %}
-
+ +
@@ -60,12 +61,13 @@
-
+ +
+ + + + {% if query or sort or filter %} + Reset + {% endif %}
diff --git a/app/dashboard/views/index.py b/app/dashboard/views/index.py index 3368f379..b595bc18 100644 --- a/app/dashboard/views/index.py +++ b/app/dashboard/views/index.py @@ -20,6 +20,7 @@ from app.models import ( def index(): query = request.args.get("query") or "" sort = request.args.get("sort") or "" + alias_filter = request.args.get("filter") or "" page = 0 if request.args.get("page"): @@ -59,6 +60,7 @@ def index(): highlight_alias_id=alias.id, query=query, sort=sort, + filter=alias_filter, ) ) else: @@ -75,6 +77,7 @@ def index(): highlight_alias_id=alias.id, query=query, sort=sort, + filter=alias_filter, ) ) @@ -93,7 +96,9 @@ def index(): LOG.error("alias %s has been added before to DeletedAlias", email) db.session.rollback() - return redirect(url_for("dashboard.index", query=query, sort=sort)) + return redirect( + url_for("dashboard.index", query=query, sort=sort, filter=alias_filter) + ) client_users = ( ClientUser.filter_by(user_id=current_user.id) @@ -118,7 +123,9 @@ def index(): return render_template( "dashboard/index.html", client_users=client_users, - alias_infos=get_alias_infos_with_pagination_v2(current_user, page, query, sort), + alias_infos=get_alias_infos_with_pagination_v2( + current_user, page, query, sort, alias_filter + ), highlight_alias_id=highlight_alias_id, query=query, AliasGeneratorEnum=AliasGeneratorEnum, @@ -126,4 +133,5 @@ def index(): show_intro=show_intro, page=page, sort=sort, + filter=alias_filter, )