def filter_out_overlapping(self, pools): entitled_product_ids_to_certs = self._get_entitled_product_to_cert_map( ) filtered_pools = [] for pool in pools: provided_ids = set( [p['productId'] for p in pool['providedProducts']]) wrapped_pool = PoolWrapper(pool) # NOTE: We may have to check for other types or handle the case of a product with no type in the future if wrapped_pool.get_product_attributes('type')['type'] == 'SVC': provided_ids.add(pool['productId']) overlap = 0 possible_overlap_pids = provided_ids.intersection( list(entitled_product_ids_to_certs.keys())) for productid in possible_overlap_pids: if self._dates_overlap(pool, entitled_product_ids_to_certs[productid]) \ and productid not in self.sorter.partially_valid_products: overlap += 1 else: break if overlap != len(provided_ids) or wrapped_pool.get_stacking_id( ) in self.sorter.partial_stacks: filtered_pools.append(pool) return filtered_pools
def filter_out_overlapping(self, pools): entitled_product_ids_to_certs = self._get_entitled_product_to_cert_map() filtered_pools = [] for pool in pools: provided_ids = set([p['productId'] for p in pool['providedProducts']]) wrapped_pool = PoolWrapper(pool) # NOTE: We may have to check for other types or handle the case of a product with no type in the future if wrapped_pool.get_product_attributes('type')['type'] == 'SVC': provided_ids.add(pool['productId']) overlap = 0 possible_overlap_pids = provided_ids.intersection(list(entitled_product_ids_to_certs.keys())) for productid in possible_overlap_pids: if self._dates_overlap(pool, entitled_product_ids_to_certs[productid]) \ and productid not in self.sorter.partially_valid_products: overlap += 1 else: break if overlap != len(provided_ids) or wrapped_pool.get_stacking_id() in self.sorter.partial_stacks: filtered_pools.append(pool) return filtered_pools