Coverage for app/venv/lib/python3.14/site-packages/weblate/auth/tasks.py: 80%
18 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
5from datetime import timedelta
7from celery.schedules import crontab
8from django.conf import settings
9from django.utils import timezone
11from weblate.auth.models import Invitation, User
12from weblate.utils.celery import app
15@app.task(trail=False)
16def disable_expired() -> None:
17 for user in User.objects.filter(date_expires__lte=timezone.now(), is_active=True): 17 ↛ 19line 17 didn't jump to line 19 because the loop on line 17 never started
18 # Use save() to create audit log entry
19 user.is_active = False
20 user.save()
23@app.task(trail=False)
24def cleanup_invitations() -> None:
25 Invitation.objects.filter(
26 timestamp__lte=timezone.now() - timedelta(seconds=settings.AUTH_TOKEN_VALID)
27 ).delete()
30@app.on_after_finalize.connect
31def setup_periodic_tasks(sender, **kwargs) -> None:
32 sender.add_periodic_task(3600, disable_expired.s(), name="disable-expired")
33 sender.add_periodic_task(
34 crontab(hour=6, minute=6), cleanup_invitations.s(), name="cleanup_invitations"
35 )