Coverage for app/venv/lib/python3.14/site-packages/weblate/accounts/data.py: 85%

9 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 

4from __future__ import annotations 

5 

6from typing import TYPE_CHECKING 

7 

8from weblate.accounts.notifications import NotificationFrequency, NotificationScope 

9 

10if TYPE_CHECKING: 10 ↛ 11line 10 didn't jump to line 11 because the condition on line 10 was never true

11 from weblate.auth.models import User 

12 

13DEFAULT_NOTIFICATIONS = [ 

14 ( 

15 NotificationScope.SCOPE_ALL, 

16 NotificationFrequency.FREQ_INSTANT, 

17 "MentionCommentNotificaton", 

18 ), 

19 ( 

20 NotificationScope.SCOPE_WATCHED, 

21 NotificationFrequency.FREQ_INSTANT, 

22 "LastAuthorCommentNotificaton", 

23 ), 

24 ( 

25 NotificationScope.SCOPE_WATCHED, 

26 NotificationFrequency.FREQ_INSTANT, 

27 "MentionCommentNotificaton", 

28 ), 

29 ( 

30 NotificationScope.SCOPE_WATCHED, 

31 NotificationFrequency.FREQ_INSTANT, 

32 "NewAnnouncementNotificaton", 

33 ), 

34 ( 

35 NotificationScope.SCOPE_WATCHED, 

36 NotificationFrequency.FREQ_WEEKLY, 

37 "NewStringNotificaton", 

38 ), 

39 ( 

40 NotificationScope.SCOPE_ADMIN, 

41 NotificationFrequency.FREQ_INSTANT, 

42 "MergeFailureNotification", 

43 ), 

44 ( 

45 NotificationScope.SCOPE_ADMIN, 

46 NotificationFrequency.FREQ_INSTANT, 

47 "ParseErrorNotification", 

48 ), 

49 ( 

50 NotificationScope.SCOPE_ADMIN, 

51 NotificationFrequency.FREQ_INSTANT, 

52 "NewTranslationNotificaton", 

53 ), 

54 ( 

55 NotificationScope.SCOPE_ADMIN, 

56 NotificationFrequency.FREQ_INSTANT, 

57 "NewAlertNotificaton", 

58 ), 

59 ( 

60 NotificationScope.SCOPE_ADMIN, 

61 NotificationFrequency.FREQ_INSTANT, 

62 "NewAnnouncementNotificaton", 

63 ), 

64] 

65 

66 

67def create_default_notifications(user: User) -> None: 

68 for scope, frequency, notification in DEFAULT_NOTIFICATIONS: 

69 user.subscription_set.get_or_create( 

70 scope=scope, notification=notification, defaults={"frequency": frequency} 

71 )