summaryrefslogtreecommitdiff
path: root/saleor/product/filters.py
diff options
context:
space:
mode:
authormichal <michal.sipa@mirumee.com>2017-09-26 10:36:03 +0200
committermichal <michal.sipa@mirumee.com>2017-09-27 15:59:13 +0200
commit7a8cb009d44cdc508807df780d0a864693683851 (patch)
treeef661df5bf7fcd1ffdc153ccca5b755703a19b78 /saleor/product/filters.py
parent0deb80fd9a11d2315df15f3109a89b351528032b (diff)
downloadsaleor-frontend-7a8cb009d44cdc508807df780d0a864693683851.tar.gz
saleor-frontend-7a8cb009d44cdc508807df780d0a864693683851.tar.bz2
saleor-frontend-7a8cb009d44cdc508807df780d0a864693683851.zip
Refactor filters
Refactor filters and views.
Diffstat (limited to 'saleor/product/filters.py')
-rw-r--r--saleor/product/filters.py23
1 files changed, 10 insertions, 13 deletions
diff --git a/saleor/product/filters.py b/saleor/product/filters.py
index 68f785e1..170c6a1b 100644
--- a/saleor/product/filters.py
+++ b/saleor/product/filters.py
@@ -9,11 +9,9 @@ from .models import Product, AttributeChoiceValue
class ProductFilter(FilterSet):
def __init__(self, *args, **kwargs):
super(ProductFilter, self).__init__(*args, **kwargs)
- self.products = self.queryset
-
product_attributes = set()
variant_attributes = set()
- for product in self.products:
+ for product in self.queryset:
for attribute in product.product_class.variant_attributes.all():
product_attributes.add(attribute)
for attribute in product.product_class.product_attributes.all():
@@ -25,8 +23,7 @@ class ProductFilter(FilterSet):
name='product_class__product_attributes__values__slug',
label=attribute.name,
widget=CheckboxSelectMultiple,
- choices=self.get_attribute_choices(attribute)
- )
+ choices=get_attribute_choices(attribute))
for attribute in variant_attributes:
self.filters[attribute.slug] = \
@@ -34,14 +31,7 @@ class ProductFilter(FilterSet):
name='product_class__variant_attributes__values__slug',
label=attribute.name,
widget=CheckboxSelectMultiple,
- choices=self.get_attribute_choices(attribute)
- )
-
- def get_attribute_choices(self, attribute):
- result = [(choice.slug, choice.name)
- for choice in AttributeChoiceValue.objects
- .filter(attribute__name=attribute.name)]
- return result
+ choices=get_attribute_choices(attribute))
class Meta:
model = Product
@@ -52,3 +42,10 @@ class ProductFilter(FilterSet):
'filter_class': RangeFilter
}
}
+
+
+def get_attribute_choices(self, attribute):
+ result = [(choice.slug, choice.name)
+ for choice in AttributeChoiceValue.objects
+ .filter(attribute__name=attribute.name)]
+ return result