Exemple #1
0
    def get_fields(self, request, category=None):
        shop_products_qs = ShopProduct.objects.filter(
            shop=request.shop).exclude(
                visibility=ShopProductVisibility.NOT_VISIBLE)

        if category:
            shop_products_qs = shop_products_qs.filter(
                Q(primary_category=category) | Q(categories=category))

        queryset = Supplier.objects.enabled(shop=request.shop).filter(
            shop_products__in=shop_products_qs).distinct()
        if not queryset.exists():
            return

        configuration = get_configuration(request.shop, category)
        multiselect_enabled = configuration.get(self.enable_multiselect_key)
        if multiselect_enabled:
            return [
                ("suppliers",
                 CommaSeparatedListField(
                     required=False,
                     label=get_form_field_label("supplier", _('Suppliers')),
                     widget=FilterWidget(choices=[(supplier.pk, supplier.name)
                                                  for supplier in queryset]))),
            ]

        return [
            ("supplier",
             forms.ModelChoiceField(queryset=queryset,
                                    empty_label=None,
                                    required=False,
                                    label=get_form_field_label(
                                        "supplier", _("Suppliers")),
                                    widget=OneChoiceFilterWidget())),
        ]
 def get_choices_for_fields(self):
     return [
         ("sort", [
             ("price_a", get_form_field_label("price_a", _("Price - Low to High"))),
             ("price_d", get_form_field_label("price_d", _("Price - High to Low"))),
         ]),
     ]
Exemple #3
0
 def get_choices_for_fields(self):
     return [
         ("sort", [
             ("name_a", get_form_field_label("name_a", _("Name - A-Z"))),
             ("name_d", get_form_field_label("name_d", _("Name - Z-A"))),
         ]),
     ]
Exemple #4
0
    def get_fields(self, request, category=None):
        if not Category.objects.filter(shops=request.shop).exists():
            return

        key, val = context_cache.get_cached_value(
            identifier="categoryproductfilter",
            item=self,
            context=request,
            category=category)
        if val:
            return val

        language = get_language()
        base_queryset = Category.objects.all_visible(request.customer,
                                                     request.shop,
                                                     language=language)
        if category:
            q = Q(
                Q(shop_products__categories=category),
                ~Q(shop_products__visibility=ShopProductVisibility.NOT_VISIBLE)
            )
            queryset = base_queryset.filter(q).exclude(
                pk=category.pk).distinct()
        else:
            # Show only first level when there is no category selected
            queryset = base_queryset.filter(parent=None)

        data = [("categories",
                 CommaSeparatedListField(
                     required=False,
                     label=get_form_field_label("categories", _('Categories')),
                     widget=FilterWidget(choices=[(cat.pk, cat.name)
                                                  for cat in queryset])))]
        context_cache.set_cached_value(key, data)
        return data
Exemple #5
0
    def get_fields(self, request, category=None):
        if not Manufacturer.objects.filter(
                Q(shops__isnull=True) | Q(shops=request.shop)).exists():
            return

        shop_products_qs = ShopProduct.objects.filter(
            shop=request.shop).exclude(
                visibility=ShopProductVisibility.NOT_VISIBLE)

        if category:
            shop_products_qs = shop_products_qs.filter(
                Q(primary_category=category) | Q(categories=category))

        queryset = Manufacturer.objects.filter(
            Q(product__shop_products__in=shop_products_qs),
            Q(shops=request.shop) | Q(shops__isnull=True)).distinct()

        if not queryset.exists():
            return

        return [
            ("manufacturers",
             CommaSeparatedListField(
                 required=False,
                 label=get_form_field_label("manufacturers",
                                            _('Manufacturers')),
                 widget=FilterWidget(choices=[(mfgr.pk, mfgr.name)
                                              for mfgr in queryset]))),
        ]
Exemple #6
0
 def get_choices_for_fields(self):
     return [
         ("sort", [
             ("created_date_d",
              get_form_field_label("created_date_d", _('Date created'))),
         ]),
     ]
 def get_fields(self, request, category=None):
     return [
         (
             "sort",
             forms.CharField(required=False, widget=forms.Select(), label=get_form_field_label("sort", _('Sort')))
         )
     ]
    def get_fields(self, request, category=None):
        if not Manufacturer.objects.exists():
            return

        shop_products_qs = ShopProduct.objects.filter(
            shop=request.shop).exclude(
                visibility=ShopProductVisibility.NOT_VISIBLE)

        if category:
            shop_products_qs = shop_products_qs.filter(
                Q(primary_category=category) | Q(categories=category))

        queryset = Manufacturer.objects.filter(
            Q(product__shop_products__in=shop_products_qs),
            Q(shops=request.shop) | Q(shops__isnull=True)).distinct()

        if not queryset.exists():
            return

        return [
            ("manufacturers",
             forms.ModelMultipleChoiceField(queryset=queryset,
                                            required=False,
                                            label=get_form_field_label(
                                                "manufacturers",
                                                _('Manufacturers')),
                                            widget=FilterWidget())),
        ]
Exemple #9
0
 def get_fields(self, request, category=None):
     return [
         (
             "sort",
             forms.CharField(required=False, widget=forms.Select(), label=get_form_field_label("sort", _("Sort"))),
         )
     ]
    def get_fields(self, request, category=None):
        shop_products_qs = ShopProduct.objects.filter(
            shop=request.shop
        ).exclude(visibility=ShopProductVisibility.NOT_VISIBLE)

        if category:
            shop_products_qs = shop_products_qs.filter(Q(primary_category=category) | Q(categories=category))

        queryset = Supplier.objects.enabled().filter(
            Q(shop_products__in=shop_products_qs),
            shops=request.shop
        ).distinct()
        if not queryset.exists():
            return

        return [
            (
                "supplier",
                forms.ModelChoiceField(
                    queryset=queryset,
                    empty_label=None,
                    required=False,
                    label=get_form_field_label("supplier", _("Suppliers")),
                    widget=OneChoiceFilterWidget()
                )
            ),
        ]
    def get_fields(self, request, category=None):
        if not Category.objects.filter(shops=request.shop).exists():
            return

        key, val = context_cache.get_cached_value(
            identifier="categoryproductfilter", item=self, context=request, category=category)
        if val:
            return val

        language = get_language()
        base_queryset = Category.objects.all_visible(request.customer, request.shop, language=language)
        if category:
            q = Q(
                Q(shop_products__categories=category),
                ~Q(shop_products__visibility=ShopProductVisibility.NOT_VISIBLE)
            )
            queryset = base_queryset.filter(q).exclude(pk=category.pk).distinct()
        else:
            # Show only first level when there is no category selected
            queryset = base_queryset.filter(parent=None)

        data = [
            (
                "categories",
                CommaSeparatedListField(
                    required=False,
                    label=get_form_field_label("categories", _('Categories')),
                    widget=FilterWidget(choices=[(cat.pk, cat.name) for cat in queryset])
                )
            )
        ]
        context_cache.set_cached_value(key, data)
        return data
    def get_fields(self, request, category=None):
        if not Manufacturer.objects.filter(Q(shops__isnull=True) | Q(shops=request.shop)).exists():
            return

        shop_products_qs = ShopProduct.objects.filter(
            shop=request.shop
        ).exclude(visibility=ShopProductVisibility.NOT_VISIBLE)

        if category:
            shop_products_qs = shop_products_qs.filter(Q(primary_category=category) | Q(categories=category))

        queryset = Manufacturer.objects.filter(
            Q(product__shop_products__in=shop_products_qs),
            Q(shops=request.shop) | Q(shops__isnull=True)
        ).distinct()

        if not queryset.exists():
            return

        return [
            (
                "manufacturers",
                forms.ModelMultipleChoiceField(
                    queryset=queryset,
                    required=False,
                    label=get_form_field_label("manufacturers", _('Manufacturers')),
                    widget=FilterWidget()
                )
            ),
        ]
Exemple #13
0
 def get_choices_for_fields(self):
     return [
         ("sort", [
             ("created_date_a",
              get_form_field_label("created_date_a",
                                   _("Date created - oldest first"))),
         ]),
     ]
 def get_fields(self, request, category=None):
     return [(
         "limit",
         forms.IntegerField(required=False,
                            widget=forms.Select(),
                            label=get_form_field_label(
                                "limit", _("Products per page"))),
     )]
 def get_fields(self, request, category=None):
     return [
         (
             "limit",
             forms.IntegerField(
                 required=False, widget=forms.Select(), label=get_form_field_label("limit", _("Products per page")))
         )
     ]
Exemple #16
0
    def get_fields(self, request, category=None):
        if not category:
            return

        # TODO: Add cache
        configuration = get_configuration(request.shop, category)

        min_price = configuration.get(self.range_min_key)
        max_price = configuration.get(self.range_max_key)
        range_size = configuration.get(self.range_size_key)
        if not (min_price and max_price and range_size):
            return

        choices = [(None, "-------")] + get_price_ranges(
            request.shop, min_price, max_price, range_size)
        return [
            ("price_range",
             forms.ChoiceField(required=False,
                               choices=choices,
                               label=get_form_field_label(
                                   "price_range", _("Price")))),
        ]
    def get_fields(self, request, category=None):
        if not category:
            return

        # TODO: Add cache
        configuration = get_configuration(request.shop, category)

        min_price = configuration.get(self.range_min_key)
        max_price = configuration.get(self.range_max_key)
        range_size = configuration.get(self.range_size_key)
        if not (min_price and max_price and range_size):
            return

        choices = [(None, "-------")] + get_price_ranges(
            request.shop, min_price, max_price, range_size)
        return [
            (
                "price_range",
                forms.ChoiceField(
                    required=False, choices=choices, label=get_form_field_label("price_range", _("Price")))
            ),
        ]
Exemple #18
0
    def get_fields(self, request, category=None):
        shop_products_qs = ShopProduct.objects.filter(
            shop=request.shop).exclude(
                visibility=ShopProductVisibility.NOT_VISIBLE)

        if category:
            shop_products_qs = shop_products_qs.filter(
                Q(primary_category=category) | Q(categories=category))

        queryset = Supplier.objects.enabled().filter(
            Q(shop_products__in=shop_products_qs),
            shops=request.shop).distinct()
        if not queryset.exists():
            return

        return [
            ("supplier",
             forms.ModelChoiceField(queryset=queryset,
                                    empty_label=None,
                                    required=False,
                                    label=get_form_field_label(
                                        "supplier", _("Suppliers")),
                                    widget=OneChoiceFilterWidget())),
        ]