diff --git a/app/admin_model.py b/app/admin_model.py
index 565e4b6b..e9336bc8 100644
--- a/app/admin_model.py
+++ b/app/admin_model.py
@@ -753,12 +753,37 @@ class EmailSearchAdmin(BaseView):
if not alias and not user and not mailbox:
no_match = True
+ def user_mailboxes(user_id: int) -> list[Mailbox]:
+ return (
+ Mailbox.filter_by(user_id=user_id)
+ .order_by(Mailbox.id.asc())
+ .limit(10)
+ .all()
+ )
+
+ def user_mailboxes_count(user_id: int) -> int:
+ return Mailbox.filter_by(user_id=user_id).order_by(Mailbox.id.asc()).count()
+
+ def user_aliases(user_id: int) -> list[Alias]:
+ return (
+ Alias.filter_by(user_id=user_id)
+ .order_by(Alias.id.asc())
+ .limit(10)
+ .all()
+ )
+
+ def user_aliases_count(user_id: int) -> int:
+ return Alias.filter_by(user_id=user_id).count()
+
return self.render(
- "admin/alias_search.html",
+ "admin/email_search.html",
email=email,
no_match=no_match,
alias=alias,
mailbox=mailbox,
user=user,
- user_aliases=lambda user_id: Alias.filter_by(user_id=user_id).all(),
+ user_aliases=user_aliases,
+ user_aliases_count=user_aliases_count,
+ user_mailboxes=user_mailboxes,
+ user_mailboxes_count=user_mailboxes_count,
)
diff --git a/scripts/reset_local_db.sh b/scripts/reset_local_db.sh
index 42dae950..422c2a8b 100755
--- a/scripts/reset_local_db.sh
+++ b/scripts/reset_local_db.sh
@@ -3,5 +3,5 @@
export DB_URI=postgresql://myuser:mypassword@localhost:15432/simplelogin
echo 'drop schema public cascade; create schema public;' | psql $DB_URI
-rye run alembic upgrade head
-rye run flask dummy-data
+poetry run alembic upgrade head
+poetry run flask dummy-data
diff --git a/scripts/reset_test_db.sh b/scripts/reset_test_db.sh
index 234cef36..25466010 100755
--- a/scripts/reset_test_db.sh
+++ b/scripts/reset_test_db.sh
@@ -3,4 +3,4 @@
export DB_URI=postgresql://myuser:mypassword@localhost:15432/test
echo 'drop schema public cascade; create schema public;' | psql $DB_URI
-rye run alembic upgrade head
+poetry run alembic upgrade head
diff --git a/templates/admin/alias_search.html b/templates/admin/alias_search.html
deleted file mode 100644
index 159d7331..00000000
--- a/templates/admin/alias_search.html
+++ /dev/null
@@ -1,300 +0,0 @@
-{% extends 'admin/master.html' %}
-
-{% block body %}
-
-
- {% if no_match %}
-
-
- No user, alias or mailbox found for {{ email }}
-
- {% endif %}
- {% if alias %}
-
-
-
Alias {{ alias.email }} found
-
- -
- Alias id
-
- -
- {{ alias.id }}
-
- -
- Email
-
- -
- {{ alias.email }}
-
- -
- Created at
-
- -
- {{ alias.created_at }}
-
- -
- User
-
- -
-
- -
- User id
-
- -
- {{ alias.user.id }}
-
- -
- Email
-
- -
- {{ alias.user.email }}
-
- -
- Premium
-
- -
- {{ alias.user.is_premium() }}
-
- -
- Disabled
-
- -
- {{ alias.user.disabled }}
-
- -
- Crated At
-
- -
- {{ alias.user.created_at }}
-
- -
- Mailboxes
-
- -
- {% for mailbox in alias.mailboxes %}
-
-
- -
- Mailbox id
-
- -
- {{ mailbox.id }}
-
- -
- Email
-
- -
- {{ mailbox.email }}
-
- -
- Verified
-
- -
- {{ mailbox.verified }}
-
- -
- Created At
-
- -
- {{ mailbox.created_at }}
-
-
- {% endfor %}
-
-
-
-
-
- {% endif %}
- {% if user %}
-
-
-
User {{ user.email }} found
-
- -
- User id
-
- -
- {{ user.id }}
-
- -
- Email
-
- -
- {{ user.email }}
-
- {% if user.is_paid() %}
-
- -
- Paid
-
- -
- Yes
-
- -
- Subscription
-
- -
- {{ user.get_active_subscription() }}
-
- {% else %}
- -
- Paid
-
- -
- No
-
- {% endif %}
- -
- Created at
-
- -
- {{ user.created_at }}
-
- -
- Mailboxes
-
- -
- {% for mailbox in user.mailboxes() %}
-
-
- -
- Mailbox id
-
- -
- {{ mailbox.id }}
-
- -
- Email
-
- -
- {{ mailbox.email }}
-
- -
- Verified
-
- -
- {{ mailbox.verified }}
-
- -
- Created At
-
- -
- {{ mailbox.created_at }}
-
-
- {% endfor %}
-
- -
- Aliases
-
- -
- {% for mailbox in user_aliases(user.id) %}
-
-
- -
- Mailbox id
-
- -
- {{ mailbox.id }}
-
- -
- Email
-
- -
- {{ mailbox.email }}
-
- -
- Verified
-
- -
- {{ mailbox.verified }}
-
- -
- Created At
-
- -
- {{ mailbox.created_at }}
-
-
- {% endfor %}
-
-
-
- {% endif %}
- {% if mailbox %}
-
-
-
Mailbox {{ mailbox.email }} found
-
- -
- Mailbox id
-
- -
- {{ mailbox.id }}
-
- -
- Email
-
- -
- {{ mailbox.email }}
-
- -
- Created at
-
- -
- {{ mailbox.created_at }}
-
- -
- User
-
- -
-
- -
- User id
-
- -
- {{ mailbox.user.id }}
-
- -
- Email
-
- -
- {{ mailbox.user.email }}
-
- -
- Premium
-
- -
- {{ mailbox.user.is_premium() }}
-
- -
- Disabled
-
- -
- {{ mailbox.user.disabled }}
-
- -
- Crated At
-
- -
- {{ mailbox.user.created_at }}
-
-
-
-
-
- {% endif %}
-{% endblock %}
diff --git a/templates/admin/email_search.html b/templates/admin/email_search.html
new file mode 100644
index 00000000..97a77955
--- /dev/null
+++ b/templates/admin/email_search.html
@@ -0,0 +1,139 @@
+{% extends 'admin/master.html' %}
+
+{% macro show_user(user) -%}
+ User {{ user.email }} with ID {{ user.id }}.
+
+
+
+ User ID |
+ Email |
+ Paid |
+ Subscription |
+ Created At |
+
+
+
+
+ {{ user.id }} |
+ {{ user.email }} |
+ {{ "yes" if user.is_paid() else No }} |
+ {{ user.get_active_subscription() }} |
+ {{ user.created_at }} |
+
+
+
+{%- endmacro %}
+{% macro list_mailboxes(mbox_count, mboxes) %}
+
+ {{ mbox_count }} Mailboxes found.
+ {% if mbox_count>10 %}Showing only the first 10.{% endif %}
+
+
+
+
+ Mailbox ID |
+ Email |
+ Verified |
+ Created At |
+
+
+
+ {% 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 first 10.{% endif %}
+
+
+
+
+ Alias ID |
+ Email |
+ Verified |
+ Created At |
+
+
+
+ {% for alias in aliases %}
+
+
+ {{ alias.id }} |
+ {{ alias.email }} |
+ {{ "Yes" if alias.verified else "No" }} |
+
+ {{ alias.created_at }}
+ |
+
+ {% endfor %}
+
+
+{% endmacro %}
+{% block body %}
+
+
+ {% if no_match %}
+
+
+ No user, alias or mailbox found for {{ email }}
+
+ {% endif %}
+ {% if alias %}
+
+
+
+ Found Alias {{ alias.email }}
+
+ {{ list_alias(1,[alias]) }}
+ {{ show_user(alias.user) }}
+ {{ list_mailboxes(user_mailboxes_count(alias.user.id), user_mailboxes(alias.user.id) ) }}
+
+ {% endif %}
+ {% if user %}
+
+
+
+ Found User {{ user.email }}
+
+ {{ show_user(user) }}
+ {{ list_mailboxes(user_mailboxes_count(user.id), user_mailboxes(user.id) ) }}
+ {{ list_alias(user_aliases_count(user.id),user_aliases(user.id)) }}
+
+ {% endif %}
+ {% if mailbox %}
+
+
+
+ Found Mailbox {{ mailbox.email }}
+
+ {{ list_mailboxes(1, [mailbox] ) }}
+ {{ show_user(mailbox.user) }}
+
+ {% endif %}
+{% endblock %}