def get_members_for_org( org_id, status=Status.ACTIVE.name, # pylint:disable=too-many-return-statements membership_roles=ALL_ALLOWED_ROLES, **kwargs): """Get members of org.Fetches using status and roles.""" org_model = OrgModel.find_by_org_id(org_id) if not org_model: return None user_from_context: UserContext = kwargs['user_context'] status = Status.ACTIVE.value if status is None else Status[status].value membership_roles = ALL_ALLOWED_ROLES if membership_roles is None else membership_roles # If staff return full list if user_from_context.is_staff(): return MembershipModel.find_members_by_org_id_by_status_by_roles( org_id, membership_roles, status) 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 or pending membership return empty array if current_user_membership is None or \ current_user_membership.status == Status.INACTIVE.value or \ current_user_membership.status == Status.REJECTED.value: return [] # If pending approval, return empty for active, array of self only for pending if current_user_membership.status == Status.PENDING_APPROVAL.value: return [current_user_membership ] if status == Status.PENDING_APPROVAL.value else [] # If active status for current user, then check organizational role if current_user_membership.status == Status.ACTIVE.value: if current_user_membership.membership_type_code in (ADMIN, COORDINATOR): return MembershipModel.find_members_by_org_id_by_status_by_roles( org_id, membership_roles, status) return MembershipModel.find_members_by_org_id_by_status_by_roles(org_id, membership_roles, status) \ if status == Status.ACTIVE.value else [] return []
def get_members_for_org( org_id, status=Status.ACTIVE, # pylint:disable=too-many-return-statements membership_roles=ALL_ALLOWED_ROLES, token_info: Dict = None): """Get members of org.Fetches using status and roles.""" org_model = OrgModel.find_by_org_id(org_id) if not org_model: return None status = Status.ACTIVE.value if status is None else Status[status].value membership_roles = ALL_ALLOWED_ROLES if membership_roles is None else membership_roles # If staff return full list if 'staff' in token_info.get('realm_access').get('roles'): return MembershipModel.find_members_by_org_id_by_status_by_roles( org_id, membership_roles, status) 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 or pending membership return empty array if current_user_membership is None or \ current_user_membership.status == Status.INACTIVE.value or \ current_user_membership.status == Status.REJECTED.value: return [] # If pending approval, return empty for active, array of self only for pending if current_user_membership.status == Status.PENDING_APPROVAL.value: return [current_user_membership ] if status == Status.PENDING_APPROVAL.value else [] # If active status for current user, then check organizational role if current_user_membership.status == Status.ACTIVE.value: if current_user_membership.membership_type_code == ADMIN or \ current_user_membership.membership_type_code == COORDINATOR: return MembershipModel.find_members_by_org_id_by_status_by_roles( org_id, membership_roles, status) return MembershipModel.find_members_by_org_id_by_status_by_roles(org_id, membership_roles, status) \ if status == Status.ACTIVE.value else [] return []
def get_members_for_org(org_id, status=None, membership_roles=None, token_info: Dict = None, allowed_roles: Tuple = None): """Get members of org.Fetches using status and roles.""" if org_id is None: return None if membership_roles is None: membership_roles = ALL_ALLOWED_ROLES if not status: status = Status.ACTIVE.value else: status = Status[status].value org_model = OrgModel.find_by_org_id(org_id) if not org_model: return None # Check authorization for the user check_auth(token_info, one_of_roles=allowed_roles, org_id=org_id) return MembershipModel.find_members_by_org_id_by_status_by_roles(org_id, membership_roles, status)