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(),
    }
Ejemplo n.º 2
0
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"),
    }
Ejemplo n.º 3
0
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"),
    }
Ejemplo n.º 4
0
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(),
    }
Ejemplo n.º 5
0
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(),
    }
Ejemplo n.º 6
0
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
        ),
    }
Ejemplo n.º 7
0
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"),
    }
Ejemplo n.º 8
0
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(),
    }
Ejemplo n.º 10
0
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"),
    }
Ejemplo n.º 12
0
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"),
    }
Ejemplo n.º 13
0
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"),
    }