Display alias mailbox on alias page

This commit is contained in:
Son NK 2020-02-10 23:20:25 +07:00
parent b76a71819a
commit fc167b8b41
4 changed files with 17 additions and 7 deletions

View File

@ -34,7 +34,7 @@ def get_aliases():
except (ValueError, TypeError):
return jsonify(error="page_id must be provided in request query"), 400
aliases: [AliasInfo] = get_alias_info(user.id, page_id=page_id)
aliases: [AliasInfo] = get_alias_info(user, page_id=page_id)
return (
jsonify(

View File

@ -134,6 +134,12 @@
<hr class="my-2">
{% if alias_info.mailbox != None %}
<div class="small-text">
Owned by <b>{{ alias_info.mailbox.email }}</b> mailbox
</div>
{% endif %}
<p class="small-text">
Created {{ gen_email.created_at | dt }}
{% if alias_info.highlight %}

View File

@ -16,12 +16,14 @@ from app.models import (
ForwardEmailLog,
DeletedAlias,
AliasGeneratorEnum,
Mailbox,
)
class AliasInfo:
id: int
gen_email: GenEmail
mailbox: Mailbox
nb_forward: int
nb_blocked: int
nb_reply: int
@ -154,7 +156,7 @@ def index():
return render_template(
"dashboard/index.html",
client_users=client_users,
aliases=get_alias_info(current_user.id, query, highlight_gen_email_id),
aliases=get_alias_info(current_user, query, highlight_gen_email_id),
highlight_gen_email_id=highlight_gen_email_id,
query=query,
AliasGeneratorEnum=AliasGeneratorEnum,
@ -162,7 +164,7 @@ def index():
def get_alias_info(
user_id, query=None, highlight_gen_email_id=None, page_id=None
user, query=None, highlight_gen_email_id=None, page_id=None
) -> [AliasInfo]:
if query:
query = query.strip().lower()
@ -170,12 +172,13 @@ def get_alias_info(
aliases = {} # dict of alias and AliasInfo
q = (
db.session.query(GenEmail, ForwardEmail, ForwardEmailLog)
db.session.query(GenEmail, ForwardEmail, ForwardEmailLog, Mailbox)
.join(ForwardEmail, GenEmail.id == ForwardEmail.gen_email_id, isouter=True)
.join(
ForwardEmailLog, ForwardEmail.id == ForwardEmailLog.forward_id, isouter=True
)
.filter(GenEmail.user_id == user_id)
.join(Mailbox, GenEmail.mailbox_id == Mailbox.id, isouter=True)
.filter(GenEmail.user_id == user.id)
.order_by(GenEmail.created_at.desc())
)
@ -188,7 +191,7 @@ def get_alias_info(
if page_id is not None:
q = q.limit(PAGE_LIMIT).offset(page_id * PAGE_LIMIT)
for ge, fe, fel in q:
for ge, fe, fel, mb in q:
if ge.email not in aliases:
aliases[ge.email] = AliasInfo(
id=ge.id,
@ -197,6 +200,7 @@ def get_alias_info(
nb_forward=0,
nb_reply=0,
highlight=ge.id == highlight_gen_email_id,
mailbox=mb,
)
alias_info = aliases[ge.email]

View File

@ -484,7 +484,7 @@ class GenEmail(db.Model, ModelMixin):
)
user = db.relationship(User)
mailbox = db.relationship('Mailbox')
mailbox = db.relationship("Mailbox")
@classmethod
def create_new(cls, user_id, prefix, note=None):