Update admin theme/layout and refresh README details.

Align the project baseline with the latest admin interface styling and layout structure while documenting setup and usage updates in README.
This commit is contained in:
vlad
2026-07-14 17:12:28 +03:00
commit 86cc3fa541
278 changed files with 19416 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
from app.db.seed import run_seed
from app.modules.users.repository import get_user_by_email
def test_seed_ensures_admin_is_superuser():
admin = get_user_by_email("admin@compton.example")
assert admin is not None
admin.is_superuser = False
from app.modules.users import repository
repository.update_user(admin)
run_seed(include_demo_pages=False)
refreshed = get_user_by_email("admin@compton.example")
assert refreshed is not None
assert refreshed.is_superuser is True
def test_seed_ensures_ops_is_not_superuser():
ops = get_user_by_email("ops@compton.example")
assert ops is not None
ops.is_superuser = True
from app.modules.users import repository
repository.update_user(ops)
run_seed(include_demo_pages=False)
refreshed = get_user_by_email("ops@compton.example")
assert refreshed is not None
assert refreshed.is_superuser is False
+44
View File
@@ -0,0 +1,44 @@
from __future__ import annotations
from datetime import UTC, datetime, timedelta
from app.core.database import session_scope
from app.db.token_cleanup import cleanup_expired_tokens
from app.modules.auth.models import EmailVerificationToken, PasswordResetToken, RefreshToken
from app.modules.users.repository import get_user_by_email
def test_cleanup_expired_tokens_removes_stale_rows():
user = get_user_by_email("admin@compton.example")
now = datetime.now(UTC)
with session_scope() as db:
db.add(
RefreshToken(
user_id=user.id,
token_hash="f" * 64,
family_id="fam-cleanup-1",
expires_at=now - timedelta(days=2),
revoked_at=now - timedelta(days=2),
)
)
db.add(
PasswordResetToken(
user_id=user.id,
token_hash="e" * 64,
expires_at=now - timedelta(days=1),
used_at=None,
)
)
db.add(
EmailVerificationToken(
user_id=user.id,
token_hash="d" * 64,
expires_at=now - timedelta(days=1),
used_at=None,
)
)
result = cleanup_expired_tokens(retention_days=1)
assert result["refresh_tokens_deleted"] >= 1
assert result["password_reset_tokens_deleted"] >= 1
assert result["email_verification_tokens_deleted"] >= 1