def test_get_unblocked_by_category_query(self): s1 = self.create_sellable() s2 = self.create_sellable() s3 = self.create_sellable() c1 = self.create_sellable_category() c2 = self.create_sellable_category() s1.category = c1 s2.category = c2 query = Sellable.get_unblocked_by_categories_query( self.store, [c1, c2], include_uncategorized=True) self.assertEqual(set([s1, s2, s3]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [c1], include_uncategorized=True) self.assertEqual(set([s1, s3]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [c1], include_uncategorized=True) self.assertEqual(set([s1, s3]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [c1], include_uncategorized=False) self.assertEqual(set([s1]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [], include_uncategorized=True) self.assertEqual(set([s3]), set(self.store.find(Sellable, query)))
def test_get_unblocked_by_category_query(self): s1 = self.create_sellable() s2 = self.create_sellable() s3 = self.create_sellable() c1 = self.create_sellable_category() c2 = self.create_sellable_category() s1.category = c1 s2.category = c2 query = Sellable.get_unblocked_by_categories_query( self.store, [c1, c2], include_uncategorized=True) self.assertEqual( set([s1, s2, s3]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [c1], include_uncategorized=True) self.assertEqual( set([s1, s3]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [c1], include_uncategorized=True) self.assertEqual( set([s1, s3]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [c1], include_uncategorized=False) self.assertEqual( set([s1]), set(self.store.find(Sellable, query))) query = Sellable.get_unblocked_by_categories_query( self.store, [], include_uncategorized=True) self.assertEqual( set([s3]), set(self.store.find(Sellable, query)))
def _get_sellables_query(self): categories = [c.category for c in self.category_tree if c.selected and c is not self._uncategorized_products] include_uncategorized = self._uncategorized_products.selected query = Sellable.get_unblocked_by_categories_query( self.store, categories, include_uncategorized) queries = [query] if self.model.product_manufacturer: queries.append(Product.manufacturer == self.model.product_manufacturer) if self.model.product_brand: queries.append(Product.brand == self.model.product_brand) if self.model.product_family: queries.append(Product.family == self.model.product_family) return And(*queries)