From 58504e3b8d4e2193495d370ea89aaf0aa426bf7c Mon Sep 17 00:00:00 2001 From: Son NK Date: Mon, 18 Nov 2019 10:08:18 +0100 Subject: [PATCH] display new alias on top --- app/dashboard/templates/dashboard/index.html | 6 ++-- app/dashboard/views/index.py | 35 +++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/app/dashboard/templates/dashboard/index.html b/app/dashboard/templates/dashboard/index.html index 7c1133ee..ff0ac366 100644 --- a/app/dashboard/templates/dashboard/index.html +++ b/app/dashboard/templates/dashboard/index.html @@ -48,16 +48,18 @@ {% for alias_info in aliases %} {% set gen_email = alias_info.gen_email %} - +
{{ gen_email.email }}     -
Created {{ gen_email.created_at | dt }}
+ {% if alias_info.highlight %} + New + {% endif %} diff --git a/app/dashboard/views/index.py b/app/dashboard/views/index.py index a9a67e92..1376bf6a 100644 --- a/app/dashboard/views/index.py +++ b/app/dashboard/views/index.py @@ -20,6 +20,7 @@ class AliasInfo: nb_reply: int show_intro_test_send_email: bool = False + highlight: bool = False @dashboard_bp.route("/", methods=["GET", "POST"]) @@ -99,23 +100,15 @@ def index(): sorted(client_users, key=lambda cu: cu.client.name) - gen_emails = ( - GenEmail.filter_by(user_id=current_user.id) - .order_by(GenEmail.email) - .options(joinedload(GenEmail.client_users)) - .all() - ) - return render_template( "dashboard/index.html", client_users=client_users, - aliases=get_alias_info(current_user.id), - gen_emails=gen_emails, + aliases=get_alias_info(current_user.id, highlight_gen_email_id), highlight_gen_email_id=highlight_gen_email_id, ) -def get_alias_info(user_id) -> [AliasInfo]: +def get_alias_info(user_id, highlight_gen_email_id=None) -> [AliasInfo]: aliases = {} # dict of alias and AliasInfo q = db.session.query(GenEmail, ForwardEmail, ForwardEmailLog).filter( GenEmail.user_id == user_id, @@ -126,7 +119,11 @@ def get_alias_info(user_id) -> [AliasInfo]: for ge, fe, fel in q: if ge.email not in aliases: aliases[ge.email] = AliasInfo( - gen_email=ge, nb_blocked=0, nb_forward=0, nb_reply=0 + gen_email=ge, + nb_blocked=0, + nb_forward=0, + nb_reply=0, + highlight=ge.id == highlight_gen_email_id, ) alias_info = aliases[ge.email] @@ -145,11 +142,25 @@ def get_alias_info(user_id) -> [AliasInfo]: ) for ge in q: aliases[ge.email] = AliasInfo( - gen_email=ge, nb_blocked=0, nb_forward=0, nb_reply=0 + gen_email=ge, + nb_blocked=0, + nb_forward=0, + nb_reply=0, + highlight=ge.id == highlight_gen_email_id, ) ret = list(aliases.values()) + # make sure the highlighted alias is the first element + highlight_index = None + for ix, alias in enumerate(ret): + if alias.highlight: + highlight_index = ix + break + + if highlight_index: + ret.insert(0, ret.pop(highlight_index)) + # only show intro on the first enabled alias for alias in ret: if alias.gen_email.enabled: