from django.http import HttpResponseRedirect from django import forms from django.shortcuts import render class SMSForm(forms.Form): _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) send_to_parents = forms.BooleanField(required=False) send_to_emergency_contacts = forms.BooleanField(required=False) only_include_active_travellers = forms.BooleanField(initial=True, required=False) message = forms.CharField(label="Message", max_length=320, widget=forms.Textarea) def send_sms(send_sms_mixin, request, queryset): if 'confirm' in request.POST: message = request.POST["message"] send_to_parents = False if request.POST.get("send_to_parents"): send_to_parents = True send_to_emergency_contacts = False if request.POST.get("send_to_emergency_contacts"): send_to_emergency_contacts = True only_include_active_travellers = False if request.POST.get("only_include_active_travellers"): only_include_active_travellers = True total = 0 numbers = [] for traveller in queryset: if only_include_active_travellers and not traveller._is_active(): continue numbers.append(traveller.get_parsed_numbers(parents=send_to_parents, emergency=send_to_emergency_contacts)) len(numbers) send_sms_mixin.message_user(request, f"SMS has been sent to {total} recipients") return HttpResponseRedirect(request.get_full_path()) form = SMSForm(initial={'_selected_action': queryset.values_list('id', flat=True)}) return render(request, 'admin/sms_form.html', context={'form': form, 'items': queryset})