Skip to content

Commit 886eb46

Browse files
fix: delete expired accounts
1 parent 0a2b3a8 commit 886eb46

File tree

3 files changed

+11
-14
lines changed

3 files changed

+11
-14
lines changed

app/db/crud/user.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import asyncio
21
from copy import deepcopy
32
from datetime import UTC, datetime, timedelta, timezone
43
from enum import Enum
@@ -201,6 +200,7 @@ async def get_expired_users(
201200
if admin_id:
202201
query = query.where(User.admin_id == admin_id)
203202

203+
204204
return (await db.execute(query)).unique().scalars().all()
205205

206206

@@ -503,10 +503,7 @@ async def remove_users(db: AsyncSession, db_users: list[User]):
503503
"""
504504
user_ids = [user.id for user in db_users]
505505

506-
# Delete related subscription updates first
507-
await db.execute(delete(UserSubscriptionUpdate).where(UserSubscriptionUpdate.user_id.in_(user_ids)))
508-
509-
await asyncio.gather(*[db.delete(user) for user in db_users])
506+
await db.execute(delete(User).where(User.id.in_(user_ids)))
510507
await db.commit()
511508

512509

app/operation/__init__.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
get_user,
1515
get_user_template,
1616
)
17-
from app.db.crud.user import get_user_by_id
1817
from app.db.crud.admin import get_admin_by_id
18+
from app.db.crud.user import get_user_by_id
1919
from app.db.models import Admin as DBAdmin, CoreConfig, Group, Node, ProxyHost, User, UserTemplate
2020
from app.models.admin import AdminDetails
2121
from app.models.group import BulkGroup
@@ -50,19 +50,18 @@ async def raise_error(self, message: str, code: int, db: AsyncSession | None = N
5050

5151
async def validate_dates(self, start: dt | None, end: dt | None) -> tuple[dt, dt]:
5252
"""Validate if start and end dates are correct and if end is after start."""
53+
54+
start_date = None
55+
end_date = None
5356
try:
5457
if start:
5558
start_date = fix_datetime_timezone(start)
56-
else:
57-
start_date = dt.now(tz.utc) - td(days=30)
5859

5960
if end:
6061
end_date = fix_datetime_timezone(end)
61-
else:
62-
end_date = dt.now(tz.utc)
6362

6463
# Compare dates only after both are set
65-
if end_date < start_date:
64+
if (start_date and end_date) and end_date < start_date:
6665
await self.raise_error(message="Start date must be before end date", code=400)
6766

6867
return start_date, end_date

app/operation/user.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,8 @@ async def delete_expired_users(
369369
self,
370370
db: AsyncSession,
371371
admin: AdminDetails,
372-
expired_after: dt = None,
373-
expired_before: dt = None,
372+
expired_after: dt | None = None,
373+
expired_before: dt | None = None,
374374
admin_username: str = None,
375375
) -> RemoveUsersResponse:
376376
"""
@@ -382,6 +382,7 @@ async def delete_expired_users(
382382
"""
383383

384384
expired_after, expired_before = await self.validate_dates(expired_after, expired_before)
385+
385386
if admin_username:
386387
admin_id = (await self.get_validated_admin(db, admin_username)).id
387388
else:
@@ -390,7 +391,7 @@ async def delete_expired_users(
390391
await remove_users(db, users)
391392

392393
username_list = [row.username for row in users]
393-
self.remove_users_logger(users=username_list, by=admin.username)
394+
await self.remove_users_logger(users=username_list, by=admin.username)
394395

395396
return RemoveUsersResponse(users=username_list, count=len(username_list))
396397

0 commit comments

Comments
 (0)