def from_request(cls, products, request, query=None, **kwargs): if query is None: query = QueryString(request) yield chaining.update(query=query) if products is None: products = indexer.get_index('product') products = products.search(get_product_queryset()) # Retrieve price from index if products.can_use_price_field('price'): products = products.with_price_field('price') # Handle price sorting if query and products.can_use_price_field('price'): if ('sort', 'price') in query: products = products.order_by_price('price') elif ('sort', '-price') in query: products = products.order_by_price('-price') # Filter on customer group if products.can_use_field('customer_group'): customer_group = CustomerGroup.get_current() products = products.filter(customer_group=customer_group) yield products products = (yield chaining.forward).result if not products.bare_is_set(): # Ideally we want to fetch final prices products = products.set_bare(False) yield products
def index_unpickle(name): from sellmo.core.indexing import indexer return indexer.get_index(name)