add alias search

This commit is contained in:
Son NK 2019-11-23 18:31:51 +01:00
parent a362a0f543
commit 28c8fa0f4d
2 changed files with 19 additions and 2 deletions

View file

@ -29,6 +29,13 @@
</div> </div>
</div> </div>
<div class="row">
<form method="get" class="col-3">
<input type="search" name="query" placeholder="Enter to search for alias" class="form-control"
value="{{ query }}">
</form>
</div>
<div class="row row-cards row-deck mt-4"> <div class="row row-cards row-deck mt-4">
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card">

View file

@ -33,6 +33,8 @@ def index():
if highlight_gen_email_id: if highlight_gen_email_id:
del session[HIGHLIGHT_GEN_EMAIL_ID] del session[HIGHLIGHT_GEN_EMAIL_ID]
query = request.args.get("query") or ""
# User generates a new email # User generates a new email
if request.method == "POST": if request.method == "POST":
if request.form.get("form-name") == "trigger-email": if request.form.get("form-name") == "trigger-email":
@ -113,12 +115,13 @@ def index():
return render_template( return render_template(
"dashboard/index.html", "dashboard/index.html",
client_users=client_users, client_users=client_users,
aliases=get_alias_info(current_user.id, highlight_gen_email_id), aliases=get_alias_info(current_user.id, query, highlight_gen_email_id),
highlight_gen_email_id=highlight_gen_email_id, highlight_gen_email_id=highlight_gen_email_id,
query=query,
) )
def get_alias_info(user_id, highlight_gen_email_id=None) -> [AliasInfo]: def get_alias_info(user_id, query=None, highlight_gen_email_id=None) -> [AliasInfo]:
aliases = {} # dict of alias and AliasInfo aliases = {} # dict of alias and AliasInfo
q = db.session.query(GenEmail, ForwardEmail, ForwardEmailLog).filter( q = db.session.query(GenEmail, ForwardEmail, ForwardEmailLog).filter(
GenEmail.user_id == user_id, GenEmail.user_id == user_id,
@ -126,6 +129,9 @@ def get_alias_info(user_id, highlight_gen_email_id=None) -> [AliasInfo]:
ForwardEmail.id == ForwardEmailLog.forward_id, ForwardEmail.id == ForwardEmailLog.forward_id,
) )
if query:
q = q.filter(GenEmail.email.contains(query))
for ge, fe, fel in q: for ge, fe, fel in q:
if ge.email not in aliases: if ge.email not in aliases:
aliases[ge.email] = AliasInfo( aliases[ge.email] = AliasInfo(
@ -150,6 +156,10 @@ def get_alias_info(user_id, highlight_gen_email_id=None) -> [AliasInfo]:
.filter(GenEmail.email.notin_(aliases.keys())) .filter(GenEmail.email.notin_(aliases.keys()))
.filter(GenEmail.user_id == user_id) .filter(GenEmail.user_id == user_id)
) )
if query:
q = q.filter(GenEmail.email.contains(query))
for ge in q: for ge in q:
aliases[ge.email] = AliasInfo( aliases[ge.email] = AliasInfo(
gen_email=ge, gen_email=ge,