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

1# Copyright © Michal Čihař <michal@weblate.org> 

2# 

3# SPDX-License-Identifier: GPL-3.0-or-later 

4 

5from datetime import timedelta 

6 

7from celery.schedules import crontab 

8from django.conf import settings 

9from django.utils import timezone 

10 

11from weblate.auth.models import Invitation, User 

12from weblate.utils.celery import app 

13 

14 

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() 

21 

22 

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() 

28 

29 

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 )