def updateProductType(id):
    # parse json
    requestJson = request.get_json(force=True)
    # validate params
    sku = requestJson.get("sku")
    inventory = requestJson.get("inventory")
    price = requestJson.get("price")

    productType = models.ProductType.query.get(id)
    # update
    if productType:
        try:
            if productType and sku:
                # change sku
                productType.sku = sku

            if productType and inventory:
                # increase inventory by given amount
                productType.inventory = int(inventory)

            if productType and price:
                # set new price
                productType.price = helpers.parsePrice(price)

            db.session.commit()
        except exc.SQLAlchemyError as err:
            return jsonify(error="Failed to update ProductType"), 400

            # publish update
        helpers.publishUpdate("UPDATE_PRODUCT_TYPE", dict(id=productType.id, inventory=productType.inventory))

        # return result of any updates
        return jsonify(formatProductTypeForResponse(productType)), 200
    else:
        return jsonify(error="Failed to find given ProductType"), 400
示例#2
0
    def verifyAndUpdateInventory(self, requestedQuantity):
        #inventory check
        if self.inventory < requestedQuantity:
            return None
        #update inventory
        self.inventory -= requestedQuantity

        #publish the update
        helpers.publishUpdate("UPDATE_INVENTORY", dict(id=self.id, inventory=self.inventory))

        return True
def createProductType():
    # parse json
    requestJson = request.get_json(force=True)

    # validate params
    sku = requestJson.get("sku")
    inventory = requestJson.get("inventory")
    price = requestJson.get("price")

    if (not sku) or (not price):
        return jsonify(error="One or more required data is not set"), 400
    if not inventory:
        inventory = 0
        # convert dollar formatted price to number of cents
    price = helpers.parsePrice(price)

    productType = models.ProductType(sku, inventory, price)

    db.session.add(productType)

    try:
        db.session.commit()
        # check for errors, uniquness constratint
    except exc.IntegrityError as err:
        return jsonify(error="Duplicate ProductType name not allowed"), 400
    except exc.SQLAlchemyError as err:
        return jsonify(error="Failed to create ProductType"), 400

        # publish update
    helpers.publishUpdate(
        "CREATE_PRODUCT_TYPE",
        dict(
            id=productType.id,
            inventory=productType.inventory,
            price=helpers.convertIntToFormattedPrice(productType.price),
            sku=productType.sku,
        ),
    )

    # return newly created productType
    return jsonify(formatProductTypeForResponse(productType)), 201
def deleteProductType(id):
    productType = models.ProductType.query.get(id)

    if productType:
        # remove assicated line items
        products = (
            db.session.query(models.Product).join(models.ProductType).filter(models.ProductType.id == productType.id)
        )
        for product in products:
            db.session.delete(product)

            # delete product type
        db.session.delete(productType)
        try:
            db.session.commit()
            # publish delete
            helpers.publishUpdate("DELETE_PRODUCT_TYPE", dict(id=productType.id))

            return jsonify(id=id), 200
        except exc.SQLAlchemyError as err:
            print err
            pass

    return jsonify(error="Failed to delete ProductType"), 400