Ejemplo n.º 1
0
    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