示例#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)
示例#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)
示例#3
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
示例#4
0
def test_find_invitations_by_org(session):  # pylint:disable=unused-argument
    """Assert that Invitations for a specified org can be retrieved."""
    invitation = factory_invitation_model(session=session, status='PENDING')
    session.add(invitation)
    session.commit()

    found_invitations = InvitationModel.find_invitations_by_org(
        invitation.membership[0].org_id)
    assert found_invitations
    assert len(found_invitations) == 1
    assert found_invitations[0].membership[0].org_id == invitation.membership[
        0].org_id
    assert invitation.invitation_status_code == 'PENDING'