Exemplo n.º 1
0
class AttributeFilter(django_filters.FilterSet):
    # Search by attribute name and slug
    search = django_filters.CharFilter(
        method=filter_fields_containing_value("slug", "name")
    )
    ids = GlobalIDMultipleChoiceFilter(field_name="id")

    in_collection = GlobalIDFilter(method="filter_in_collection")
    in_category = GlobalIDFilter(method="filter_in_category")

    class Meta:
        model = Attribute
        fields = [
            "value_required",
            "is_variant_only",
            "visible_in_storefront",
            "filterable_in_storefront",
            "filterable_in_dashboard",
            "available_in_grid",
        ]

    def filter_in_collection(self, queryset, name, value):
        requestor = get_user_or_app_from_context(self.request)
        return filter_attributes_by_product_types(queryset, name, value, requestor)

    def filter_in_category(self, queryset, name, value):
        requestor = get_user_or_app_from_context(self.request)
        return filter_attributes_by_product_types(queryset, name, value, requestor)
Exemplo n.º 2
0
class ProductFilter(django_filters.FilterSet):
    is_published = django_filters.BooleanFilter()
    collections = GlobalIDMultipleChoiceFilter(method=filter_collections)
    categories = GlobalIDMultipleChoiceFilter(method=filter_categories)
    has_category = django_filters.BooleanFilter(method=filter_has_category)
    price = ObjectTypeFilter(
        input_class=PriceRangeInput, method=filter_price, field_name="price_amount"
    )
    minimal_price = ObjectTypeFilter(
        input_class=PriceRangeInput,
        method=filter_minimal_price,
        field_name="minimal_price_amount",
    )
    attributes = ListObjectTypeFilter(
        input_class=AttributeInput, method=filter_attributes
    )
    stock_availability = EnumFilter(
        input_class=StockAvailability, method=filter_stock_availability
    )
    product_type = GlobalIDFilter()
    search = django_filters.CharFilter(method=filter_search)

    class Meta:
        model = Product
        fields = [
            "is_published",
            "collections",
            "categories",
            "has_category",
            "price",
            "attributes",
            "stock_availability",
            "product_type",
            "search",
        ]
Exemplo n.º 3
0
class ProductFilter(MetadataFilterBase):
    is_published = django_filters.BooleanFilter(method="filter_is_published")
    collections = GlobalIDMultipleChoiceFilter(method=filter_collections)
    categories = GlobalIDMultipleChoiceFilter(method=filter_categories)
    has_category = django_filters.BooleanFilter(method=filter_has_category)
    price = ObjectTypeFilter(input_class=PriceRangeInput,
                             method="filter_variant_price")
    minimal_price = ObjectTypeFilter(
        input_class=PriceRangeInput,
        method="filter_minimal_price",
        field_name="minimal_price_amount",
    )
    attributes = ListObjectTypeFilter(
        input_class="saleor.graphql.attribute.types.AttributeInput",
        method="filter_attributes",
    )
    stock_availability = EnumFilter(input_class=StockAvailability,
                                    method="filter_stock_availability")
    product_type = GlobalIDFilter()  # Deprecated
    product_types = GlobalIDMultipleChoiceFilter(field_name="product_type")
    stocks = ObjectTypeFilter(input_class=ProductStockFilterInput,
                              method=filter_stocks)
    search = django_filters.CharFilter(method=filter_search)
    ids = GlobalIDMultipleChoiceFilter(field_name="id")

    class Meta:
        model = Product
        fields = [
            "is_published",
            "collections",
            "categories",
            "has_category",
            "attributes",
            "stock_availability",
            "product_type",
            "stocks",
            "search",
        ]

    def filter_attributes(self, queryset, name, value):
        return _filter_attributes(queryset, name, value)

    def filter_variant_price(self, queryset, name, value):
        channel_slug = get_channel_slug_from_filter_data(self.data)
        return _filter_variant_price(queryset, name, value, channel_slug)

    def filter_minimal_price(self, queryset, name, value):
        channel_slug = get_channel_slug_from_filter_data(self.data)
        return _filter_minimal_price(queryset, name, value, channel_slug)

    def filter_is_published(self, queryset, name, value):
        channel_slug = get_channel_slug_from_filter_data(self.data)
        return _filter_is_published(queryset, name, value, channel_slug)

    def filter_stock_availability(self, queryset, name, value):
        channel_slug = get_channel_slug_from_filter_data(self.data)
        return _filter_stock_availability(queryset, name, value, channel_slug)
Exemplo n.º 4
0
class AttributeFilter(django_filters.FilterSet):
    # Search by attribute name and slug
    search = django_filters.CharFilter(
        method=filter_fields_containing_value("slug", "name"))
    ids = GlobalIDMultipleChoiceFilter(field_name="id")

    in_collection = GlobalIDFilter(method=filter_attributes_by_product_types)
    in_category = GlobalIDFilter(method=filter_attributes_by_product_types)

    class Meta:
        model = Attribute
        fields = [
            "value_required",
            "is_variant_only",
            "visible_in_storefront",
            "filterable_in_storefront",
            "filterable_in_dashboard",
            "available_in_grid",
        ]
Exemplo n.º 5
0
class ProductFilter(django_filters.FilterSet):
    is_published = django_filters.BooleanFilter()
    collections = GlobalIDMultipleChoiceFilter(method=filter_collections)
    categories = GlobalIDMultipleChoiceFilter(method=filter_categories)
    has_category = django_filters.BooleanFilter(method=filter_has_category)
    price = ObjectTypeFilter(input_class=PriceRangeInput,
                             method=filter_variant_price)
    minimal_price = ObjectTypeFilter(
        input_class=PriceRangeInput,
        method=filter_minimal_price,
        field_name="minimal_price_amount",
    )
    attributes = ListObjectTypeFilter(
        input_class="saleor.graphql.product.types.attributes.AttributeInput",
        method=filter_attributes,
    )
    stock_availability = EnumFilter(input_class=StockAvailability,
                                    method=filter_stock_availability)
    product_type = GlobalIDFilter()  # Deprecated
    product_types = GlobalIDMultipleChoiceFilter(field_name="product_type")
    stocks = ObjectTypeFilter(input_class=ProductStockFilterInput,
                              method=filter_stocks)
    search = django_filters.CharFilter(method=filter_search)
    ids = GlobalIDMultipleChoiceFilter(field_name="id")
    allegro_status = django_filters.CharFilter(method=filter_allegro_status)
    updated_at = ObjectTypeFilter(input_class=DateRangeInput,
                                  method=filter_updated_at_range)
    created_at = ObjectTypeFilter(input_class=DateRangeInput,
                                  method=filter_created_at_range)
    warehouse_location = ObjectTypeFilter(
        input_class=WarehouseLocationRangeInput,
        method=filter_warehouse_location)

    class Meta:
        model = Product
        fields = [
            "is_published",
            "collections",
            "categories",
            "has_category",
            "attributes",
            "stock_availability",
            "product_type",
            "stocks",
            "search",
            "allegro_status",
            "updated_at",
            "created_at",
            "warehouse_location",
        ]
Exemplo n.º 6
0
class DonationMessageFilter(django_filters.FilterSet):
    nonprofit = GlobalIDFilter(method='filter_nonprofit')
    random = django_filters.BooleanFilter(method='filter_random')

    class Meta:
        model = models.DonationMessage
        fields = []

    def filter_random(self, qs, name, value):
        return qs.order_by('?')

    def filter_nonprofit(self, qs, name, value):
        return qs.annotate(nonprofit_id=Value(
            from_global_id(value)[1],
            output_field=PositiveIntegerField(),
        ))
Exemplo n.º 7
0
class CategoryFilter(django_filters.FilterSet):
    search = django_filters.CharFilter(
        method=filter_fields_containing_value("slug", "name"))
    ids = GlobalIDMultipleChoiceFilter(field_name="id")
    parent = GlobalIDFilter()

    # used in sales
    sales = GlobalIDMultipleChoiceFilter(method=filter_sales)
    not_in_sales = GlobalIDMultipleChoiceFilter(method=filter_not_in_sales)

    # used in vouchers
    vouchers = GlobalIDMultipleChoiceFilter(method=filter_vouchers)
    not_in_vouchers = GlobalIDMultipleChoiceFilter(
        method=filter_not_in_vouchers)

    class Meta:
        model = Category
        fields = ["search", "parent"]
Exemplo n.º 8
0
class ProductFilter(django_filters.FilterSet):
    is_published = django_filters.BooleanFilter()
    collections = GlobalIDMultipleChoiceFilter(method=filter_collections)
    categories = GlobalIDMultipleChoiceFilter(method=filter_categories)
    price = ObjectTypeFilter(input_class=PriceRangeInput, method=filter_price)
    attributes = ListObjectTypeFilter(input_class=AttributeInput,
                                      method=filter_attributes)
    stock_availability = EnumFilter(input_class=StockAvailability,
                                    method=filter_stock_availability)
    product_type = GlobalIDFilter()
    search = django_filters.CharFilter(method=filter_search)

    class Meta:
        model = Product
        fields = [
            'is_published', 'collections', 'categories', 'price', 'attributes',
            'stock_availability', 'product_type', 'search'
        ]