def get(self): """ Returns all of the suppliers """ app.logger.info('Request to list Suppliers...') name = request.args.get('name') is_active = request.args.get('is_active') rating = request.args.get('rating') product_id = request.args.get('product_id') like_count = request.args.get('like_count') if name: app.logger.info('Find suppliers by name: %s', name) suppliers = Supplier.find_by_name(name) elif like_count: app.logger.info('Find suppliers with rating greater than: %s', rating) like_count = int(like_count) suppliers = Supplier.find_by_greater("like_count", like_count) elif is_active: app.logger.info('Find suppliers by is_active: %s', is_active) is_active = (is_active == 'true') suppliers = Supplier.find_by_is_active(is_active) elif rating: app.logger.info('Find suppliers with rating greater than: %s', rating) rating = float(rating) suppliers = Supplier.find_by_greater("rating", rating) elif product_id: app.logger.info( 'Find suppliers containing product with id %s in their products', product_id) product_id = int(product_id) suppliers = [ supplier for supplier in Supplier.all() if product_id in supplier.products ] else: app.logger.info('Find all suppliers') suppliers = Supplier.all() app.logger.info('[%s] Suppliers returned', len(suppliers)) results = [supplier.serialize() for supplier in suppliers] app.logger.info("Returning %d suppliers", len(results)) return results, status.HTTP_200_OK
def test_find_by_rating(self): """ Find a Supplier by Rating """ Supplier("supplier1", 2, True, [1, 2, 3], 8.5).save() Supplier("supplier2", 4, False, [1, 3, 5, 7], 6.5).save() Supplier("supplier3", 6, False, [1, 3, 5], 7.2).save() Supplier("supplier4", 8, True, [1, 2, 5], 4.5).save() suppliers = Supplier.find_by_greater("rating", 4.2) self.assertEqual(len(suppliers), 4) suppliers = Supplier.find_by_greater("rating", 7) self.assertEqual(len(suppliers), 2) suppliers = Supplier.find_by_greater("rating", 8.6) self.assertEqual(len(suppliers), 0) suppliers = Supplier.find_by_greater("rating", 7.2) self.assertEqual(len(suppliers), 1) self.assertEqual(suppliers[0].name, "supplier1") self.assertEqual(suppliers[0].like_count, 2) self.assertEqual(suppliers[0].is_active, True) self.assertEqual(suppliers[0].products, [1, 2, 3]) self.assertEqual(suppliers[0].rating, 8.5)