Add API for sending emails for signupees

This commit is contained in:
Aarni Halinen
2020-11-07 21:32:49 +02:00
parent 00c6920c8a
commit b1921d4926
4 changed files with 45 additions and 3 deletions
+23 -1
View File
@@ -21,7 +21,7 @@ from jsonschema.exceptions import ValidationError
from webapp.models import *
from webapp.serializers import *
from webapp.utils import decode_base64_file
from webapp.utils import admin_send_email_signupees, decode_base64_file
class SignupPermission(BasePermission):
@@ -105,6 +105,28 @@ class SignupFormViewSet(ModelViewSet):
return SignupForm.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time')
@action(detail=True, methods=['post'])
def sendemail(self, request, pk=None, *args, **kwargs):
subject = request.data["subject"]
content = request.data["content"]
mode = request.data["mode"]
queryset = self.filter_queryset(self.get_queryset())
filter = {'pk': pk}
signupForm = get_object_or_404(queryset, **filter)
if (mode == "all"):
admin_send_email_signupees(signupForm.signups, subject, content)
return JsonResponse(status=201, data={"message": "Email sent"})
elif (mode == "actual"):
admin_send_email_signupees(signupForm.signups, subject, content)
return JsonResponse(status=201, data={"message": "Email sent"})
elif (mode == "reserved"):
admin_send_email_signupees(signupForm.signups, subject, content)
return JsonResponse(status=201, data={"message": "Email sent"})
else:
return JsonResponse(status=400, data={"error": f"Bad mode '{mode}'"})
class SignupViewSet(ModelViewSet):
queryset = Signup.objects.filter(deleted=False)
serializer_class = SignupSerializer