add filter by directory on dashboard

This commit is contained in:
Son Nguyen Kim 2021-09-05 19:11:05 +02:00
parent 3faf5c921d
commit ffd2ec5e81
4 changed files with 24 additions and 3 deletions

View File

@ -129,7 +129,13 @@ def get_alias_infos_with_pagination(user, page_id=0, query=None) -> [AliasInfo]:
def get_alias_infos_with_pagination_v3(
user, page_id=0, query=None, sort=None, alias_filter=None, mailbox_id=None
user,
page_id=0,
query=None,
sort=None,
alias_filter=None,
mailbox_id=None,
directory_id=None,
) -> [AliasInfo]:
# subquery on alias annotated with nb_reply, nb_blocked, nb_forward, max_created_at, latest_email_log_created_at
alias_activity_subquery = (
@ -232,6 +238,9 @@ def get_alias_infos_with_pagination_v3(
or_(Alias.mailbox_id == mailbox_id, AliasMailbox.mailbox_id == mailbox_id)
)
if directory_id:
q = q.filter(Alias.directory_id == directory_id)
if alias_filter == "enabled":
q = q.filter(Alias.enabled)
elif alias_filter == "disabled":

View File

@ -192,6 +192,14 @@
{{ mailbox.email }}'s aliases
</option>
{% endfor %}
{% for directory in current_user.directories %}
<option value="directory:{{ directory.id }}" {% if filter == "directory:" ~ directory.id %}
selected {% endif %}>
Directory <b>{{ directory.name }}</b> aliases
</option>
{% endfor %}
</select>
<input type="search" name="query" placeholder="Enter to search for alias"

View File

@ -154,8 +154,12 @@ def index():
if alias_filter and alias_filter.startswith("mailbox:"):
mailbox_id = int(alias_filter[len("mailbox:") :])
directory_id = None
if alias_filter and alias_filter.startswith("directory:"):
directory_id = int(alias_filter[len("directory:") :])
alias_infos = get_alias_infos_with_pagination_v3(
current_user, page, query, sort, alias_filter, mailbox_id
current_user, page, query, sort, alias_filter, mailbox_id, directory_id
)
last_page = len(alias_infos) < PAGE_LIMIT

View File

@ -1924,7 +1924,7 @@ class Directory(db.Model, ModelMixin):
# when a directory is disabled, new alias can't be created on the fly
disabled = db.Column(db.Boolean, default=False, nullable=False, server_default="0")
user = db.relationship(User)
user = db.relationship(User, backref="directories")
_mailboxes = db.relationship(
"Mailbox", secondary="directory_mailbox", lazy="joined"