Coverage for app/venv/lib/python3.14/site-packages/weblate/utils/messages.py: 46%
29 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
5"""
6Wrapper around django.contrib.messages to work with Django REST Framework.
8It also ignories messages without request object (for example from CLI).
9"""
11from __future__ import annotations
13from typing import TYPE_CHECKING
15from django.contrib.messages import add_message as django_add_message
16from django.contrib.messages import constants
17from django.http import HttpRequest
19if TYPE_CHECKING: 19 ↛ 20line 19 didn't jump to line 20 because the condition on line 19 was never true
20 from weblate.auth.models import HttpRequest
23def get_request(request: HttpRequest):
24 """Return Django request object even for DRF requests."""
25 return getattr(request, "_request", request)
28def add_message(
29 request: HttpRequest | None,
30 level: int,
31 message: str,
32 extra_tags: str = "",
33) -> None:
34 if request is not None: 34 ↛ 35line 34 didn't jump to line 35 because the condition on line 34 was never true
35 django_add_message(
36 get_request(request),
37 level,
38 message,
39 extra_tags=extra_tags,
40 fail_silently=True,
41 )
44def debug(
45 request: HttpRequest | None,
46 message: str,
47 extra_tags: str = "",
48) -> None:
49 """Add a message with the ``DEBUG`` level."""
50 add_message(request, constants.DEBUG, message, extra_tags)
53def info(
54 request: HttpRequest | None,
55 message: str,
56 extra_tags: str = "",
57) -> None:
58 """Add a message with the ``INFO`` level."""
59 add_message(request, constants.INFO, message, extra_tags)
62def success(
63 request: HttpRequest | None,
64 message: str,
65 extra_tags: str = "",
66) -> None:
67 """Add a message with the ``SUCCESS`` level."""
68 add_message(request, constants.SUCCESS, message, extra_tags)
71def warning(
72 request: HttpRequest | None,
73 message: str,
74 extra_tags: str = "",
75) -> None:
76 """Add a message with the ``WARNING`` level."""
77 add_message(request, constants.WARNING, message, extra_tags)
80def error(
81 request: HttpRequest | None,
82 message: str,
83 extra_tags: str = "",
84) -> None:
85 """Add a message with the ``ERROR`` level."""
86 add_message(request, constants.ERROR, message, extra_tags)
89def get_message_kind(tags):
90 if "error" in tags:
91 return "danger"
92 for tag in ["info", "success", "warning", "danger"]:
93 if tag in tags:
94 return tag
95 return "info"