class _ProductProjectionSearchSchema( traits.SortableSchema, traits.PagingSchema, traits.PriceSelectingSchema, traits.ExpandableSchema, ): fuzzy = fields.Bool(required=False, missing=False) fuzzy_level = fields.Int(data_key="fuzzyLevel", required=False) mark_matching_variants = fields.Bool(data_key="markMatchingVariants", missing=False) staged = fields.Bool(required=False, missing=False) filter = OptionalList(fields.String(), required=False) filter_facets = OptionalList(fields.String(), data_key="filter.facets", required=False) filter_query = OptionalList(fields.String(), data_key="filter.query", required=False) facet = OptionalList(fields.String(), required=False) text = fields.Dict() @marshmallow.post_dump def _text_post_dump(self, data, **kwrags): values = data.pop("text") if not values: return data for key, val in values.items(): data[f"text.{key}"] = val return data @marshmallow.pre_load def _text_post_load(self, data, **kwrags): items = {} for key in list(data.keys()): if key.startswith("text."): items[key[5:]] = data[key] del data[key] data["text"] = items return data
class QuerySchema(marshmallow.Schema, RemoveEmptyValuesMixin): where = OptionalList(fields.String(), required=False) predicate_var = fields.Dict() @marshmallow.post_dump def _predicate_var_post_dump(self, data, **kwrags): values = data.pop("predicate_var") if not values: return data for key, val in values.items(): data[f"var.{key}"] = val return data @marshmallow.pre_load def _predicate_var_post_load(self, data, **kwrags): items = {} for key in list(data.keys()): if key.startswith("var."): items[key[4:]] = data[key] del data[key] data["predicate_var"] = items return data
class PriceSelectingSchema(marshmallow.Schema, RemoveEmptyValuesMixin): price_currency = OptionalList(fields.String(), data_key="priceCurrency", required=False) price_country = OptionalList(fields.String(), data_key="priceCountry", required=False) price_customer_group = OptionalList(fields.String(), data_key="priceCustomerGroup", required=False) price_channel = OptionalList(fields.String(), data_key="priceChannel", required=False) locale_projection = OptionalList(fields.String(), data_key="localeProjection", required=False) store_projection = OptionalList(fields.String(), data_key="storeProjection", required=False)
class _ShippingMethodMatching_LocationSchema(traits.ExpandableSchema): country = OptionalList(fields.String()) state = OptionalList(fields.String(), required=False) currency = OptionalList(fields.String(), required=False)
class _ShippingMethodMatching_CartSchema(traits.ExpandableSchema): cart_id = OptionalList(fields.String(), data_key="cartId")
class AbstractDeleteSchema(Schema, RemoveEmptyValuesMixin): version = fields.Integer() expand = OptionalList(fields.String())
class _CustomObjectDeleteSchema(traits.DataErasureSchema, traits.VersionedSchema, traits.ExpandableSchema): version = OptionalList(fields.String(), required=False)
class ExpandableSchema(marshmallow.Schema, RemoveEmptyValuesMixin): expand = OptionalList(fields.String(), required=False)
class SortableSchema(marshmallow.Schema, RemoveEmptyValuesMixin): sort = OptionalList(fields.String(), required=False)