Coverage for app/venv/lib/python3.14/site-packages/weblate/screenshots/tasks.py: 43%
19 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
5import os.path
7from celery.schedules import crontab
8from django.core.files.storage import DefaultStorage
10from weblate.screenshots.models import Screenshot
11from weblate.utils.celery import app
14@app.task(trail=False)
15def cleanup_screenshot_files() -> None:
16 """Remove stale screenshots."""
17 storage = DefaultStorage()
18 try:
19 files = storage.listdir("screenshots")[1]
20 except OSError:
21 return
22 for name in files:
23 fullname = os.path.join("screenshots", name)
24 if not Screenshot.objects.filter(image=fullname).exists():
25 storage.delete(fullname)
28@app.on_after_finalize.connect
29def setup_periodic_tasks(sender, **kwargs) -> None:
30 sender.add_periodic_task(
31 crontab(hour=0, minute=35),
32 cleanup_screenshot_files.s(),
33 name="screenshot-files-cleanup",
34 )