diff options
author | michal <michal.sipa@mirumee.com> | 2017-09-22 16:19:25 +0200 |
---|---|---|
committer | michal <michal.sipa@mirumee.com> | 2017-09-27 15:59:13 +0200 |
commit | c8b0780259591d7fc7e354f27e60d2188bfc3911 (patch) | |
tree | 928e323942d6ae2fdd708f29eac6bba23ec96b03 /saleor/product/filters.py | |
parent | f3a4a75cfea76ddebabd561c2ab84ec5c6b103b4 (diff) | |
download | saleor-frontend-c8b0780259591d7fc7e354f27e60d2188bfc3911.tar.gz saleor-frontend-c8b0780259591d7fc7e354f27e60d2188bfc3911.tar.bz2 saleor-frontend-c8b0780259591d7fc7e354f27e60d2188bfc3911.zip |
Add filters
Add dynamically created filters for variant and product attributes.
Diffstat (limited to 'saleor/product/filters.py')
-rw-r--r-- | saleor/product/filters.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/saleor/product/filters.py b/saleor/product/filters.py new file mode 100644 index 00000000..e67b476a --- /dev/null +++ b/saleor/product/filters.py @@ -0,0 +1,34 @@ +from django_filters import FilterSet, ModelMultipleChoiceFilter + +from django.forms import CheckboxSelectMultiple + +from .models import Category, Product, ProductAttribute, AttributeChoiceValue + + +class CategoryFilter(FilterSet): + class Meta: + model = Category + fields = ['name', 'parent'] + + +class ProductFilter(FilterSet): + class Meta: + model = Product + fields = ['price', 'categories__name'] + + +class ProductAttributeFilter(FilterSet): + def __init__(self, *args, **kwargs): + self.attribute_name = kwargs.pop('attribute_name') + super(ProductAttributeFilter, self).__init__(*args, **kwargs) + self.filters['name'].queryset = \ + AttributeChoiceValue.objects.all().filter( + attribute__name=self.attribute_name) + + name = ModelMultipleChoiceFilter(widget=CheckboxSelectMultiple) + + class Meta: + model = ProductAttribute + fields = ['name'] + + |