diff --git a/app/admin_model.py b/app/admin_model.py
index 7b53cd42d..03830a391 100644
--- a/app/admin_model.py
+++ b/app/admin_model.py
@@ -34,6 +34,7 @@
DeletedAlias,
DomainDeletedAlias,
PartnerUser,
+ AliasMailbox,
)
from app.newsletter_utils import send_newsletter_to_user, send_newsletter_to_address
@@ -785,6 +786,25 @@ def mailbox_list(user: User) -> list[Mailbox]:
def mailbox_count(user: User) -> int:
return Mailbox.filter_by(user_id=user.id).order_by(Mailbox.id.desc()).count()
+ @staticmethod
+ def alias_mailboxes(alias: Alias) -> list[Mailbox]:
+ return (
+ Session.query(Mailbox)
+ .filter(Mailbox.id == Alias.mailbox_id, Alias.id == alias.id)
+ .union(
+ Session.query(Mailbox)
+ .join(AliasMailbox, Mailbox.id == AliasMailbox.mailbox_id)
+ .filter(AliasMailbox.alias_id == alias.id)
+ )
+ .order_by(Mailbox.id)
+ .limit(10)
+ .all()
+ )
+
+ @staticmethod
+ def alias_mailbox_count(alias: Alias) -> int:
+ return len(alias.mailboxes)
+
@staticmethod
def alias_list(user: User) -> list[Alias]:
return (
diff --git a/templates/admin/email_search.html b/templates/admin/email_search.html
index 49eef26d6..291ec4ee6 100644
--- a/templates/admin/email_search.html
+++ b/templates/admin/email_search.html
@@ -1,220 +1,220 @@
{% extends 'admin/master.html' %}
{% macro show_user(user) -%}
-
User {{ user.email }} with ID {{ user.id }}.
- {% set pu = helper.partner_user(user) %}
-
-
-
- User ID |
- Email |
- Status |
- Paid |
- Subscription |
- Created At |
- Updated At |
- Connected with Proton account |
-
-
-
-
- {{ user.id }} |
- {{ user.email }} |
- {% if user.disabled %}
+ User {{ user.email }} with ID {{ user.id }}.
+ {% set pu = helper.partner_user(user) %}
+
+
+
+ User ID |
+ Email |
+ Status |
+ Paid |
+ Subscription |
+ Created At |
+ Updated At |
+ Connected with Proton account |
+
+
+
+
+ {{ user.id }} |
+ {{ user.email }} |
+ {% if user.disabled %}
- Disabled |
- {% else %}
- Enabled |
- {% endif %}
- {{ "yes" if user.is_paid() else "No" }} |
- {{ user.get_active_subscription() }} |
- {{ user.created_at }} |
- {{ user.updated_at }} |
- {% if pu %}
+ Disabled |
+ {% else %}
+ Enabled |
+ {% endif %}
+ {{ "yes" if user.is_paid() else "No" }} |
+ {{ user.get_active_subscription() }} |
+ {{ user.created_at }} |
+ {{ user.updated_at }} |
+ {% if pu %}
- {{ pu.partner_email }} |
- {% else %}
- No |
- {% endif %}
-
-
-
+ {{ pu.partner_email }} |
+ {% else %}
+ No |
+ {% endif %}
+
+
+
{%- endmacro %}
-{% macro list_mailboxes(mbox_count, mboxes) %}
-
- {{ mbox_count }} Mailboxes found.
- {% if mbox_count>10 %}Showing only the last 10.{% endif %}
-
-
-
-
- Mailbox ID |
- Email |
- Verified |
- Created At |
-
-
-
- {% for mailbox in mboxes %}
-
+{% macro list_mailboxes(message, mbox_count, mboxes) %}
+
+ {{ mbox_count }} {{ message }}.
+ {% if mbox_count>10 %}Showing only the last 10.{% endif %}
+
+
+
- {{ mailbox.id }} |
- {{mailbox.email}} |
- {{ "Yes" if mailbox.verified else "No" }} |
-
- {{ mailbox.created_at }}
- |
+ Mailbox ID |
+ Email |
+ Verified |
+ Created At |
- {% endfor %}
-
-
+
+
+ {% for mailbox in mboxes %}
+
+
+ {{ mailbox.id }} |
+ {{ mailbox.email }} |
+ {{ "Yes" if mailbox.verified else "No" }} |
+
+ {{ mailbox.created_at }}
+ |
+
+ {% endfor %}
+
+
{% endmacro %}
{% macro list_alias(alias_count, aliases) %}
-
- {{ alias_count }} Aliases found.
- {% if alias_count>10 %}Showing only the last 10.{% endif %}
-
-
-
-
-
- Alias ID
- |
-
- Email
- |
-
- Verified
- |
-
- Created At
- |
-
-
-
- {% for alias in aliases %}
+
+ {{ alias_count }} Aliases found.
+ {% if alias_count>10 %}Showing only the last 10.{% endif %}
+
+
+
- {{ alias.id }} |
- {{alias.email}} |
- {{ "Yes" if alias.verified else "No" }} |
- {{ alias.created_at }} |
+
+ Alias ID
+ |
+
+ Email
+ |
+
+ Verified
+ |
+
+ Created At
+ |
- {% endfor %}
-
-
+
+
+ {% for alias in aliases %}
+
+ {{ alias.id }} |
+ {{ alias.email }} |
+ {{ "Yes" if alias.verified else "No" }} |
+ {{ alias.created_at }} |
+
+ {% endfor %}
+
+
{% endmacro %}
{% macro show_deleted_alias(deleted_alias) -%}
- Deleted Alias {{ deleted_alias.email }} with ID {{ deleted_alias.id }}.
-
-
-
- Deleted Alias ID |
- Email |
- Deleted At |
- Reason |
-
-
-
-
- {{ deleted_alias.id }} |
- {{ deleted_alias.email }} |
- {{ deleted_alias.created_at }} |
- {{ deleted_alias.reason }} |
-
-
-
+ Deleted Alias {{ deleted_alias.email }} with ID {{ deleted_alias.id }}.
+
+
+
+ Deleted Alias ID |
+ Email |
+ Deleted At |
+ Reason |
+
+
+
+
+ {{ deleted_alias.id }} |
+ {{ deleted_alias.email }} |
+ {{ deleted_alias.created_at }} |
+ {{ deleted_alias.reason }} |
+
+
+
{%- endmacro %}
{% macro show_domain_deleted_alias(dom_deleted_alias) -%}
-
- Domain Deleted Alias {{ dom_deleted_alias.email }} with ID {{ dom_deleted_alias.id }} for domain {{ dom_deleted_alias.domain.domain }}
-
-
-
-
- Deleted Alias ID |
- Email |
- Domain |
- Domain ID |
- Domain owner user ID |
- Domain owner user email |
- Deleted At |
-
-
-
-
- {{ dom_deleted_alias.id }} |
- {{ dom_deleted_alias.email }} |
- {{ dom_deleted_alias.domain.domain }} |
- {{ dom_deleted_alias.domain.id }} |
- {{ dom_deleted_alias.domain.user_id }} |
- {{ dom_deleted_alias.created_at }} |
-
-
-
- {{ show_user(data.domain_deleted_alias.domain.user) }}
+
+ Domain Deleted Alias {{ dom_deleted_alias.email }} with ID {{ dom_deleted_alias.id }} for
+ domain {{ dom_deleted_alias.domain.domain }}
+
+
+
+
+ Deleted Alias ID |
+ Email |
+ Domain |
+ Domain ID |
+ Domain owner user ID |
+ Domain owner user email |
+ Deleted At |
+
+
+
+
+ {{ dom_deleted_alias.id }} |
+ {{ dom_deleted_alias.email }} |
+ {{ dom_deleted_alias.domain.domain }} |
+ {{ dom_deleted_alias.domain.id }} |
+ {{ dom_deleted_alias.domain.user_id }} |
+ {{ dom_deleted_alias.created_at }} |
+
+
+
+ {{ show_user(data.domain_deleted_alias.domain.user) }}
{%- endmacro %}
{% block body %}
-
- {% if data.no_match and email %}
-
- No user, alias or mailbox found for {{ email }}
- {% endif %}
- {% if data.alias %}
-
-
Found Alias {{ data.alias.email }}
- {{ list_alias(1,[data.alias]) }}
- {{ show_user(data.alias.user) }}
- {{ list_mailboxes(helper.mailbox_count(data.alias.user) , helper.mailbox_list(data.alias.user) ) }}
+
- {% endif %}
- {% if data.user %}
+ {% if data.no_match and email %}
+ No user, alias or mailbox found for {{ email }}
+ {% endif %}
-
-
Found User {{ data.user.email }}
- {{ show_user(data.user) }}
- {{ list_mailboxes(helper.mailbox_count(data.user) , helper.mailbox_list(data.user) ) }}
- {{ list_alias(helper.alias_count(data.user) ,helper.alias_list(data.user)) }}
-
- {% endif %}
+ {% if data.alias %}
+
+
Found Alias {{ data.alias.email }}
+ {{ list_alias(1,[data.alias]) }}
+ {{ list_mailboxes("Mailboxes for alias", helper.alias_mailbox_count(data.alias), helper.alias_mailboxes(data.alias)) }}
+ {{ show_user(data.alias.user) }}
+
+ {% endif %}
+
+ {% if data.user %}
+
+
Found User {{ data.user.email }}
+ {{ show_user(data.user) }}
+ {{ list_mailboxes("Mailboxes for user", helper.mailbox_count(data.user) , helper.mailbox_list(data.user) ) }}
+ {{ list_alias(helper.alias_count(data.user) ,helper.alias_list(data.user)) }}
+
+ {% endif %}
{% if data.mailbox_count > 10 %}
- Found more than 10 mailboxes for {{ email }}. Showing the last 10
+ Found more than 10 mailboxes for {{ email }}. Showing the last 10
{% elif data.mailbox_count > 0 %}
- Found {{ data.mailbox_count }} mailbox(es) for {{ email }}
+ Found {{ data.mailbox_count }} mailbox(es) for {{ email }}
{% endif %}
- {% for mailbox in data.mailbox %}
+ {% for mailbox in data.mailbox %}
-
-
Found Mailbox {{ mailbox.email }}
- {{ list_mailboxes(1, [mailbox]) }}
- {{ show_user(mailbox.user) }}
-
- {% endfor %}
- {% if data.deleted_alias %}
+
+
Found Mailbox {{ mailbox.email }}
+ {{ list_mailboxes("Mailbox found", 1, [mailbox]) }}
+ {{ show_user(mailbox.user) }}
+
+ {% endfor %}
+ {% if data.deleted_alias %}
-
-
Found DeletedAlias {{ data.deleted_alias.email }}
- {{ show_deleted_alias(data.deleted_alias) }}
-
- {% endif %}
- {% if data.domain_deleted_alias %}
+
+
Found DeletedAlias {{ data.deleted_alias.email }}
+ {{ show_deleted_alias(data.deleted_alias) }}
+
+ {% endif %}
+ {% if data.domain_deleted_alias %}
-
-
Found DomainDeletedAlias {{ data.domain_deleted_alias.email }}
- {{ show_domain_deleted_alias(data.domain_deleted_alias) }}
-
- {% endif %}
+
+
Found DomainDeletedAlias {{ data.domain_deleted_alias.email }}
+ {{ show_domain_deleted_alias(data.domain_deleted_alias) }}
+
+ {% endif %}
{% endblock %}