diff options
author | michal <michal.sipa@mirumee.com> | 2017-09-26 10:36:03 +0200 |
---|---|---|
committer | michal <michal.sipa@mirumee.com> | 2017-09-27 15:59:13 +0200 |
commit | 7a8cb009d44cdc508807df780d0a864693683851 (patch) | |
tree | ef661df5bf7fcd1ffdc153ccca5b755703a19b78 /saleor/product/filters.py | |
parent | 0deb80fd9a11d2315df15f3109a89b351528032b (diff) | |
download | saleor-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.py | 23 |
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 |