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

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

2# 

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

4 

5""" 

6Wrapper around django.contrib.messages to work with Django REST Framework. 

7 

8It also ignories messages without request object (for example from CLI). 

9""" 

10 

11from __future__ import annotations 

12 

13from typing import TYPE_CHECKING 

14 

15from django.contrib.messages import add_message as django_add_message 

16from django.contrib.messages import constants 

17from django.http import HttpRequest 

18 

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 

21 

22 

23def get_request(request: HttpRequest): 

24 """Return Django request object even for DRF requests.""" 

25 return getattr(request, "_request", request) 

26 

27 

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 ) 

42 

43 

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) 

51 

52 

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) 

60 

61 

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) 

69 

70 

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) 

78 

79 

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) 

87 

88 

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"