コード例 #1
0
    def get_context_data(self, **kwargs):
        context = super(CategoryView, self).get_context_data(**kwargs)
        category = self.object
        data = self.request.GET
        context["form"] = form = ProductListForm(request=self.request,
                                                 shop=self.request.shop,
                                                 category=category,
                                                 data=data)
        form.full_clean()
        data = form.cleaned_data
        if "sort" in form.fields and not data.get("sort"):
            # Use first choice by default
            data["sort"] = form.fields["sort"].widget.choices[0][0]

        # TODO: Check if context cache can be utilized here
        products = Product.objects.listed(
            customer=self.request.customer, shop=self.request.shop).filter(
                **self.get_product_filters()).filter(
                    get_query_filters(self.request, category, data=data))

        products = get_product_queryset(products, self.request, category,
                                        data).distinct()
        products = post_filter_products(self.request, category, products, data)
        products = cache_product_things(self.request, products)
        products = sort_products(self.request, category, products, data)
        context["page_size"] = data.get("limit", 12)
        context["products"] = products

        if "supplier" in data:
            context["supplier"] = data.get("supplier")

        return context
コード例 #2
0
ファイル: category.py プロジェクト: ruqaiya/shuup
def get_context_data(context, request, category, product_filters):
    data = request.GET
    context["form"] = form = ProductListForm(
        request=request, shop=request.shop, category=category, data=data)
    form.full_clean()
    data = form.cleaned_data
    if "sort" in form.fields and not data.get("sort"):
        # Use first choice by default
        data["sort"] = form.fields["sort"].widget.choices[0][0]

    # TODO: Check if context cache can be utilized here
    products = Product.objects.listed(
        customer=request.customer,
        shop=request.shop
    ).filter(
        **product_filters
    ).filter(get_query_filters(request, category, data=data))

    products = get_product_queryset(products, request, category, data).distinct()
    products = post_filter_products(request, category, products, data)
    products = cache_product_things(request, products)
    products = sort_products(request, category, products, data)
    context["page_size"] = data.get("limit", 12)
    context["products"] = products

    if "supplier" in data:
        context["supplier"] = data.get("supplier")

    return context
コード例 #3
0
ファイル: category.py プロジェクト: yurkobb/shuup
def get_context_data(context, request, category, product_filters):
    data = request.GET
    context["form"] = form = ProductListForm(request=request,
                                             shop=request.shop,
                                             category=category,
                                             data=data)
    form.full_clean()
    data = form.cleaned_data
    if "sort" in form.fields and not data.get("sort"):
        # Use first choice by default
        data["sort"] = form.fields["sort"].widget.choices[0][0]

    # TODO: Check if context cache can be utilized here
    products = (Product.objects.listed(
        customer=request.customer,
        shop=request.shop).filter(**product_filters).filter(
            get_query_filters(request, category, data=data)).prefetch_related(
                "sales_unit", "sales_unit__translations"))

    products = get_product_queryset(products, request, category,
                                    data).distinct()
    products = post_filter_products(request, category, products, data)
    products = cache_product_things(request, products)
    products = sort_products(request, category, products, data)
    context["page_size"] = data.get("limit", 12)
    context["products"] = products

    if "supplier" in data:
        context["supplier"] = data.get("supplier")

    return context
コード例 #4
0
ファイル: category.py プロジェクト: gurch101/shuup
    def get_context_data(self, **kwargs):
        context = super(CategoryView, self).get_context_data(**kwargs)
        category = self.object
        data = self.request.GET
        context["form"] = form = ProductListForm(
            request=self.request, shop=self.request.shop, category=category, data=data)
        form.full_clean()
        data = form.cleaned_data
        if "sort" in form.fields and not data.get("sort"):
            # Use first choice by default
            data["sort"] = form.fields["sort"].widget.choices[0][0]

        # TODO: Check if context cache can be utilized here
        products = Product.objects.listed(
            customer=self.request.customer,
            shop=self.request.shop
        ).filter(
            shop_products__shop=self.request.shop,
            variation_parent__isnull=True,
            shop_products__categories=category
        ).filter(get_query_filters(self.request, category, data=data))
        products = get_product_queryset(products, self.request, category, data).distinct()

        products = post_filter_products(self.request, category, products, data)
        products = cache_product_things(self.request, products)
        products = sort_products(self.request, category, products, data)
        context["page_size"] = data.get("limit", 12)
        context["products"] = products
        return context
コード例 #5
0
    def get_context_data(self, **kwargs):
        context = super(CategoryView, self).get_context_data(**kwargs)
        category = self.object
        data = self.request.GET
        context["form"] = form = ProductListForm(request=self.request,
                                                 shop=self.request.shop,
                                                 category=category,
                                                 data=data)
        form.full_clean()
        data = form.cleaned_data
        if "sort" in form.fields and not data.get("sort"):
            # Use first choice by default
            data["sort"] = form.fields["sort"].widget.choices[0][0]

        products = Product.objects.listed(
            customer=self.request.customer, shop=self.request.shop).filter(
                shop_products__shop=self.request.shop,
                variation_parent__isnull=True,
                shop_products__categories=category).filter(
                    get_query_filters(self.request, category, data=data))
        products = get_product_queryset(products, self.request, category,
                                        data).distinct()

        products = post_filter_products(self.request, category, products, data)
        products = cache_product_things(self.request, products)
        products = sort_products(self.request, category, products, data)
        context["page_size"] = data.get("limit", 12)
        context["products"] = products
        return context
コード例 #6
0
ファイル: 53014_views.py プロジェクト: wanuop/shuup
 def get_context_data(self, **kwargs):
     context = super(SearchView, self).get_context_data(**kwargs)
     context["form"] = self.form
     products = context["products"]
     if products:
         data = self.form.cleaned_data
         products = post_filter_products(self.request, None, products, data)
         products = cache_product_things(self.request, products)
         products = sort_products(self.request, None, products, data)
         products = [p for p in products if is_visible({"request": self.request}, p)]
         context["products"] = products
     context["no_results"] = (self.form.is_valid() and not products)
     return context
コード例 #7
0
    def get_queryset(self):
        if not self.form.is_valid():
            return Product.objects.none()
        data = self.form.cleaned_data
        if not (data and data.get("q")):  # pragma: no cover
            return Product.objects.none()

        catalog = ProductCatalog(
            ProductCatalogContext(
                shop=self.request.shop,
                user=self.request.user,
                contact=getattr(self.request, "customer", None),
                purchasable_only=True,
                visibility=ShopProductVisibility.SEARCHABLE,
            ))
        products = catalog.get_products_queryset().filter(
            Q(mode__in=ProductMode.get_parent_modes()),
            Q(get_query_filters(self.request, None, data=data)))
        products = get_product_queryset(products, self.request, None, data)
        products = sort_products(self.request, None, products, data)
        return products.distinct()
コード例 #8
0
def get_context_data(context, request, category, product_filters):
    data = request.GET
    context["form"] = form = ProductListForm(request=request,
                                             shop=request.shop,
                                             category=category,
                                             data=data)
    form.full_clean()
    data = form.cleaned_data
    if "sort" in form.fields and not data.get("sort"):
        # Use first choice by default
        data["sort"] = form.fields["sort"].widget.choices[0][0]

    catalog = ProductCatalog(
        ProductCatalogContext(
            shop=request.shop,
            user=getattr(request, "user", None),
            contact=getattr(request, "customer", None),
            purchasable_only=True,
            supplier=data.get("supplier") or None,
            visibility=ShopProductVisibility.LISTED,
        ))
    products = (catalog.get_products_queryset().filter(
        **product_filters).filter(
            get_query_filters(request, category, data=data)).select_related(
                "primary_image", "sales_unit",
                "tax_class").prefetch_related("translations",
                                              "sales_unit__translations"))
    products = get_product_queryset(products, request, category, data)
    products = sort_products(request, category, products, data).distinct()
    context["page_size"] = data.get("limit", 12)
    context["products"] = products

    if "supplier" in data:
        context["supplier"] = data.get("supplier")

    return context