Example #1
0
    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
Example #2
0
def index_unpickle(name):
    from sellmo.core.indexing import indexer
    return indexer.get_index(name)