1818MULTIPLE_OWNERS_MSG = _ ("Please select recipients only with the same owner." )
1919BAD_RESULT_MSG = _ ("Bad result - no recipients! Make another choice." )
2020
21+
2122@admin .action (description = _ (
2223 "Create a mailing out for selected objects" ))
23- def make_mailing_out (modeladmin , request , queryset ):
24+ def make_mailing_out (modeladmin , request , queryset ) -> HttpResponseRedirect :
2425 if not have_massmail_accounts (request )\
2526 or multiple_owners (request , queryset ):
2627 return HttpResponseRedirect (request .path )
2728
2829 q_params = Q (massmail = False )
2930 q_params |= Q (disqualified = True )
3031 if queryset .filter (q_params ).exists ():
31- queryset = queryset .exclude (q_params )
32+ queryset = queryset .exclude (q_params )
3233 messages .warning (
3334 request ,
3435 _ ("Unsubscribed users were excluded from the mailing list." )
@@ -60,7 +61,7 @@ def make_mailing_out(modeladmin, request, queryset):
6061
6162
6263@admin .action (description = _ ("Merge selected mailing outs" ))
63- def merge_mailing_outs (modeladmin , request , queryset ):
64+ def merge_mailing_outs (modeladmin , request , queryset ) -> HttpResponseRedirect :
6465 if any ((multiple_owners (request , queryset ),
6566 multiple_content_types (request , queryset ),
6667 multiple_messages (request , queryset ))):
@@ -102,7 +103,10 @@ def merge_mailing_outs(modeladmin, request, queryset):
102103
103104
104105@admin .action (description = _ ("Specify VIP recipients" ))
105- def specify_vip_recipients (modeladmin , request , queryset ):
106+ def specify_vip_recipients (modeladmin , request , queryset ) -> HttpResponseRedirect :
107+ if multiple_owners (request , queryset ):
108+ return HttpResponseRedirect (request .path )
109+
106110 owner = queryset [0 ].owner
107111 try :
108112 mea = EmailAccount .objects .get (owner = owner , main = True )
@@ -113,9 +117,6 @@ def specify_vip_recipients(modeladmin, request, queryset):
113117 )
114118 return HttpResponseRedirect (request .path )
115119
116- if multiple_owners (request , queryset ):
117- return HttpResponseRedirect (request .path )
118-
119120 selected = list (set (request .POST .getlist (ACTION_CHECKBOX_NAME )))
120121 selected_ids = [int (x ) for x in selected ]
121122 content_type = ContentType .objects .get_for_model (queryset .model )
@@ -142,6 +143,23 @@ def specify_vip_recipients(modeladmin, request, queryset):
142143 return HttpResponseRedirect (request .path )
143144
144145
146+ @admin .action (description = _ ("Remove the recipient's VIP status" ))
147+ def remove_vip_status (modeladmin , request , queryset ) -> HttpResponseRedirect :
148+ selected = list (set (request .POST .getlist (ACTION_CHECKBOX_NAME )))
149+ selected_ids = [int (x ) for x in selected ]
150+ content_type = ContentType .objects .get_for_model (queryset .model )
151+ mcs = MassContact .objects .filter (
152+ object_id__in = selected_ids ,
153+ content_type = content_type
154+ )
155+ mcs .delete ()
156+ messages .success (
157+ request ,
158+ _ ("The VIP status has been successfully removed from the selected recipients." )
159+ )
160+ return HttpResponseRedirect (request .path )
161+
162+
145163def multiple_content_types (request , queryset ):
146164 message = _ ("Please select mailings with only the same recipient type." )
147165 return multiple_value (request , queryset , 'content_type' , message )
0 commit comments