Skip to content

Commit 8c27854

Browse files
Create remove_vip_status action
1 parent e610b65 commit 8c27854

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

massmail/admin_actions.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@
1818
MULTIPLE_OWNERS_MSG = _("Please select recipients only with the same owner.")
1919
BAD_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+
145163
def 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

Comments
 (0)