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