summaryrefslogtreecommitdiff
path: root/saleor/product/filters.py
diff options
context:
space:
mode:
authormichal <michal.sipa@mirumee.com>2017-09-22 16:19:25 +0200
committermichal <michal.sipa@mirumee.com>2017-09-27 15:59:13 +0200
commitc8b0780259591d7fc7e354f27e60d2188bfc3911 (patch)
tree928e323942d6ae2fdd708f29eac6bba23ec96b03 /saleor/product/filters.py
parentf3a4a75cfea76ddebabd561c2ab84ec5c6b103b4 (diff)
downloadsaleor-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.py34
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']
+
+