Update templates

This commit is contained in:
Adrià Casajús
2026-01-27 10:48:01 +01:00
committed by Adrià Casajús
parent d73e685c3b
commit 341cb036fa
6 changed files with 107 additions and 113 deletions
+1 -7
View File
@@ -7,14 +7,8 @@ repos:
hooks:
- id: check-yaml
- id: trailing-whitespace
- repo: https://github.com/trim21/dprint-pre-commit
rev: "d93f30aac23560a1999a1f4a0f290323fda0c1a4"
hooks:
- id: dprint
types: [file]
files: \.html$
- repo: https://github.com/djlint/djLint
rev: v1.36.4
rev: v1.35.3
hooks:
- id: djlint-jinja
types: [file]
+79 -80
View File
@@ -2,89 +2,86 @@
name = "SimpleLogin"
version = "0.1.0"
description = "SimpleLogin partner API"
authors = [ {name="SimpleLogin", email="dev@simplelogin.io"}]
authors = [{ name = "SimpleLogin", email = "dev@simplelogin.io" }]
license = "MIT"
repository = "https://github.com/simple-login/app"
keywords = ["email", "alias", "privacy", "oauth2", "openid"]
packages = [
{ include = "app/" },
{ include = "migrations/" },
]
packages = [{ include = "app/" }, { include = "migrations/" }]
include = ["templates/*", "templates/**/*", "local_data/*.txt"]
requires-python = "~=3.12.0"
dependencies = [
"flask ~= 1.1.2",
"flask_login ~= 0.5.0",
"wtforms ~= 2.3.3",
"unidecode ~= 1.1.1",
"gunicorn ~= 20.0.4",
"bcrypt ~= 3.2.0",
"python-dotenv ~= 0.14.0",
"ipython ~= 7.31.1",
"sqlalchemy_utils ~= 0.36.8",
"psycopg2-binary ~= 2.9.10",
"sentry_sdk ~= 2.20.0",
"blinker ~= 1.9.0",
"arrow ~= 0.16.0",
"Flask-WTF ~= 0.14.3",
"boto3 ~= 1.35.37",
"Flask-Migrate ~= 2.5.3",
"flask_admin ~= 1.5.6",
"flask-cors ~= 3.0.9",
"watchtower ~= 0.8.0",
"sqlalchemy-utils == 0.36.8",
"jwcrypto ~= 0.8",
"yacron~=0.19.0",
"flask-debugtoolbar ~= 0.11.0",
"requests_oauthlib ~= 1.3.0",
"pyopenssl ~= 19.1.0",
"aiosmtpd ~= 1.2",
"dnspython ~= 2.7.0",
"coloredlogs ~= 14.0",
"pycryptodome ~= 3.9.8",
"phpserialize ~= 1.3",
"dkimpy == 1.0.5",
"pyotp ~= 2.4.0",
"flask_profiler ~= 1.8.1",
"facebook-sdk ~= 3.1.0",
"google-api-python-client ~= 1.12.3",
"google-auth-httplib2 ~= 0.0.4",
"python-gnupg ~= 0.4.6",
"webauthn ~= 0.4.7",
"flask ~= 1.1.2",
"flask_login ~= 0.5.0",
"wtforms ~= 2.3.3",
"unidecode ~= 1.1.1",
"gunicorn ~= 20.0.4",
"bcrypt ~= 3.2.0",
"python-dotenv ~= 0.14.0",
"ipython ~= 7.31.1",
"sqlalchemy_utils ~= 0.36.8",
"psycopg2-binary ~= 2.9.10",
"sentry_sdk ~= 2.20.0",
"blinker ~= 1.9.0",
"arrow ~= 0.16.0",
"Flask-WTF ~= 0.14.3",
"boto3 ~= 1.35.37",
"Flask-Migrate ~= 2.5.3",
"flask_admin ~= 1.5.6",
"flask-cors ~= 3.0.9",
"watchtower ~= 0.8.0",
"sqlalchemy-utils == 0.36.8",
"jwcrypto ~= 0.8",
"yacron~=0.19.0",
"flask-debugtoolbar ~= 0.11.0",
"requests_oauthlib ~= 1.3.0",
"pyopenssl ~= 19.1.0",
"aiosmtpd ~= 1.2",
"dnspython ~= 2.7.0",
"coloredlogs ~= 14.0",
"pycryptodome ~= 3.9.8",
"phpserialize ~= 1.3",
"dkimpy == 1.0.5",
"pyotp ~= 2.4.0",
"flask_profiler ~= 1.8.1",
"facebook-sdk ~= 3.1.0",
"google-api-python-client ~= 1.12.3",
"google-auth-httplib2 ~= 0.0.4",
"python-gnupg ~= 0.4.6",
"webauthn ~= 0.4.7",
# Git dependency until pyspf creates a new release
#"pyspf @ git+https://github.com/sdgathman/pyspf.git@665a6df079485a9824be0829e7d71088453db7f6",
"pyspf ~= 2.0.14",
# Git dependency until pyspf creates a new release
#"pyspf @ git+https://github.com/sdgathman/pyspf.git@665a6df079485a9824be0829e7d71088453db7f6",
"pyspf ~= 2.0.14",
"Flask-Limiter == 1.5",
"memory_profiler ~= 0.57.0",
"gevent ~= 24.11.1",
"email-validator ~= 2.2.0",
"PGPy == 0.5.4",
"coinbase-commerce ~= 1.0.1",
"requests ~= 2.25.1",
"newrelic ~= 8.8.0",
"flanker ~= 0.9.11",
"pyre2 ~= 0.3.6",
"tldextract ~= 3.1.2",
"flask-debugtoolbar-sqlalchemy ~= 0.2.0",
"twilio ~= 7.3.2",
"Deprecated ~= 1.2.13",
"MarkupSafe~=1.1.1",
"cryptography ~= 37.0.1",
"SQLAlchemy ~= 1.3.24",
"redis==5.2.1",
"newrelic-telemetry-sdk ~= 0.5.0",
"aiospamc == 0.10",
"itsdangerous ~= 1.1.0",
"werkzeug ~= 1.0.1",
"alembic ~= 1.4.3",
"limits ~= 4.0.1",
"strictyaml ~= 1.7.3",
"Flask-Limiter == 1.5",
"memory_profiler ~= 0.57.0",
"gevent ~= 24.11.1",
"email-validator ~= 2.2.0",
"PGPy == 0.5.4",
"coinbase-commerce ~= 1.0.1",
"requests ~= 2.25.1",
"newrelic ~= 8.8.0",
"flanker ~= 0.9.11",
"pyre2 ~= 0.3.6",
"tldextract ~= 3.1.2",
"flask-debugtoolbar-sqlalchemy ~= 0.2.0",
"twilio ~= 7.3.2",
"Deprecated ~= 1.2.13",
"MarkupSafe~=1.1.1",
"cryptography ~= 37.0.1",
"SQLAlchemy ~= 1.3.24",
"redis==5.2.1",
"newrelic-telemetry-sdk ~= 0.5.0",
"aiospamc == 0.10",
"itsdangerous ~= 1.1.0",
"werkzeug ~= 1.0.1",
"alembic ~= 1.4.3",
"limits ~= 4.0.1",
"strictyaml ~= 1.7.3",
"sl-pgp"
"sl-pgp",
]
[tool.black]
@@ -134,17 +131,19 @@ ignore = "H006,H013,H016,H017,H019,H021,H025,H030,H031,T003,J004,J018,T001"
[tool.uv]
# Declare sl-pgp-rs dependency link so uv can find it
find-links = ["https://github.com/simple-login/sl-pgp-rs/releases/download/0.1.1/index.html"]
find-links = [
"https://github.com/simple-login/sl-pgp-rs/releases/download/0.1.1/index.html",
]
[dependency-groups]
dev = [
"pytest ~= 7.0.0",
"pytest-cov ~= 3.0.0",
"pre-commit ~= 4.1.0",
"black ~= 22.1.0",
"djlint==1.34.1",
"pylint ~= 2.14.4",
"ruff ~= 0.1.5",
"pytest ~= 7.0.0",
"pytest-cov ~= 3.0.0",
"pre-commit ~= 4.1.0",
"black ~= 22.1.0",
"djlint==1.35.3",
"pylint ~= 2.14.4",
"ruff ~= 0.1.5",
]
[build-system]
+1 -1
View File
@@ -890,7 +890,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.custom_domain_search.delete_custom_domain") }}"
<form action="{{ url_for('admin.custom_domain_search.delete_custom_domain') }}"
method="POST"
id="deleteDomainForm{{ domain.id }}">
<div class="modal-body">
+17 -16
View File
@@ -60,7 +60,8 @@
{% if pu %}
<a href="?query={{ pu.partner_email }}&search_type=partner">{{ pu.partner_email }}</a>
<br><small class="text-muted"><a href="?query={{ pu.external_user_id }}&search_type=partner">{{ pu.external_user_id }}</a></small>
<br>
<small class="text-muted"><a href="?query={{ pu.external_user_id }}&search_type=partner">{{ pu.external_user_id }}</a></small>
{% else %}
<span class="text-muted">Not linked</span>
{% endif %}
@@ -262,7 +263,7 @@
{% endif %}
{% if user.enable_otp or user.fido_uuid %}
<form action="{{ url_for("admin.email_search.disable_2fa") }}"
<form action="{{ url_for('admin.email_search.disable_2fa') }}"
method="POST"
class="mb-2">
<input type="hidden" name="user_id" value="{{ user.id }}">
@@ -283,7 +284,7 @@
{% endif %}
{% if user.delete_on %}
<form action="{{ url_for("admin.email_search.stop_user_deletion") }}"
<form action="{{ url_for('admin.email_search.stop_user_deletion') }}"
method="POST"
class="mb-2">
<input type="hidden" name="user_id" value="{{ user.id }}">
@@ -378,7 +379,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.mark_abuser") }}"
<form action="{{ url_for('admin.email_search.mark_abuser') }}"
method="POST">
<div class="modal-body">
<input type="hidden" name="user_id" value="{{ user.id }}">
@@ -426,7 +427,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.unmark_abuser") }}"
<form action="{{ url_for('admin.email_search.unmark_abuser') }}"
method="POST">
<div class="modal-body">
<input type="hidden" name="user_id" value="{{ user.id }}">
@@ -475,7 +476,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.delete_partner_link") }}"
<form action="{{ url_for('admin.email_search.delete_partner_link') }}"
method="POST"
id="unlinkProtonForm{{ user.id }}">
<div class="modal-body">
@@ -545,7 +546,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.delete_user") }}"
<form action="{{ url_for('admin.email_search.delete_user') }}"
method="POST"
id="deleteUserForm{{ user.id }}">
<div class="modal-body">
@@ -613,7 +614,7 @@
<span>&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.update_subdomain_quota") }}"
<form action="{{ url_for('admin.email_search.update_subdomain_quota') }}"
method="POST"
id="subdomainQuotaForm{{ user.id }}">
<div class="modal-body">
@@ -649,7 +650,7 @@
<span>&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.update_directory_quota") }}"
<form action="{{ url_for('admin.email_search.update_directory_quota') }}"
method="POST"
id="directoryQuotaForm{{ user.id }}">
<div class="modal-body">
@@ -681,7 +682,7 @@
<div class="card-body">
<div class="row">
<div class="col-md-6 mb-3">
<form action="{{ url_for("admin.email_search.update_subdomain_quota") }}"
<form action="{{ url_for('admin.email_search.update_subdomain_quota') }}"
method="POST">
<input type="hidden" name="user_id" value="{{ user.id }}">
<label class="font-weight-bold">Subdomain Quota</label>
@@ -704,7 +705,7 @@
</form>
</div>
<div class="col-md-6 mb-3">
<form action="{{ url_for("admin.email_search.update_directory_quota") }}"
<form action="{{ url_for('admin.email_search.update_directory_quota') }}"
method="POST">
<input type="hidden" name="user_id" value="{{ user.id }}">
<label class="font-weight-bold">Directory Quota</label>
@@ -759,7 +760,7 @@
{% for mailbox in mboxes %}
<tr class="{% if highlight_mailbox_email and mailbox.email == highlight_mailbox_email %}
table-warning{% endif %}">
table-warning{% endif %}">
<td>
<code>{{ mailbox.id }}</code>
</td>
@@ -838,7 +839,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.set_default_mailbox") }}"
<form action="{{ url_for('admin.email_search.set_default_mailbox') }}"
method="POST">
<div class="modal-body">
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
@@ -882,7 +883,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.admin_reenable_mailbox") }}"
<form action="{{ url_for('admin.email_search.admin_reenable_mailbox') }}"
method="POST">
<div class="modal-body">
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
@@ -933,7 +934,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.send_mailbox_disable_warning") }}"
<form action="{{ url_for('admin.email_search.send_mailbox_disable_warning') }}"
method="POST">
<div class="modal-body">
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
@@ -975,7 +976,7 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
<form action="{{ url_for("admin.email_search.admin_disable_mailbox") }}"
<form action="{{ url_for('admin.email_search.admin_disable_mailbox') }}"
method="POST">
<div class="modal-body">
<input type="hidden" name="mailbox_id" value="{{ mailbox.id }}">
+5 -5
View File
@@ -25,7 +25,7 @@
<tr>
<td>{{ user.id }}</td>
<td>
<a href="{{ url_for("admin.email_search.index", query=user.email) }}">{{ user.email }}</a>
<a href="{{ url_for('admin.email_search.index', query=user.email) }}">{{ user.email }}</a>
</td>
{% if user.activated %}
@@ -40,7 +40,7 @@
<td class="text-success">
Enabled
<form class="d-inline"
action="{{ url_for("admin.email_domain_search.disable_user") }}"
action="{{ url_for('admin.email_domain_search.disable_user') }}"
method="POST">
<input type="hidden" name="user_id" value="{{ user.id }}">
<input type="hidden" name="query" value="{{ query }}">
@@ -65,7 +65,7 @@
<td>{{ user.updated_at }}</td>
<td>
<form class="d-inline"
action="{{ url_for("admin.email_search.update_subdomain_quota") }}"
action="{{ url_for('admin.email_search.update_subdomain_quota') }}"
method="POST">
<input type="hidden" name="user_id" value="{{ user.id }}">
<div class="input-group input-group-sm" style="max-width: 120px;">
@@ -89,7 +89,7 @@
<td class="flex">
<a href="?query={{ pu.partner_email }}">{{ pu.partner_email }}</a>
<form class="d-inline"
action="{{ url_for("admin.email_search.delete_partner_link") }}"
action="{{ url_for('admin.email_search.delete_partner_link') }}"
method="POST">
<input type="hidden" name="user_id" value="{{ user.id }}">
<button type="submit"
@@ -104,7 +104,7 @@
<td>
<form class="d-inline"
action="{{ url_for("admin.email_search.stop_user_deletion") }}"
action="{{ url_for('admin.email_search.stop_user_deletion') }}"
method="POST">
<input type="hidden" name="user_id" value="{{ user.id }}">
<button type="submit"
Generated
+4 -4
View File
@@ -443,7 +443,7 @@ wheels = [
[[package]]
name = "djlint"
version = "1.34.1"
version = "1.35.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "click" },
@@ -458,9 +458,9 @@ dependencies = [
{ name = "regex" },
{ name = "tqdm" },
]
sdist = { url = "https://files.pythonhosted.org/packages/c4/a8/b8ed0b5e924985d3b4272940f785a7bf5baa41713dc30a0c087939aaf7c8/djlint-1.34.1.tar.gz", hash = "sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346", size = 44066, upload-time = "2023-12-20T19:26:20.13Z" }
sdist = { url = "https://files.pythonhosted.org/packages/a7/e6/4b633476fa2ebbd09ade007f052617227fb0c250e7f708d6e56e9f6c4b85/djlint-1.35.3.tar.gz", hash = "sha256:780ea3e25662fca89033fa96ecf656099954d6f81dce039eac90f4bba3cbe850", size = 45902, upload-time = "2024-10-30T07:59:59.674Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/7f/0c/bf400cf2a7af5aaa45cc3c54805220dea0bc88b500b414379d37fd0aff12/djlint-1.34.1-py3-none-any.whl", hash = "sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8", size = 48988, upload-time = "2023-12-20T19:26:17.319Z" },
{ url = "https://files.pythonhosted.org/packages/cd/f9/1788c861b4f8aea24bc8f216e57877354f138a3730cafb407f8ec4cc6cd2/djlint-1.35.3-py3-none-any.whl", hash = "sha256:bf2f23798909f9c5a110925c369538383de0141f9a2be37ee0d26422d41b7543", size = 50744, upload-time = "2024-10-30T07:59:58.293Z" },
]
[[package]]
@@ -1912,7 +1912,7 @@ requires-dist = [
[package.metadata.requires-dev]
dev = [
{ name = "black", specifier = "~=22.1.0" },
{ name = "djlint", specifier = "==1.34.1" },
{ name = "djlint", specifier = "==1.35.3" },
{ name = "pre-commit", specifier = "~=4.1.0" },
{ name = "pylint", specifier = "~=2.14.4" },
{ name = "pytest", specifier = "~=7.0.0" },