9
9
from django .contrib .auth .models import User
10
10
from django .core .exceptions import PermissionDenied
11
11
from django .db import transaction
12
- from django .db .models import Count , F
12
+ from django .db .models import Count , F , Q
13
13
from django .http import JsonResponse
14
14
from django .shortcuts import get_object_or_404 , render
15
15
from django .utils import timezone
@@ -104,8 +104,12 @@ def get_recipients(form):
104
104
- Translators of selected Locales
105
105
- Email/Notification opt-in status
106
106
"""
107
- locale_ids = sorted (split_ints (form .cleaned_data .get ("locales" )))
108
- project_ids = form .cleaned_data .get ("projects" )
107
+ locale_ids = Locale .objects .available ().values_list ("id" , flat = True )
108
+ project_ids = Project .objects .available ().values_list ("id" , flat = True )
109
+ if form .cleaned_data .get ("locale_toggle" ):
110
+ locale_ids = sorted (split_ints (form .cleaned_data .get ("locales" )))
111
+ if form .cleaned_data .get ("project_toggle" ):
112
+ project_ids = form .cleaned_data .get ("projects" )
109
113
110
114
locales = Locale .objects .filter (pk__in = locale_ids )
111
115
manager_ids = (
@@ -120,9 +124,10 @@ def get_recipients(form):
120
124
)
121
125
122
126
translations = Translation .objects .all ()
123
-
124
127
if form .cleaned_data .get ("contributors" ):
125
- recipients = User .objects .exclude (pk = - 1 )
128
+ recipients = User .objects .exclude (
129
+ Q (pk__in = manager_ids ) | Q (pk__in = translator_ids ) | Q (pk = - 1 )
130
+ )
126
131
127
132
if form .cleaned_data .get ("managers" ):
128
133
recipients = recipients | User .objects .filter (pk__in = manager_ids )
0 commit comments