22from django .http import JsonResponse
33from django .shortcuts import render
44from rest_framework .views import APIView
5- from django .core import mail
65
76from users .models import CustomUser
87from .utils import send_mass_mail
98from .models import MailingSchema
10- from .utils import get_users_groups , new_connection
9+ from .utils import prepare_mail_data
1110
1211
1312class SendMailView (APIView ):
1413 def post (self , request ):
15- users = request .POST .getlist ("users[]" )
16- schema_id = request .POST ["schemas" ]
17- subject = request .POST ["subject" ]
18- mail_schema = MailingSchema .objects .get (pk = schema_id )
19- context = {}
20- for variable_name in mail_schema .schema :
21- key_in_post = "field-" + variable_name
22- if key_in_post in request .POST :
23- context [variable_name ] = request .POST [key_in_post ]
24- users_to_send = CustomUser .objects .filter (pk__in = users )
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 )
14+ mail_data_dict = prepare_mail_data (request .POST )
15+ send_mass_mail (
16+ mail_data_dict ["users_to_send" ],
17+ mail_data_dict ["subject" ],
18+ mail_data_dict ["mail_schema_template" ],
19+ mail_data_dict ["context" ],
20+ )
3021 return JsonResponse ({"detail" : "ok" })
3122
3223
@@ -47,11 +38,11 @@ class MailingTemplateRender:
4738
4839 @classmethod
4940 def render_template (
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 ,
41+ cls ,
42+ request ,
43+ schema_id : int | None = None ,
44+ picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
45+ unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
5546 ):
5647 return render (
5748 request ,
@@ -65,10 +56,10 @@ def render_template(
6556
6657 @classmethod
6758 def _get_context (
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 ,
59+ cls ,
60+ schema_id : int | None = None ,
61+ picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
62+ unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
7263 ):
7364 context = cls ._get_schema_context (schema_id )
7465 context += cls ._get_users_context (picked_users , unpicked_users )
@@ -89,9 +80,9 @@ def _get_schema_context(cls, schema_id: int | None = None):
8980
9081 @classmethod
9182 def _get_users_context (
92- cls ,
93- picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
94- unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
83+ cls ,
84+ picked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
85+ unpicked_users : list [CustomUser ] | django .db .models .QuerySet = None ,
9586 ):
9687 if picked_users is None :
9788 picked_users = []
0 commit comments