class StatesBackend(ServiceBackend): service_path = "states" model_class = StateModel _schema_draft = StateDraftSchema _schema_update = StateUpdateSchema _schema_query_response = StatePagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ] _actions = { "setName": update_attribute("name", "name"), "setDescription": update_attribute("description", "description"), "changeKey": update_attribute("key", "key"), "changeType": update_attribute("type", "type"), "changeInitial": update_attribute("initial", "initial"), "setRoles": set_roles(), "setTransitions": set_transitions(), }
class ShippingMethodsBackend(ServiceBackend): service_path = "shipping-methods" model_class = ShippingMethodsModel _schema_draft = ShippingMethodDraftSchema _schema_update = ShippingMethodUpdateSchema _schema_query_response = ShippingMethodPagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] _actions = { "addShippingRate": add_shipping_rate, "addZone": add_shipping_zone, "changeIsDefault": change_is_default, "changeName": update_attribute("name", "name"), "changeTaxCategory": change_tax_category, "removeShippingRate": remove_shipping_rate, "removeZone": remove_shipping_zone, "setDescription": update_attribute("description", "description"), "setKey": update_attribute("key", "key"), "setPredicate": update_attribute("predicate", "predicate"), }
class InventoryEntryBackend(ServiceBackend): service_path = "inventory" model_class = InventoryEntryModel _schema_draft = InventoryEntryDraftSchema _schema_update = InventoryEntryUpdateSchema _schema_query_response = InventoryPagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] _actions = { "addQuantity": change_stock(), "removeQuantity": change_stock(), "changeQuantity": change_stock(), "setRestockableInDays": update_attribute("restockableInDays", "restockableInDays"), "setExpectedDelivery": update_attribute("expectedDelivery", "expectedDelivery"), }
class TaxCategoryBackend(ServiceBackend): service_path = "tax-categories" model_class = TaxCategoryModel _schema_draft = TaxCategoryDraftSchema _schema_update = TaxCategoryUpdateSchema _schema_query_response = TaxCategoryPagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ] _actions = { "changeName": update_attribute("name", "name"), "setKey": update_attribute("key", "key"), "setDescription": update_attribute("description", "description"), "addTaxRate": add_tax_rate_action(), "removeTaxRate": update_attribute_delete_item_by_id("rates", "tax_rate_id"), "replaceTaxRate": replace_tax_rate_action(), }
class OrdersBackend(ServiceBackend): service_path = "orders" model_class = OrdersModel _schema_draft = OrderFromCartDraftSchema _schema_update = OrderUpdateSchema _schema_query_response = OrderPagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ] _actions = { "changeOrderState": update_enum_attribute("orderState", "order_state"), "changePaymentState": update_enum_attribute("paymentState", "payment_state"), "changeShipmentState": update_enum_attribute("shipmentState", "shipment_state"), "addDelivery": add_delivery(), "setShippingAddress": update_attribute("shippingAddress", "address"), "setBillingAddress": update_attribute("billingAddress", "address"), "setCustomerEmail": update_attribute("customerEmail", "email"), "setCustomField": set_custom_field(), "addPayment": add_payment(), }
class ZonesBackend(ServiceBackend): service_path = "zones" model_class = ZonesModel _schema_draft = schemas.ZoneDraftSchema _schema_update = schemas.ZoneUpdateSchema _schema_query_response = schemas.ZonePagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] _actions = { "changeName": update_attribute("name", "name"), "setKey": update_attribute("key", "key"), "setDescription": update_attribute("description", "description"), "addLocation": update_attribute_add_item( "locations", "location", schemas.LocationSchema ), "removeLocation": update_attribute_delete_item( "locations", "location", schemas.LocationSchema ), }
class ProjectBackend(ServiceBackend): model_class = ProjectsModel _resource_schema = ProjectSchema _schema_update = ProjectUpdateSchema def __init__(self, storage): super().__init__(storage) project_id = uuid.uuid4() self.model.objects[project_id] = { "id": str(project_id), "key": "unittest", "name": "labdigital-sandbox", "countries": ["DE", "US"], "currencies": ["EUR"], "languages": ["en", "nl", "de", "nl-BE"], "createdAt": "2018-10-04T11:32:12.603Z", "trialUntil": "2018-12", "carts": {}, "messages": { "enabled": False, "deleteDaysAfterCreation": 15 }, "externalOAuth": None, "version": 4, } def urls(self): return [("^$", "GET", self.get), ("^$", "POST", self.update)] @property def path_prefix(self): return r"/(?P<project>[^/]+)/$" def get(self, request): project_key = request.kwargs["project"] return self.get_by_key(request, project_key) def update(self, request): project_key = request.kwargs["project"] return self.update_by_key(request, project_key) # Fixme: use decorator for this _actions = { "changeCountries": update_attribute("countries", "countries"), "changeCurrencies": update_attribute("currencies", "currencies"), "changeName": update_attribute("name", "name"), "changeLanguages": update_attribute("languages", "languages"), "setExternalOAuth": update_attribute("externalOAuth", "external_oauth"), }
class TypesBackend(ServiceBackend): service_path = "types" model_class = TypesModel _schema_draft = schemas.TypeDraftSchema _schema_update = schemas.TypeUpdateSchema _schema_query_response = schemas.TypePagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] # Fixme: use decorator for this _actions = { "addFieldDefinition": update_attribute_add_item("fieldDefinitions", "field_definition", schemas.FieldDefinitionSchema), "setDescription": update_attribute("description", "description") }
class ProductTypesBackend(ServiceBackend): service_path = "product-types" model_class = ProductTypesModel _schema_draft = ProductTypeDraftSchema _schema_update = ProductTypeUpdateSchema _schema_query_response = ProductTypePagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] _actions = { "changeDescription": update_attribute("description", "description"), "changeLabel": change_label_action(), "changeLocalizedEnumValueLabel": change_localized_enum_value_label(), "addAttributeDefinition": add_attribute_definition_action(), }
class StoresBackend(ServiceBackend): service_path = "stores" model_class = StoresModel _schema_draft = StoreDraftSchema _schema_query_response = StorePagedQueryResponseSchema _schema_update = StoreUpdateSchema _verify_version = False def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ] _actions = { "setName": update_attribute("name", "name"), "setLanguages": set_languages(), "setDistributionChannels": set_distribution_channels, }
class CartDiscountsBackend(ServiceBackend): service_path = "cart-discounts" model_class = CartDiscountsModel _schema_draft = schemas.CartDiscountDraftSchema _schema_update = schemas.CartDiscountUpdateSchema _schema_query_response = schemas.CartDiscountPagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] _actions = { "setKey": update_attribute("key", "key"), "changeSortOrder": update_attribute("sortOrder", "sort_order"), "changeTarget": update_enum_attribute("target", "target"), "changeIsActive": update_attribute("isActive", "is_active"), "setName": update_attribute("name", "name"), "setDescription": update_attribute("description", "description"), "setCartPredicate": update_attribute("cartPredicate", "cart_predicate"), }
class DiscountCodesBackend(ServiceBackend): service_path = "discount-codes" model_class = DiscountCodesModel _schema_draft = DiscountCodeDraftSchema _schema_update = DiscountCodeUpdateSchema _schema_query_response = DiscountCodePagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ] _actions = { "changeIsActive": update_attribute("isActive", "is_active"), "setName": update_attribute("name", "name"), "setDescription": update_attribute("description", "description"), "setCartPredicate": update_attribute("cartPredicate", "cart_predicate"), "setMaxApplications": update_attribute("maxApplications", "max_applications"), "setMaxApplicationsPerCustomer": update_attribute("maxApplicationsPerCustomer", "max_applications_per_customer"), }
class CustomerGroupBackend(abstract.ServiceBackend): service_path = "customer-groups" model_class = CustomerGroupModel _schema_draft = CustomerGroupDraftSchema _schema_update = CustomerGroupUpdateSchema _schema_query_response = CustomerGroupPagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ] _actions = { "changeName": update_attribute("name", "name"), "setKey": update_attribute("key", "key"), }
class ProductTypesBackend(ServiceBackend): service_path = "product-types" model_class = ProductTypesModel _schema_draft = schemas.ProductTypeDraftSchema _schema_update = schemas.ProductTypeUpdateSchema _schema_query_response = schemas.ProductTypePagedQueryResponseSchema def urls(self): return [ ("^$", "GET", self.query), ("^$", "POST", self.create), ("^key=(?P<key>[^/]+)$", "GET", self.get_by_key), ("^(?P<id>[^/]+)$", "GET", self.get_by_id), ("^key=(?P<key>[^/]+)$", "POST", self.update_by_key), ("^(?P<id>[^/]+)$", "POST", self.update_by_id), ("^(?P<id>[^/]+)$", "DELETE", self.delete_by_id), ("^key=(?P<key>[^/]+)$", "DELETE", self.delete_by_key), ] _actions = { "changeDescription": update_attribute("description", "description"), }