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)
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)
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
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'