diff --git a/taiga/projects/api.py b/taiga/projects/api.py index 3f256081..28ae6099 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -190,6 +190,8 @@ class MembershipViewSet(ModelCrudViewSet): if not object.token: object.token = str(uuid.uuid1()) + object.user = services.find_invited_user(object, default=object.user) + super().pre_save(object) def post_save(self, object, created=False): diff --git a/taiga/projects/services/__init__.py b/taiga/projects/services/__init__.py index 4f46c6af..236bbf54 100644 --- a/taiga/projects/services/__init__.py +++ b/taiga/projects/services/__init__.py @@ -35,3 +35,4 @@ from .members import create_members_in_bulk from .members import get_members_from_bulk from .invitations import send_invitation +from .invitations import find_invited_user diff --git a/taiga/projects/services/invitations.py b/taiga/projects/services/invitations.py index 34e23010..13ca2743 100644 --- a/taiga/projects/services/invitations.py +++ b/taiga/projects/services/invitations.py @@ -4,5 +4,23 @@ from djmail.template_mail import MagicMailBuilder def send_invitation(invitation): """Send an invitation email""" mbuilder = MagicMailBuilder() - email = mbuilder.membership_invitation(invitation.email, {"membership": invitation}) + if invitation.user: + template = mbuilder.membership_notification + else: + template = mbuilder.membership_invitation + email = template(invitation.email, {"membership": invitation}) email.send() + + +def find_invited_user(invitation, default=None): + """Check if the invited user is already a registered. + + :param invitation: Invitation object. + :param default: Default object to return if user is not found. + + :return: The user if it's found, othwerwise return `default`. + """ + try: + return type(invitation).user.get_queryset().filter(email=invitation.email).all()[0] + except IndexError: + return default diff --git a/taiga/projects/templates/emails/membership_notification-body-html.jinja b/taiga/projects/templates/emails/membership_notification-body-html.jinja new file mode 100644 index 00000000..efb01532 --- /dev/null +++ b/taiga/projects/templates/emails/membership_notification-body-html.jinja @@ -0,0 +1,12 @@ +{% extends "emails/base.jinja" %} + +{% block body %} +
+ Hi, +you have been added to the project '{{ membership.project }}'. + |
+