Coverage for app/venv/lib/python3.14/site-packages/weblate/fonts/tasks.py: 43%
24 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 subprocess
7from celery.schedules import crontab
9from weblate.fonts.models import FONT_STORAGE, Font
10from weblate.fonts.utils import configure_fontconfig
11from weblate.trans.util import get_clean_env
12from weblate.utils.celery import app
15@app.task(trail=False)
16def cleanup_font_files() -> None:
17 """Remove stale fonts."""
18 try:
19 files = FONT_STORAGE.listdir(".")[1]
20 except OSError:
21 return
22 for name in files:
23 if name == "fonts.conf":
24 continue
25 if not Font.objects.filter(font=name).exists():
26 FONT_STORAGE.delete(name)
29@app.task(trail=False)
30def update_fonts_cache() -> None:
31 configure_fontconfig()
32 subprocess.run(
33 ["fc-cache"],
34 env=get_clean_env(),
35 check=True,
36 capture_output=True,
37 )
40@app.on_after_finalize.connect
41def setup_periodic_tasks(sender, **kwargs) -> None:
42 sender.add_periodic_task(
43 crontab(hour=0, minute=55), cleanup_font_files.s(), name="font-files-cleanup"
44 )