def invite_user(self, from_user, to_email, role=BaseMembership.ROLE_MEMBER, message=None): if Invitation.objects.filter(signup_code__email=to_email).exists(): raise ValidationError( 'The email address you entered has already been invited to join a team.' ) try: if User.objects.get(email=to_email): raise ValidationError('This user is already apart of a team.') except User.DoesNotExist: # Send an invite if there is not an email address associated with that user invite = Invitation.invite(from_user, to_email, message, send=False) membership, created = self.memberships.get_or_create( invitation=invite, defaults={ "role": role, "state": BaseMembership.STATE_INVITED }) invite.send_invite() signals.invited_user.send(sender=self, membership=membership) return membership