Skip to content
Snippets Groups Projects
Commit 93cfdc0f authored by Tore.Brede's avatar Tore.Brede
Browse files

GREG-94: Adding sending of e-mail for invitations

parent 62d16b4d
No related branches found
No related tags found
1 merge request!136GREG-94: Resend invitation
...@@ -23,6 +23,7 @@ from greg.models import Identity, InvitationLink, Person, Invitation ...@@ -23,6 +23,7 @@ from greg.models import Identity, InvitationLink, Person, Invitation
from greg.permissions import IsSponsor from greg.permissions import IsSponsor
from gregui.api.serializers.guest import GuestRegisterSerializer from gregui.api.serializers.guest import GuestRegisterSerializer
from gregui.api.serializers.invitation import InviteGuestSerializer from gregui.api.serializers.invitation import InviteGuestSerializer
from gregui.mailutils import send_invite_mail
from gregui.models import GregUserProfile from gregui.models import GregUserProfile
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -76,8 +77,7 @@ class InvitationView(CreateAPIView, DestroyAPIView): ...@@ -76,8 +77,7 @@ class InvitationView(CreateAPIView, DestroyAPIView):
invitation__role__person_id=person.id, invitation__role__person_id=person.id,
invitation__role__sponsor_id=sponsor_user.sponsor.id, invitation__role__sponsor_id=sponsor_user.sponsor.id,
) )
# TODO: send email to invited guest send_invite_mail(invitationlink)
print(invitationlink)
return Response(status=status.HTTP_201_CREATED) return Response(status=status.HTTP_201_CREATED)
def delete(self, request, *args, **kwargs) -> Response: def delete(self, request, *args, **kwargs) -> Response:
...@@ -310,7 +310,6 @@ class ResendInvitationView(UpdateModelMixin, APIView): ...@@ -310,7 +310,6 @@ class ResendInvitationView(UpdateModelMixin, APIView):
# expire=timezone.now() + datetime.timedelta(days=30), # expire=timezone.now() + datetime.timedelta(days=30),
# ) # )
# TODO: send email to invited guest send_invite_mail(link)
print(link)
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK)
import logging
from typing import Optional
from typing import Union from typing import Union
from django.conf import settings from django.conf import settings
from django.template.context import Context from django.template.context import Context
from django_q.tasks import async_task from django_q.tasks import async_task
from greg.models import InvitationLink
from gregui.models import EmailTemplate from gregui.models import EmailTemplate
logger = logging.getLogger(__name__)
def prepare_arguments( def prepare_arguments(
template: EmailTemplate, context: dict[str, str], mail_to: str template: EmailTemplate, context: dict[str, str], mail_to: str
) -> dict[str, Union[str, list[str]]]: ) -> dict[str, Union[str, list[str]]]:
"""Combine input to a dict ready for use as arguments ti django's send_mail""" """Combine input to a dict ready for use as arguments ti django's send_mail"""
return { return {
...@@ -19,7 +25,7 @@ def prepare_arguments( ...@@ -19,7 +25,7 @@ def prepare_arguments(
def registration_template( def registration_template(
institution: str, sponsor: str, mail_to: str institution: str, sponsor: str, mail_to: str
) -> dict[str, Union[str, list[str]]]: ) -> dict[str, Union[str, list[str]]]:
""" """
Prepare email for registration Prepare email for registration
...@@ -62,3 +68,18 @@ def send_registration_mail(mail_to: str, sponsor: str) -> str: ...@@ -62,3 +68,18 @@ def send_registration_mail(mail_to: str, sponsor: str) -> str:
def send_confirmation_mail(mail_to: str, guest: str) -> str: def send_confirmation_mail(mail_to: str, guest: str) -> str:
arguments = confirmation_template(guest, mail_to) arguments = confirmation_template(guest, mail_to)
return async_task("django.core.mail.send_mail", **arguments) return async_task("django.core.mail.send_mail", **arguments)
def send_invite_mail(link: InvitationLink) -> Optional[str]:
email_address = link.invitation.role.person.private_email
sponsor = link.invitation.role.sponsor
if not email_address:
logger.warning(f"No e-mail address found for invitation link with ID: {link.id}")
return None
if not sponsor:
logger.warning("Unable to determine sponsor for invitation link with ID: {link.id}")
return None
return send_registration_mail(email_address.value, f"{sponsor.first_name} {sponsor.last_name}")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment