Beispiel #1
0
    def get_invitations_for_org(org_id, status=None, token_info: Dict = None):
        """Get invitations for an org."""
        org_model = OrgModel.find_by_org_id(org_id)
        if not org_model:
            return None

        if status:
            status = InvitationStatus[status]

        # If staff return full list
        if 'staff' in token_info.get('realm_access').get('roles'):
            return InvitationModel.find_pending_invitations_by_org(org_id)

        current_user: UserService = UserService.find_by_jwt_token(token_info)
        current_user_membership: MembershipModel = \
            MembershipModel.find_membership_by_user_and_org(user_id=current_user.identifier, org_id=org_id)

        # If no active membership return empty array
        if current_user_membership is None or \
                current_user_membership.status != Status.ACTIVE.value:
            return []

        # Ensure either ADMIN or COORDINATOR
        if current_user_membership.membership_type_code == USER:
            return []

        return InvitationModel.find_invitations_by_org(org_id=org_id, status=status)
Beispiel #2
0
    def get_invitations_for_org(org_id, status=None, **kwargs):
        """Get invitations for an org."""
        user_from_context: UserContext = kwargs['user_context']
        org_model = OrgModel.find_by_org_id(org_id)
        if not org_model:
            return None

        if status:
            status = InvitationStatus[status]

        # If staff return full list
        if user_from_context.is_staff():
            return InvitationModel.find_pending_invitations_by_org(org_id)

        current_user: UserService = UserService.find_by_jwt_token()
        current_user_membership: MembershipModel = \
            MembershipModel.find_membership_by_user_and_org(user_id=current_user.identifier, org_id=org_id)

        # If no active membership return empty array
        if current_user_membership is None or \
                current_user_membership.status != Status.ACTIVE.value:
            return []

        # Ensure either ADMIN or COORDINATOR
        if current_user_membership.membership_type_code == USER:
            return []

        return InvitationModel.find_invitations_by_org(org_id=org_id,
                                                       status=status)
Beispiel #3
0
def test_find_pending_invitations_by_org(session):  # pylint:disable=unused-argument
    """Assert that an Invitation can retrieved by the org id."""
    invitation = factory_invitation_model(session=session, status='PENDING')
    session.add(invitation)
    session.commit()

    retrieved_invitation = InvitationModel.find_pending_invitations_by_org(
        invitation.membership[0].org_id)
    assert len(retrieved_invitation) == 1
    assert retrieved_invitation[
        0].recipient_email == invitation.recipient_email
Beispiel #4
0
 def get_invitations_by_org_id(org_id, status, token_info: Dict = None):
     """Get invitations for an org."""
     check_auth(token_info, org_id=org_id, one_of_roles=(OWNER, ADMIN))
     collection = []
     if status == 'ALL':
         invitations = InvitationModel.find_invitations_by_org(org_id)
     else:
         invitations = InvitationModel.find_pending_invitations_by_org(
             org_id)
     for invitation in invitations:
         collection.append(Invitation(invitation).as_dict())
     return collection