22from django .http import JsonResponse
33from django .shortcuts import render
44from rest_framework .views import APIView
5+ from django .core import mail
56
67from users .models import CustomUser
78from .utils import send_mass_mail
89from .models import MailingSchema
10+ from .utils import get_users_groups , new_connection
911
1012
1113class SendMailView (APIView ):
@@ -20,7 +22,11 @@ def post(self, request):
2022 if key_in_post in request .POST :
2123 context [variable_name ] = request .POST [key_in_post ]
2224 users_to_send = CustomUser .objects .filter (pk__in = users )
23- send_mass_mail (users_to_send , subject , mail_schema .template , context )
25+ users_groups = get_users_groups (users_to_send )
26+ connection = mail .get_connection ()
27+ for group in users_groups :
28+ send_mass_mail (users_to_send , subject , mail_schema .template , context , connection )
29+ connection = new_connection (connection )
2430 return JsonResponse ({"detail" : "ok" })
2531
2632
@@ -41,11 +47,11 @@ class MailingTemplateRender:
4147
4248 @classmethod
4349 def render_template (
44- cls ,
45- request ,
46- schema_id : int | None = None ,
47- picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
48- unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
50+ cls ,
51+ request ,
52+ schema_id : int | None = None ,
53+ picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
54+ unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
4955 ):
5056 return render (
5157 request ,
@@ -59,10 +65,10 @@ def render_template(
5965
6066 @classmethod
6167 def _get_context (
62- cls ,
63- schema_id : int | None = None ,
64- picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
65- unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
68+ cls ,
69+ schema_id : int | None = None ,
70+ picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
71+ unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
6672 ):
6773 context = cls ._get_schema_context (schema_id )
6874 context += cls ._get_users_context (picked_users , unpicked_users )
@@ -83,9 +89,9 @@ def _get_schema_context(cls, schema_id: int | None = None):
8389
8490 @classmethod
8591 def _get_users_context (
86- cls ,
87- picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
88- unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
92+ cls ,
93+ picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
94+ unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
8995 ):
9096 if picked_users is None :
9197 picked_users = []
0 commit comments